记录Linux(Red Hat) 系统安装Oracle数据库

环境

  • Red Hat 6.5 操作系统
  • Oracle11g 安装包

下载Oracle11g安装包

官网。本文安装的是Oracle 11gR2。

安装准备(root用户下)

检查软件依赖包是否安装
1
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel

上面哪个包显示XXX is not installed,就使用下面的命令安装必要的RPM包

1
yum install -y XXX

或者你如果嫌麻烦,可以直接执行如下命令:

1
yum install -y binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel
创建用户组及用户,设置oracle密码
1
2
3
groupadd oinstall && groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
修改hosts文件
1
vi /etc/hosts

在 127.0.0.1 行后面 添加你的主机名称(例如我的主机名为oracle)
在 ::1 行后面 添加你的主机名称(例如我的主机名为oracle)

设置内核参数
1
vim /etc/sysctl.conf

在打开的文件底部添加下面内容

1
2
3
4
5
6
7
8
9
10
11
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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 = 1048586
1
sysctl -p
设置PAM资源限制
1
vim /etc/security/limits.conf

在打开的文件底部添加下面内容

1
2
3
4
5
oracle soft nproc 10240
oracle hard nproc 65535
oracle soft nofile 10240
oracle hard nofile 65536
oracle soft stack 10240
创建oracle11g安装目录
1
2
3
4
5
6
mkdir -p /home/oracle/oracle_11g/app/oracle/product/11.2.0/dbhome_1/
chown -R oracle:oinstall /home/oracle/oracle_11g/app/
chmod -R 775 /home/oracle/oracle_11g/app/
mkdir -p /home/oracle/oracle_11g/oraInventory/
chown -R oracle:oinstall /home/oracle/oracle_11g/oraInventory/
chmod -R 775 /home/oracle/oracle_11g/oraInventory/
修改用户环境变量
1
vim /home/oracle/.bash_profile

在打开的文件中添加下面内容

1
2
3
4
5
6
7
umask 022
export ORACLE_BASE=/home/oracle/oracle_11g/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 ORACLE_HOME_LISTENER
export ORACLE_UNQNAME=$ORACLE_SID

ps:ORACLE_SID=orcl 这里是用户自己定义的数据库名称,后面配置需要用到,设置后就不能再改。

1
source /home/oracle/.bash_profile
修改用户验证选项
1
vim /etc/pam.d/login

在打开的文件中添加下面内容(root用户)

1
2
session required /lib64/security/pam_limits.so
session required pam_limits.so
解压oracle软件
1
2
3
4
cd /home/oracle/oracle_11g/app
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
chown -R oracle:oinstall /home/oracle/oracle_11g/app/database

配置安装(oracle用户下)

切换用户
1
su oracle

#####备份应答文件

1
2
3
4
5
cd /home/oracle/oracle_11g/app/database/response
mkdir rsp_bak
ls
dbca.rsp db_install.rsp netca.rsp rsp_bak
cp *.rsp ./rsp_bak/
删除应答文件中的以#开头的注释行和空行
1
sed -i 's/^#.*$//g' *.rsp && sed -i '/^$/d' *.rsp
配置db_install.rsp

将以下配置添加到db_install.rsp文件中(下面的注释是对其上面参数的解释,拷贝时候一定要去掉里面的汉字注释,否则可能无法正常安装)

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
#默认即可
oracle.install.option=INSTALL_DB_SWONLY
#安装类型
ORACLE_HOSTNAME=oracle
#主机名称(hostname查询,这里要注意,主机名要在 /etc/hosts 文件中配置好ip对应关系,否则安装会报错)
UNIX_GROUP_NAME=oinstall
#安装组
INVENTORY_LOCATION=/home/oracle/oracle_11g/oraInventory
#INVENTORY目录位置,需填写成自己创建的目录位置
SELECTED_LANGUAGES=en,zh_CN
#选择支持语言
ORACLE_HOME=/home/oracle/oracle_11g/app/oracle/product/11.2.0/dbhome_1
#数据库目录地址
ORACLE_BASE=/home/oracle/oracle_11g/app
#BASE目录地址
oracle.install.db.InstallEdition=EE
#指定oracle版本
oracle.install.db.isCustomInstall=false
#是否自定义安装,false表示使用默认组件
oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0
oracle.install.db.DBA_GROUP=dba
#dba用户组
oracle.install.db.OPER_GROUP=oinstall
#oper用户组
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
#数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl
#globalDBName(这里要和第8步配置的sid一致)
oracle.install.db.config.starterdb.SID=orcl
#SID(这里要和第8步配置的sid一致)
oracle.install.db.config.starterdb.characterSet=AL32UTF8
#使用的编码格式
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=1024
#自动管理的内存大小(M)
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=123456
#设定所有数据库用户使用同一个密码
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=
oracle.install.db.config.starterdb.dbcontrol.SMTPServer=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=
DECLINE_SECURITY_UPDATES=true
#设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对)
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
执行安装
1
2
cd /home/oracle/oracle_11g/app/database
./runInstaller -silent -force -noconfig -responseFile /home/oracle/oracle_11g/app/database/response/db_install.rsp

