CentOS 7 安装 Oracle 11.2.0.4
(参考网上各大神的记录及自己数次安装经历总结的文章,算是半原创,转创请留本人记录。谢谢!)
作者:flexitime
一、安装环境
CentOS Linux release 7.X
Oracle Database 11g Release 2 (11.2.0.4)
请确保 磁盘空间 > 20G,内存 > 4G,其中 Oracle安装文件解压后会有 5.2G 左右。
建议 CentOS 7安装时桌面套件,最小化安装,安装后请补安装桌面套件:
Centos7安装时最后修改一下交换区大小,与内存相当。
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
安装后,可配置默认为字符界面起动。
systemctl get-default
systemctl set-default multi-user.target
修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
二、安装安准备
2.1 修改主机名
修改/etc/sysconfig/network配置文件中的HOSTNAME变量
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= oracledb
2.2 添加主机名与IP对应记录
[root@xqzt ~]# vi /etc/hosts
172.25.18.61 oracledb61
2.3 关闭Selinux
[root@oracledb ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
[root@oracledb ~]# setenforce 0
2.4 firewall开启1521端口
firewall-cmd --permanent --zone=public --add-port=1521/tcp
firewall-cmd --permanent --zone=public --add-port=5901/tcp
firewall-cmd --permanent --zone=public --add-port=5902/tcp
firewall-cmd --reload
2.7 安装所需的软件包
wget -O /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
cd /tmp
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
安装软件包
yum -y install binutils
yum -y install compat-libcap1
yum install -y gcc gcc-c++ glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64
yum install -y libaio.i686 libaio.x86_64 libaio-devel.i686 libaio-devel.x86_64
yum install -y libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64
yum install -y libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64
yum install -y make
yum install -y sysstat
yum install -y unixODBC.i686 unixODBC.x86_64 unixODBC-devel.i686 unixODBC-devel.x86_64
yum install -y compat-libstdc++-33
yum install -y elfutils-libelf-devel
yum install -y ksh
root用户:创建Oracle安装组oinstall,数据库管理员组dba,及oracle用户
groupadd -g 200 oinstall
groupadd -g 201 dba
useradd -u 440 -g oinstall -G dba -d /home/oracle oracle
passwd oracle
2.9 更改kernel参数
[root@oracledb ~]# vi /etc/sysctl.conf
#末尾添加如下
net.ipv4.ip_local_port_range= 9000 65500
fs.file-max = 6815744
kernel.shmall = 10523004
kernel.shmmax = 6465333657
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_max=1048576
fs.aio-max-nr = 1048576
执行以下命令使更改生效
[root@oracledb ~]# sysctl -p
2.10 修改系统资源限制
[root@oracledb ~]# vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
[root@oracledb ~]# 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
[root@oracledb ~]# vi /etc/pam.d/login
session required pam_limits.so
2.11 创建安装目录及设置权限
创建如下的目录
[oracle@oracledb /]$ tree /u01/
/u01/
└── oracle
├── app
└── oradata
root创建
[root@oracledb ~]# mkdir -p /u01/oracle
[root@oracledb ~]# chown -R oracle:oinstall /u01
切换用户到 oracle :
su - oracle
chmod 755 /u01/oracle
mkdir /u01/oracle/app
chmod 755 /u01/oracle/app/
mkdir /u01/oracle/oradata
chmod 755 /u01/oracle/oradata/
2.12 设置oracle环境变量[
oracle@localhost ~]$ vi ./.bash_profile
# 在文件末尾添加
umask 022
export ORACLE_BASE=/u01/oracle/app
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=mchisdb
export NLS_LANG ORA_NLS33
export ORACLE_HOME_LISTNER=$ORACLE_HOME
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
[oracle@oracledb ~]$ source .bash_profile #立即生效
三、安装database
3.1 安装VNC(如果可以登录到机器的图形界面,可以不用vnc)
yum install tigervnc-server
配置root的vnc账号
[root@oracledb ~]$ vncserver
配置oracle的vnc账号
su - oracle
[oracle@oracledb ~]$ vncserver
注意,在Centos7中vncserver的配置与6的不一样。配置文件分别放在家目录上。
至此,强烈建议重启用服务器,观察所有的配置 (env, vnc, 等时否都已配置正确)
3.2 将安装包上传(复制)到
/u01/database
中
运行安装程序,注意如果不用本地jre,可能那些安装对话框会搞死人。
/u01/database/database/runInstaller -jreLoc /etc/alternatives/jre_1.8.0
接着一路直next,
但要注意
1.Install Type那一页上面要选 Advanced Install
2.Language 那里要选 Simplified Chinese
3.Specify Database Identifiers 中要设好 sid
4.Specify Configurtion options 中 Character set要设置好 ZHS16GBK
5.在安装过程中会报错,大致如下:
Exception String: Error in invoking target 'agent nmhs' of makefile '/u01/oracle/app/oracle/product/11.2.0/dbhome/sysman/lib/ins_emagent.mk'.
这个是oracle新版的bug,如下解决:
解决方案: 保留安装过程,另外开启一个终端窗口,将ins_emagent.mk文件中的$(MK_EMAGENT_NMECTL)更改为$(MK_EMAGENT_NMECTL) -lnnz11,然后在安装过程中点击Retry即可。
用命令:
sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' /u01/oracle/app/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
3.4 最后提示要用root授权运行的脚本:
/u01/oracle/oraInventory/orainstRoot.sh
/u01/oracle/app/product/11.2.0/dbhome_1/root.sh
至此oracle 11.2.0.4 数据库安装完毕。
四、创建服务
创建服务文件:
vi /etc/init.d/oracledb
#----------------
#!/bin/bash
#chkconfig: 2345 98 01
#description: Oracle database dataguard server
#Starts the oracle database dataguard server
#
# processname: oracle
# Source function library.
. /etc/init.d/functions
ORACLE_SID=mchisdb; export ORACLE_SID
ORACLE_BASE=/u01/oracle/app; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export NLS_LANG ORA_NLS33
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_HOME_LISTNER=$ORACLE_HOME
PATH=$HOME/bin:$ORACLE_HOME/bin:/app/bin:/bin:/usr/bin:usr/ccs/bin:/usr/ucb:/etc:$PATH
export PATH
test -x $ORACLE_HOME/bin/oracle || exit 0
RETVAL=0
start() {
# Check if oracle is already running
if [ ! -f /var/lock/subsys/oracle ]; then
prog="listener"
echo -n $"Starting $prog: "
su - oracle -c "lsnrctl start" >> /var/log/oracle.log
RETVAL=$?
[ $RETVAL -eq 0 ] && success || failed
echo
prog="oracle database"
echo -n $"Starting $prog: "
su - oracle -c "sqlplus /nolog" << EOF >> /var/log/oracle.log
connect / as sysdba
startup
! sleep 60
select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v\$database;
select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v\$database;
select thread#,min(sequence#) no_applied_min,max(sequence#) no_applied_max,count(1) no_applied_all from v\$archived_log where applied='NO' and STANDBY_DEST='NO' and deleted<>'YES' group by thread# order by thread#;
exit
EOF
RETVAL=$?
[ $RETVAL -eq 0 ] && success || failed
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/oracle || RETVAL=1
fi
return $RETVAL
}
stop() {
prog="listener"
echo -n $"Stopping $prog: "
su - oracle -c "lsnrctl stop" >> /var/log/oracle.log
RETVAL=$?
[ $RETVAL -eq 0 ] && success || failed
echo
prog="oracle database"
echo -n $"Stopping $prog: "
su - oracle -c "sqlplus /nolog" << EOF >> /var/log/oracle.log
connect / as sysdba
shutdown immediate
exit
EOF
RETVAL=$?
[ $RETVAL -eq 0 ] && success || failed
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/oracle
return $RETVAL
}
restart() {
stop
start
}
reload() {
restart
}
status_oracle() {
su - oracle -c "lsnrctl status"
su - oracle -c "sqlplus /nolog" << EOF
connect / as sysdba
select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v\$database;
exit
EOF
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload|restart)
restart
;;
status)
status_oracle
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $?
exit $RETVAL
#-----------------------------
chmod a+x oracledb
chkconfig --add oracledb
chkconfig --list
至此,安装完成!