CentOS 7 中安装 Oracle11g R2
准备
修改用户的
SHELL
限制:vim /etc/security/limits.conf
添加如下内容:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
- 确定 hostname 已经配置到
/etc/hosts
文件中了,即 hostname 与本地的 ip 对应上 修改
/etc/pam.d/login
文件vim /etc/pam.d/login
添加如下内容:
session required /lib/security/pam_limits.so session required pam_limits.so
修改
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
修改
/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
创建用户和组
# 创建用户组 groupadd oinstall groupadd dba # 创建用户并分配用户组 # 我安装时存在 oracle 用户不在 oinstall 的问题,最好在 /etc/group 中再设置一遍 useradd -g oinstall -g dba -m oracle passwd oracle
创建 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
配置 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
安装必要的包
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
修改 oracle 的配置文件(只是修改应答配置文件)
在解压的database目录中有一个response目录,其中有三个文件:
db_install.rsp
安装应答配置文件,修改此文件!dbca.rsp
创建数据库应答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
安装完之后的操作
- 运行提示中的两个 sh 文件
开启监听
lsnrctl status # 查看状态 lsnrctl start # 启动监听
额外开启 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 ] # 查看监听及数据库状态,启用或停止
安装失败的问题总结
错误:
Email Address Not Specified
- 在
Oracle 11g R2
中必须指定 metalink 账号! - 也可以在
response file
中设置DECLINE_SECURITY_UPDATES=true
,而不是默认的false。
- 在
错误:
[INS-32038] The operating system group specified for central inventory (oraInventory) ownership is invalid.
- 确认当前安装的用户在
UNIX_GROUP_NAME
所设置的用户组中
vim /etc/group
- 确认当前安装的用户在
错误:
[INS-13013] Target environment do not meet some mandatory requirements.
- 安装命令中加入选项
-ignorePrereq
- 安装命令中加入选项
运行失败问题总结
- 错误:
ora-12505:TNS:listener does not currently know of SID given in connect descriptor
可能是监听没有启动,也可能是 Oracle 实例没有启动