silent:对于无提示模式下的操作, 输入内容可以是一个响应文件, 也可以是命令行变量值对的列表。
force:允许在非空目录中进行无提示模式的安装。
noconfig:不执行配置工具
responseFile:指定要使用的响应文件和路径

此处遇到2个错误
1.could not initialize class sun.awt. x11.xtoolkit
解决:

1
2
3
4
su root
export DISPLAY=:0.0
xhost +
access control disabled, clients can connect from any host

如果xhost命令无法执行,安装对应软件即可

2.[FATAL] [INS-13013] 目标环境不满足一些必需要求
对应日志文件仔细检查不满足项,发现是pdksh包不对
原因:Red Hat 中redhat-release已经被redhat-release-server包所取代,所以安装软件会无法识别Linux的版本。这时OUI会默认的使用Linux4的前置条件来检查现有的操作系统情况。
解决:

1
vim /home/oracle/oracle_11g/app/database/stage/cvu/cv/admin/cvu_config

CV_ASSUME_DISTID=OEL4修改为CV_ASSUME_DISTID=OEL6

控制台直到出现以下提示则表示安装完成:

配置权限和安装库()root用户下

运行orainstRoot.sh
1
2
su - root 
/home/oracle/oracle_11g/oraInventory/orainstRoot.sh

脚本执行后主要进行的操作:
更改权限/home/oracle/oracle_11g/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/home/oracle/oracle_11g/oraInventory 到 oinstall.

运行root.sh
1
/home/oracle/oracle_11g/app/oracle/product/11.2.0/dbhome_1/root.sh

Check /home/oracle/oracle_11g/app/oracle/product/11.2.0/dbhome_1/install/root_m22p135_2017-08-07_16-39-28.log for the output of root script

添加oracle环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vim /home/oracle/.bash_profile

export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data

source /home/oracle/.bash_profile
静默配置监听
1
/home/oracle/oracle_11g/app/oracle/product/11.2.0/dbhome_1/bin/netca -silent -responseFile /home/oracle/oracle_11g/app/database/response/netca.rsp

****DISPLAY environment variable not set!
Oracle Net Configuration Assistant is a GUI tool
which requires that DISPLAY specify a location
where GUI tools can display.
Set and export DISPLAY, then re-run.

解决方法:切换root下

     export DISPLAY=127.0.0.1:1.0 
静默安装数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
echo> /home/oracle/oracle_11g/app/database/response/dbca.rsp
vim /home/oracle/oracle_11g/app/database/response/dbca.rsp

[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "orcl"
SID = "orcl"
TEMPLATENAME = "General_Purpose.dbc"
CHARACTERSET="AL32UTF8"
NATIONALCHARACTERSET="UTF8"
SYSPASSWORD="123456"
SYSTEMPASSWORD="123456"
1
/home/oracle/oracle_11g/app/oracle/product/11.2.0/dbhome_1//bin/dbca -silent -responseFile /home/oracle/oracle_11g/app/database/response/dbca.rsp

控制台输出:

测试数据库
1
sqlplus / as sysdba

连接成功后,输入sql语句测试

1
SQL>show parameter;
监听检查
1
lsnrctl status

启动监听:lsnrctl start
查看监听:lsnrctl status
停止监听:lsnrctl stop

实例应该被动态注册到监听程序了. 到此oracle安装建库完毕!,在oracle用户下使用sqlplus登录数据库查看数据库是否安装成功!

参考资料

1.Centos下静默(命令行)方式安装Oracle 11g
2.在Centos安装oracle.x64_11gR2
3.OracleDatabase安装在Linux上报错pdksh的问题