• CentOS 7 上安装 Oracle 11g 数据库


    本博客将向您介绍在 CentOS 7 操作系统上安装 Oracle 11g 数据库的步骤,以及在 Oracle 数据库中创建表空间和用户的脚本。

    1. 安装必要的软件和依赖

    首先,我们需要安装一些必要的软件和依赖项。在终端中执行以下命令:

    yum -y install xorg-x11-xauth
    yum -y install libXtst
    yum -y install unzip
    
    • 1
    • 2
    • 3

    2. 关闭防火墙和 SELinux

    为了确保安装的顺利进行,我们需要暂时关闭防火墙和 SELinux:

    systemctl stop firewalld
    systemctl disable firewalld
    
    vi /etc/selinux/config
    # 修改 SELINUX=disabled,用于指示系统在启动时禁用 SELinux。
    
    # 立即将 SELinux 切换到“宽松模式”,允许警告但不会阻止操作
    setenforce 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3. 检查并创建 Swap 分区

    Oracle 安装过程需要一些 Swap 空间。您可以使用以下命令检查是否有足够的 Swap:

    free -m
    
    • 1

    如果 Swap 空间不足,可以通过分配新的 Swap 分区来解决。

    4. 修改主机名和 hosts 文件

    /etc/hosts 文件中添加主机名和 IP 地址的映射:

    vi /etc/hosts
    # 添加类似这样的行:192.168.20.235  oracle
    
    • 1
    • 2

    5. 安装 Oracle 依赖包

    安装 Oracle 所需的依赖包:

    yum install -y gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel
    
    • 1

    注意:CENTOS8会缺少compat-libstdc+±33-3.2.3,参考这篇博客解决
    解决在CENTOS8安装Oracle数据库时缺失compat-libstdc+±33-3.2.3的问题

    确认安装无误

    rpm -qa gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-develnumactl-devel sysstat unixODBC unixODBC-devel pcre-devel
    
    • 1

    6. 创建用户和组

    为 Oracle 创建所需的用户和组:

    groupadd oinstall
    groupadd dba
    useradd -g oinstall -G dba oracle
    passwd oracle
    
    • 1
    • 2
    • 3
    • 4

    7. 修改内核参数

    编辑/etc/sysctl.conf 增加以下内容,其中kernel.shmmax = 1073741824为本机物理内存(2G)的一半,单位为byte

    vi /etc/sysctl.conf 
    
    # 增加以下内容
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmall = 1048576
    kernel.shmmax = 4294967295
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576
    
    # 修改完之后立即执行修改:
    sysctl -p
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    8. 修改用户限制

    编辑 /etc/security/limits.conf 文件并添加以下内容:

    vi /etc/security/limits.conf
    # 添加用户限制设置
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    oracle soft stack 10240
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    9. 修改 PAM 配置

    编辑 /etc/pam.d/login 文件并添加以下内容:

    vi /etc/pam.d/login
    # 添加 PAM 配置
    session required /lib64/security/pam_limits.so
    session required pam_limits.so
    
    • 1
    • 2
    • 3
    • 4

    10. 修改/etc/profile文件

    vi /etc/profile
    
    # 添加以下内容:
    if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    fi
    
    # 执行生效
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    11. 创建必要的目录

    创建 Oracle 所需的目录并设置权限:

    mkdir -p /u01/oracle/product/11.2.0
    mkdir /u01/oracle/oradata
    mkdir /u01/oraInventory
    mkdir /u01/oracle/fast_recovery_area
    chown -R oracle:oinstall /u01/oracle
    chmod -R 775 /u01/oracle
    chown -R oracle:oinstall /u01/oraInventory
    chmod -R 775 /u01/oraInventory
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    12. 上传 Oracle 软件包

    将 Oracle 软件包 1of2 2of2 上传至目录/opt/oracle下:

    mkdir /opt/oracle
    ## 上传文件到/opt/oracle 后执行以下命令
    chown -R oracle:oinstall /opt/oracle
    chmod 755 -R /opt/oracle
    su - oracle
    cd /opt/oracle
    unzip linux.x64_11gR2_database_1of2.zip && unzip linux.x64_11gR2_database_2of2.zip
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    13. 修改oracle用户环境变量

    编辑 ~/.bash_profile 文件并添加 Oracle 相关的环境变量:

    vi ~/.bash_profile
    # 添加 Oracle 环境变量
    ORACLE_BASE=/u01/oracle
    ORACLE_HOME=$ORACLE_BASE/product/11.2.0
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export  LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
    ORACLE_SID=orcl
    PATH=$PATH:$ORACLE_HOME/bin
    export  ORACLE_BASE  ORACLE_HOME  ORACLE_SID  PATH
    
    # 执行以下命令加载环境变量
    source ~/.bash_profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    14. 配置静默安装文件

    编辑 /opt/oracle/database/response/db_install.rsp 文件,并根据您的需求设置选项。

    vi /opt/oracle/database/response/db_install.rsp
    
    # 需要设置的选项如下:
    oracle.install.option=INSTALL_DB_SWONLY
    ORACLE_HOSTNAME=oracle
    UNIX_GROUP_NAME=oinstall
    INVENTORY_LOCATION=/u01/oraInventory
    SELECTED_LANGUAGES=en,zh_CN
    ORACLE_HOME=/u01/oracle/product/11.2.0
    ORACLE_BASE=/u01/oracle
    oracle.install.db.InstallEdition=EE
    oracle.install.db.DBA_GROUP=dba
    oracle.install.db.OPER_GROUP=dba
    DECLINE_SECURITY_UPDATES=true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    15. 安装 Oracle 数据库软件

    执行安装命令,并根据静默安装文件进行安装:

    cd /opt/oracle/database
    ./runInstaller -silent -responseFile /opt/oracle/database/response/db_install.rsp -ignorePrereq
    
    • 1
    • 2

    centos8需要安装如下

    yum install libnsl -y
    
    • 1

    否则会报错如下

    [oracle@GreenCloud response]$ cd /opt/oracle/database
    [oracle@GreenCloud database]$ ./runInstaller -silent -responseFile /opt/oracle/database/response/db_install.rsp -ignorePrereq
    Starting Oracle Universal Installer...
    
    Checking Temp space: must be greater than 120 MB.   Actual 81336 MB    Passed
    Checking swap space: must be greater than 150 MB.   Actual 255 MB    Passed
    Preparing to launch Oracle Universal Installer from /tmp/OraInstall2023-11-12_01-47-38PM. Please wait ...[oracle@GreenCloud database]$ There was an error trying to initialize the HPI library.
    Please check your installation, HotSpot does not work correctly
    when installed in the JDK 1.2 Linux Production Release, or
    with any JDK 1.1.x release.
    Could not create the Java virtual machine.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    16. 完成安装步骤

    以 root 用户身份执行以下两个脚本:

    /u01/oraInventory/orainstRoot.sh
    /u01/oracle/product/11.2.0/root.sh
    
    • 1
    • 2

    17. 配置监听器

    使用静默方式安装监听器:

    netca /silent /responseFile /opt/oracle/database/response/netca.rsp
    
    • 1

    18. 创建 Oracle 数据库

    编辑 /opt/oracle/database/response/dbca.rsp 文件,并设置数据库相关选项。

    vi /opt/oracle/database/response/dbca.rsp
    
    # 修改如下内容
    GDBNAME= "orcl"
    SID ="orcl"
    SYSPASSWORD= "Oracle_123"
    SYSTEMPASSWORD= "Oracle_123"
    SYSMANPASSWORD= "Oracle_123"
    DBSNMPPASSWORD= "Oracle_123"
    DATAFILEDESTINATION=/u01/oracle/oradata
    RECOVERYAREADESTINATION=/u01/oracle/fast_recovery_area
    CHARACTERSET= "AL32UTF8"
    # ----TOTALMEMORY ="1638" 为1638MB,物理内存2G*80%。
    TOTALMEMORY= "40960"
    
    # 执行如下命令安装
    dbca -silent -responseFile /opt/oracle/database/response/dbca.rsp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    19. 完成安装

    到此处,您的 Oracle 11g 数据库已经成功安装和配置。

    20. 创建表空间

    登录数据库

    sqlplus / as sysdba
    
    • 1

    首先,脚本创建了两个不同类型的表空间:

    20.1 JGCRM_ZH 表空间

    CREATE TABLESPACE JGCRM_ZH LOGGING DATAFILE '/u01/oracle/oradata/jgcrm_zh.dbf' SIZE 2048m AUTOEXTEND ON NEXT 512m MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
    
    • 1

    这段代码创建了名为 “JGCRM_ZH” 的表空间,其中包含以下设置:

    • Logging:指示数据库更改将记录在重做日志中。
    • Datafile:指定与表空间关联的数据文件的位置和名称。
    • Size:将表空间的初始大小设置为 2048 兆字节。
    • Autoextend:启用数据文件的自动扩展。
    • Next:指定在需要时扩展数据文件的大小。
    • Maxsize Unlimited:表示数据文件可以无限增长,没有特定的上限。
    • Extent Management Local:使用本地区段管理来管理表空间。

    20.2 临时表空间 JGCRM_ZH_TEMP

    CREATE TEMPORARY TABLESPACE JGCRM_ZH_TEMP TEMPFILE '/u01/oracle/oradata/jgcrm_zh_temp.dbf' SIZE 512m AUTOEXTEND ON NEXT 512m MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
    
    • 1

    这段代码创建了名为 “JGCRM_ZH_TEMP” 的临时表空间,与上述过程类似,包含以下设置:

    • Tempfile:指定临时数据文件的位置和名称。
    • Size:将临时表空间的初始大小设置为 512 兆字节。
    • Autoextend、Next、Maxsize:与 JGCRM_ZH 表空间中的设置类似。
    • Extent Management Local:再次使用本地区段管理来管理临时表空间。

    21. 创建用户

    接下来,脚本创建一个名为 “JGCRM_ZH” 的用户,并为该用户分配了一系列权限:

    create user JGCRM_ZH identified by JGCRM_ZH default tablespace jgcrm_zh temporary tablespace jgcrm_zh_temp profile DEFAULT;
    
    • 1

    这段代码创建了一个用户 “JGCRM_ZH”,具有以下属性:

    • Identified by JGCRM_ZH:将用户的密码设置为 "JGCRM_ZH。
    • Default Tablespace:将用户的默认表空间设置为 “jgcrm_zh”。
    • Temporary Tablespace:将用户的临时表空间设置为 “jgcrm_zh_temp”。
    • Profile:将默认配置文件 “DEFAULT” 分配给用户。

    22. 授予权限

    以下部分将各种权限授予了用户 “JGCRM_ZH”:

    -- 为 JGCRM_ZH 用户授予基本权限
    GRANT CONNECT TO JGCRM_ZH;
    GRANT RESOURCE TO JGCRM_ZH;
    GRANT CREATE PROCEDURE TO JGCRM_ZH;
    GRANT CREATE SEQUENCE TO JGCRM_ZH;
    GRANT CREATE SYNONYM TO JGCRM_ZH;
    GRANT CREATE TRIGGER TO JGCRM_ZH;
    GRANT CREATE TYPE TO JGCRM_ZH;
    GRANT CREATE VIEW TO JGCRM_ZH;
    
    -- 为 JGCRM_ZH 用户授予数据导入/导出的目录权限
    GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO JGCRM_ZH;
    
    -- 为 JGCRM_ZH 用户授予会话和基本对象创建权限
    GRANT CREATE SESSION TO JGCRM_ZH;
    GRANT CREATE TABLE TO JGCRM_ZH;
    GRANT CREATE PROCEDURE TO JGCRM_ZH;
    GRANT CREATE ANY PROCEDURE TO JGCRM_ZH; -- 合并 CREATE PROCEDURE 和 CREATE ANY PROCEDURE
    GRANT CREATE TRIGGER TO JGCRM_ZH;
    
    -- 为 JGCRM_ZH 用户授予分析和执行权限
    GRANT ANALYZE ANY TO JGCRM_ZH;
    GRANT EXECUTE ANY PROCEDURE TO JGCRM_ZH WITH ADMIN OPTION;
    
    -- 为 JGCRM_ZH 用户授予额外的权限
    GRANT SELECT ANY SEQUENCE TO JGCRM_ZH;
    GRANT DATAPUMP_IMP_FULL_DATABASE TO JGCRM_ZH;
    
    -- 为 JGCRM_ZH 用户授予无限表空间权限,并设置 ADMIN OPTION
    GRANT UNLIMITED TABLESPACE TO JGCRM_ZH WITH ADMIN OPTION;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    这些代码行将各种权限授予用户 “JGCRM_ZH”:

    • Grant CONNECT:允许用户连接到数据库。
    • Grant RESOURCE:为用户提供创建对象的基本资源权限。
    • Grant CREATE 权限:允许用户创建存储过程、序列、同义词、触发器、类型、视图,并授予了具备管理员选项的无限表空间权限。
  • 相关阅读:
    微电网两阶段鲁棒优化经济调度方法(完美复现)
    async/await详解
    CentOs7 彻底卸载清除docker
    [.NET 6] IHostedService 的呼叫等等我的爱——等待Web应用准备就绪
    (学习日记)2022.8.4
    FreeBASIC通过Delphi7 DLL调用MS SOAP使用VB6 Webservice
    MVCC在重复读和读已提交场景以及幻读的解决
    java中Long和Integer缓存-128~127的简介说明
    C++的可见性
    Java架构师分布式搜索架构
  • 原文地址:https://blog.csdn.net/qq_39997939/article/details/132590280