准备

  1. 修改用户的 SHELL 限制:

    vim /etc/security/limits.conf

    添加如下内容:

    oracle   soft    nproc    2047oracle   hard    nproc    16384oracle   soft    nofile     1024oracle   hard    nofile    65536
  2. 修改 /etc/pam.d/login 文件

    vim /etc/pam.d/login

    添加如下内容:

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

    vim /etc/sysctl.conf

    添加如下内容:

    fs.file-max = 6815744fs.aio-max-nr = 1048576kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 4194304net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576
    source /etc/sysctl.conf# 使修改立即生效,我当时键入如下命令时报没有找到命令,所以重启了centos
  4. 修改 /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    fifi
  5. 创建用户和组

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

    mkdir /home/oracle/appmkdir /home/oracle/app/oraclemkdir /home/oracle/app/oradatamkdir /home/oracle/app/oracle/productchown -R oracle:oinstall /home/oracle/app
  7. 配置 oracle 用户的环境变量,必须切换到新创建的 oracle 用户下

    su oraclevim .bash_profile

    添加如下内容:

    umask 022export ORACLE_BASE=/home/oracle/appexport ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1export ORACLE_SID=orclexport PATH=$PATH:$HOME/bin:$ORACLE_HOME/binexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
  8. 安装必要的包

    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* -yyum install -y glibc-kernheaders
  9. 修改 oracle 的配置文件(只是修改应答配置文件)

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

    1. db_install.rsp 安装应答配置文件,修改此文件!
    2. dbca.rsp 创建数据库应答
    3. netca.rsp 建立监听、本地服务名等网络设置应答
    # 此文件可以参考 .note/oracle/db_install.rspvim database/response/db_install.rsp

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

    UNIX_GROUP_NAME=oinstallINVENTORY_LOCATION=/opt/oracle/oraInventorySELECTED_LANGUAGES=en,zh_CNORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1ORACLE_BASE=/home/oracle/apporacle.install.db.InstallEdition=EEoracle.install.db.DBA_GROUP=dbaoracle.install.db.OPER_GROUP=oinstalloracle.install.db.config.starterdb.SID=orclDECLINE_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    PassedChecking swap space: must be greater than 150 MB.   Actual 4095 MB    PassedPreparing 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.logThe 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.shTo execute the configuration scripts:    1. Open a terminal window    2. Log in as "root"    3. Run the scripts    4. Return tothis 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*PlusSP2-0667: Message file sp1<lang>.msb not foundSP2-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 实例没有启动