Oracle11g/12c/19g 静默安装方法
Oracle数据库 安装(适用于11g/12c/19c)
资料准备
安装包:
oracle11g :
wget http://tsdownload.net.e-tecsun.com/linux.x64_11gR2_database_1of2.zip
wget http://tsdownload.net.e-tecsun.com/linux.x64_11gR2_database_2of2.zip
oracle12c:
wget http://tsdownload.net.e-tecsun.com/oracle12c_linuxx64_12201_database.zip
oracle19c: (待补充)
配置文件:
oracle11g_rsp: wget http://tsdownload.net.e-tecsun.com/oracle11gconf.zip
oracle12c_rsp: wget http://tsdownload.net.e-tecsun.com/oracle12gconf.zip
1.系统调参(前期准备)
以下为安装数据库前需要对Linux系统的调参配置,11g12c19c均要做以下配置。
注意:安装19c需要注意系统是否存在该依赖:libaio-0.3.109-13.el7.x86_64.rpm 如果没有该依赖会导致在启动监听那一步会报错。
#关闭selinux
sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
getenforce
#设置系统参数
vi /etc/sysctl.conf
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
#使其生效
sysctl -p
#设置oracle用户打开数
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
#只对某个地址开启1521访问更安全
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="1521" accept'
firewall-cmd --reload
#安装依赖
yum -y install unzip binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC-devel
#如果是openEuler系统,你只需安装yum install -y gcc-c++ glibc libaio libX11 libXext libnsl.x86_64 注意要确保/tmp的空间充足
#创建用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
echo 'oracle:5v$DI#3jeESw1eziN' | sudo chpasswd
#创建oracle安装文件并授权
vi /etc/oraInst.loc
inventory_loc=/home/u01/oraInventory
inst_group=oinstall
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc
#创建目录
mkdir -p /home/u01/app /home/u01/oraInventory /home/u01/oradata /home/soft
chown -R oracle:oinstall /home/u01/app /home/u01/oraInventory /home/u01/oradata
chmod -R 775 /home/u01/app /home/u01/oraInventory /home/u01/oradata
mkdir -p /home/u01/app/product/19.3/dbhome_1 #该目录只有安装19c才需要
注意:
当服务器内存过大时需要适当修改以下参数的值
参考 https://www.cndba.cn/dave/article/4341
shmmax参考
内存为 12G 时,该值为 12102410241024-1 = 12884901887
内存为 16G 时,该值为 16102410241024-1 = 17179869183
内存为 32G 时,该值为 32102410241024-1 = 34359738367
内存为 64G 时,该值为 64102410241024-1 = 68719476735
内存为 128G 时,该值为 128102410241024-1 = 137438953471
内存为 192G 时,该值为 192102410241024-1 = 206158430207
内存为 256G 时,该值为 256102410241024-1 = 274877906943
内存为 512G 时,该值为 512102410241024-1 = 549755813887
shmall参考
内存为 12G 时,该值为 12102410241024-1 = 12884901887
内存为 16G 时,该值为 16102410241024-1 = 17179869183
内存为 32G 时,该值为 32102410241024-1 = 34359738367
内存为 64G 时,该值为 64102410241024-1 = 68719476735
内存为 128G 时,该值为 128102410241024-1 = 137438953471
内存为 192G 时,该值为 192102410241024-1 = 206158430207
内存为 256G 时,该值为 256102410241024-1 = 274877906943
内存为 512G 时,该值为 512102410241024-1 = 549755813887
同时还要修改rsp配置文件dbca.rsp里的totalMemory值接近且小于实际内存,单位为MB
2.服务安装
oracle11g/oracle12c
以下操作中,默认是11g的安装方式,安装12c时需要改的地方我会标注出来请仔细留意
#将oracle安装包放到/home/soft并解压(12c相同操作)
cd /home/soft
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
chmod 777 /home/soft/database
chown -R oracle:oinstall /home/soft/database
#设置环境变量(12c需要把以下内容的数字11改成12 其他内容不变)
su - oracle
(11g和12c)
vi .bash_profile
export ORACLE_BASE=/home/u01/app
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
#使其环境变量生效
source .bash_profile
#复制官方的预设文件到app目录
cp /home/soft/database/response/* /home/u01/app/
#复制第一步准备好的配置文件到app目录并覆盖和授权
cp /opt/oracle11g_rsp/* /home/u01/app/
chown oracle:oinstall /home/u01/app/*.rsp
chmod 755 /home/u01/app/*.rsp
#安装(在oracle用户下)
/home/soft/database/./runInstaller -silent -force -ignorePrereq -responseFile /home/u01/app/db_install.rsp
#这个过程不要动,等待提示成功才可以动
#执行脚本(在root用户下执行,如果是安装oracle12c,则把以下数字从11改为12即可)
/home/u01/app/product/11.2.0/db_1/root.sh
#启动监听(在oracle用户下)
netca /silent /responsefile /home/u01/app/netca.rsp
#建库(在oracle用户下)
dbca -silent -responseFile /home/u01/app/dbca.rsp # 11g执行这条
dbca -silent -createDatabase -responseFile /home/u01/app/dbca.rsp #12c执行这条
#这里等待进度100就可以了
oracle状态查看参数:
ps -ef | grep oracle#查看服务状态
echo $ORACLE_SID#查看实例
lsnrctl status#查看监听状态
oracle19c
#移动安装包到指定位置并解压授权
mv /opt/LINUX.X64_193000_db_home.zip /home/u01/app/product/19.3/dbhome_1
cd /home/u01/app/product/19.3/dbhome_1
unzip LINUX.X64_193000_db_home.zip
chown -R oracle:oinstall /home/u01
chmod 755 /home/u01
#将第一步准备好的19c_rsp配置文件与下面这两个文件进行替换覆盖并授权
/home/u01/app/product/19.3/dbhome_1/install/response/db_install.rsp
/home/u01/app/product/19.3/dbhome_1/assistants/dbca/dbca.rsp
chmod 755 /home/u01/app/product/19.3/dbhome_1/install/response/db_install.rsp
chmod 755 /home/u01/app/product/19.3/dbhome_1/assistants/dbca/dbca.rsp
chown -R oracle:oinstall /home/u01
chmod 755 /home/u01
su - oracle
vi .bash_profile
export ORACLE_BASE=/home/u01/app
export ORACLE_HOME=$ORACLE_BASE/product/19.3/dbhome_1
export ORACLE_SID=orcl
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
#使其环境变量生效
source .bash_profile
#安装,如果提示错误则附加-ignoreInternalDriverError参数进行安装
/home/u01/app/product/19.3/dbhome_1/runInstaller -silent -force -ignorePrereq -responseFile /home/u01/app/product/19.3/dbhome_1/install/response/db_install.rsp (19c)
#执行脚本(Root用户下)
/home/u01/app/product/19.3/dbhome_1/root.sh(19c)
#启动监听(oracle用户下)
netca /silent /responsefile /home/u01/app/product/19.3/dbhome_1/assistants/netca/netca.rsp
#建库
dbca -silent -createDatabase -responseFile /home/u01/app/product/19.3/dbhome_1/assistants/dbca/dbca.rsp
#等待至100%即可完成
oracle状态查看参数:
ps -ef | grep oracle#查看服务状态
echo $ORACLE_SID#查看实例
lsnrctl status#查看监听状态
3.数据库初始化
#初始化设置密码(oracle用户下)
sqlplus / as sysdba
alter user sys identified by "Tecsun#@!1221";
grant create session to sys;
grant dba to sys;
grant connect to sys;
grant resource to sys;
alter user system identified by "Tecsun#@!1221";
grant create session to system;
grant dba to system;
grant connect to system;
grant resource to system;
exit
#测试连接性
sqlplus sys/Tecsun#1221@127.0.0.1:1521/orcl as sysdba
4.开机自启动
#修改数据库启动文件
#11g和12c修改如下两个文件(12c则把文件名的11数字改为12即可)
#将文件中的ORACLE_HOME_LISTNER=$1改为ORACLE_HOME_LISTNER=$ORACLE_HOME并保存
/home/u01/app/product/11.2.0/db_1/bin/dbstart
/home/u01/app/product/11.2.0/db_1/bin/dbshut
#19c则修改如下文件
/home/u01/app/product/19.3/dbhome_1/bin/dbstart
/home/u01/app/product/19.3/dbhome_1/bin/dbshut
#自启动脚本编写
#以下为11g的,如果是12c则需要把脚本中的11数字改为12即可
#如果是19c,则把含有版本数字的那行改为如下其他不变
#export ORACLE_HOME=$ORACLE_BASE/product/19.3/dbhome_1/
vi /etc/init.d/oracle
#!/bin/sh
#chkconfig:345 99 10
#description:Oracle 11g R2 AutoRun Servimces
#/etc/rc.d/init.d/oracle
#
#Run-level Startup script for the Oracle Instance, Listener, and
#Web Interface
export ORACLE_BASE=/home/u01/app
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart
echo "Oracle Start Succesful!OK."
;;
stop)
# Oracle listener and instance shutdown
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut
echo "Oracle Stop Succesful!OK."
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo $"Usage: `basename $0` {start|stop|reload|restart}"
exit 1
esac
exit 0
#设置自启动,将以下oratab文件中的N改成Y并保存
vi /etc/oratab
#执行脚本(root用户下)
/home/u01/app/product/11.2.0/db_1/root.sh #11g执行这条
/home/u01/app/product/12.2.0/db_1/root.sh #12c执行这条
/home/u01/app/product/19.3/dbhome_1/root.sh #19c执行这条
#下面的命令直接复制执行即可
chmod 777 /etc/rc.d/init.d/oracle
/etc/rc.d/init.d/oracle start
chmod 755 /etc/init.d/oracle
chkconfig --level 35 oracle on
chkconfig --add oracle
#完成!
禁用无密码登录(可选)
#禁止oracle用户下直接用sqlplus / as sysdba登录:
find /home -name sqlnet.ora
vi /home/u01/app/product/12.2.0/db_1/network/admin/sqlnet.ora
#将文件中的该参数修改为none
SQLNET.AUTHENTICATION_SERVICES=none
#验证
sqlplus / as sysdba #会发现无法登录,要用如下命令才行
sqlplus sys/Tecsun#1221 as sysdba