CentOS 7 中安装 Oracle11g R2

准备

  1. 修改用户的 SHELL 限制:

    vim /etc/security/limits.conf

    添加如下内容:

    oracle   soft    nproc    2047
    oracle   hard    nproc    16384
    oracle   soft    nofile     1024
    
    oracle   hard    nofile    65536
  2. 确定 hostname 已经配置到 /etc/hosts 文件中了,即 hostname 与本地的 ip 对应上
  3. 修改 /etc/pam.d/login 文件

    vim /etc/pam.d/login

    添加如下内容:

    session   required    /lib/security/pam_limits.so
    
    session   required    pam_limits.so
  4. 修改 Linux 内核配置

    vim /etc/sysctl.conf

    添加如下内容:

    fs.file-max = 6815744
    fs.aio-max-nr = 1048576
    kernel.shmall = 2097152
    kernel.shmmax = 2147483648
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 4194304
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576
    sysctl -p /etc/sysctl.conf
    # 使修改立即生效,我当时键入如下命令时报没有找到命令,所以重启了centos
  5. 修改 /etc/profile 文件

    vim /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
  6. 创建用户和组

    # 创建用户组
    groupadd oinstall
    groupadd dba
    
    # 创建用户并分配用户组
    # 我安装时存在 oracle 用户不在 oinstall 的问题,最好在 /etc/group 中再设置一遍
    useradd -g oinstall -g dba -m oracle
    passwd  oracle
  7. 创建 Oracle 目录并设置所有权为 oracle 用户及其所在组

    mkdir /home/oracle/app
    mkdir /home/oracle/app/oracle
    mkdir /home/oracle/app/oradata
    mkdir /home/oracle/app/oracle/product
    
    chown -R oracle:oinstall /home/oracle/app
  8. 配置 oracle 用户的环境变量,必须切换到新创建的 oracle 用户下

    su oracle
    vim .bash_profile

    添加如下内容:

    umask 022
    export ORACLE_BASE=/home/oracle/app
    export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
    export ORACLE_SID=orcl
    export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
  9. 安装必要的包

    yum install -y compat-libstdc*
    yum install -y elfutils-libelf*
    yum install -y gcc*
    yum install -y glibc*
    yum install -y ksh*
    yum install -y libaio*
    yum install -y libgcc*
    yum install -y libstdc*
    yum install -y make*
    yum install -y sysstat*
    yum install libXp* -y
    yum install -y glibc-kernheaders
  10. 修改 oracle 的配置文件(只是修改应答配置文件)

    在解压的database目录中有一个response目录,其中有三个文件:

    1. db_install.rsp 安装应答配置文件,修改此文件!
    2. dbca.rsp 创建数据库应答
    3. netca.rsp 建立监听、本地服务名等网络设置应答
    # 此文件可以参考 https://gist.github.com/piumnl/13f6ad69e31050262e86b862f69da0e4
    vim database/response/db_install.rsp

    实际上需要修改的有如下内容:

    UNIX_GROUP_NAME=oinstall
    INVENTORY_LOCATION=/opt/oracle/oraInventory
    SELECTED_LANGUAGES=en,zh_CN
    ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
    ORACLE_BASE=/home/oracle/app
    oracle.install.db.InstallEdition=EE
    oracle.install.db.DBA_GROUP=dba
    oracle.install.db.OPER_GROUP=oinstall
    oracle.install.db.config.starterdb.SID=orcl
    DECLINE_SECURITY_UPDATES=true

安装

用 oracle 用户来运行此命令。 请注意 runInstaller 文件存在于 database 目录下,而不是在 database/install 下。

./runInstaller -responseFile /home/oracle/database/response/db_install.rsp -silent -ignorePrereq

英文环境下的日志:

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 122202 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4095 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-02-06_10-38-53AM. Please wait ...[oracle@piumnl database]$ You can find the log of this install session at:
/opt/oracle/oraInventory/logs/installActions2017-02-06_10-38-53AM.log
The following configuration scripts need to be executed as the "root" user.
\#!/bin/sh
\#Root scripts to run

/opt/oracle/oraInventory/orainstRoot.sh
/home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
To execute the configuration scripts:
    1. Open a terminal window
    2. Log in as "root"
    3. Run the scripts
    4. Return to
this window and hit "Enter" key to continue

安装完之后的操作

  1. 运行提示中的两个 sh 文件
  2. 开启监听

    lsnrctl status # 查看状态
    lsnrctl start # 启动监听
  3. 额外开启 em,即 1158 端口的em路径

    emca -repos create
    # 提示 `严重: Dbcontrol 资料档案库已存在。  改正错误, 然后以独立模式重新运行 EM Configuration Assistant。`
    
    # 删除 DBcontrol,此时刚安装完数据库,DBControl应该是可以删除的
    emca -repos drop
    
    # 重新配置并创建
    emca -config dbcontrol db -repos create

测试

通过 su 切换不会改变环境变量,即从 root 切换到 oracle 中不会改变环境变量为 oracle 的,实际还是 root 的。
su - [username] 似乎可以,但未曾尝试过。通过 root 切换到 oracle 并在 sqlplus 命令所在目录下执行 sqlplus
所报的错误:
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

使用 oracle 用户登录,运行 sqlplus

sqlplus
$ Enter user-name: SYS as SYSDBA
$ Enter password: (直接回车即可)

# 修改SYS用户的密码,如此才可以通过 SQL Developer 访问,空密码会报 ora 01031 的错误
alter user SYS identified by 123456;  # 注意在生产环境中不能使用这种简单的密码。
# 可能会出现如下问题,这是因为没有开启监听或没有开启 oracle 实例:
# *
# ERROR at line 1:
# ORA-01034: ORACLE not available
# Process ID: 0
# Session ID: 0 Serial number: 0
# 开启监听的方式
# 退出 sqlplus,并执行 lsnrctl start 命令
# 开启 oracle 实例
# 进入 sqlplus,执行 startup ,如果被告知已启动,可以输入 shutdown immediate; ,等结束后再执行 startup

查看监听及数据库状态,启用或停止

lsnrctl [status | start | stop ]    # 查看监听及数据库状态,启用或停止

安装失败的问题总结

  1. 错误:Email Address Not Specified

    • Oracle 11g R2 中必须指定 metalink 账号!
    • 也可以在 response file 中设置 DECLINE_SECURITY_UPDATES=true ,而不是默认的false。
  2. 错误:[INS-32038] The operating system group specified for central inventory (oraInventory) ownership is invalid.

    • 确认当前安装的用户在 UNIX_GROUP_NAME 所设置的用户组中
    vim /etc/group
  3. 错误:[INS-13013] Target environment do not meet some mandatory requirements.

    • 安装命令中加入选项 -ignorePrereq

运行失败问题总结

  1. 错误: ora-12505:TNS:listener does not currently know of SID given in connect descriptor

    可能是监听没有启动,也可能是 Oracle 实例没有启动

相关推荐