正文
之前安装oracle 11g r2数据库软件都是建立在图形界面上的,不过现在大部分服务器上都没有安装图形界面。图形界面安装较为方便,安装选项清晰,步骤明确,但oracle还支持另一种安装方式,就是通过响应文件(response file)静默方式安装。这对于没有安装图形界面组件的服务器来说十分方便,同时对于批量部署也更有效率,静默方式安装仅通过命令行方式就可以解决,少去了配置图形界面的繁琐,提高了安装速度。本文就基于centos 7上进行静默安装oracle 11g r2数据库软件进行梳理总结,不涉及数据库的创建。
主要安装步骤参考官方文档:oracle database quick installation guide for linux x86-64
环境准备
- 操作系统(os):centos linux release 7.5.1804 (core)
- 内核版本(kernel version):3.10.0-862.el7.x86_64
- 数据库版本(oracle database):oracle database 11g r2(11.2.0.4.0)
安装准备
硬件环境检查
- 内存需求
根据官方文档的描述,得出内存需求如下:
minimum: 1 gb of ram
recommended: 2 gb of ram or more
检查本机环境内存:
# grep memtotal /proc/meminfo memtotal: 3079752 kb
- swap空间需求
swap空间要求可以参照如下表格:
可用内存 | 需要的swap空间 |
---|---|
1g – 2g | 可用内存*1.5 |
2g – 16g | 等于可用内存 |
16g以上 | 16g |
检查本机环境swap空间:
# grep swaptotal /proc/meminfo swaptotal: 5242876 kb
可用内存及对应swap空间大小:
# free -m total used free shared buff/cache available mem: 3007 77 2819 8 110 2781 swap: 5119 0 5119
- 磁盘空间需求
文件类型 | 空间大小 | |
---|---|---|
安装文件 | 企业版:4.7g | 标准版:4.6g |
数据文件 | 企业版:1.7g | 标准版:1.5g |
本次数据库软件和数据文件路径都存放在/data
路径下。
查看本机环境磁盘空间:
# df -h filesystem size used avail use% mounted on /dev/mapper/system-root 50g 11g 40g 21% / devtmpfs 1.5g 0 1.5g 0% /dev tmpfs 1.5g 0 1.5g 0% /dev/shm tmpfs 1.5g 8.5m 1.5g 1% /run tmpfs 1.5g 0 1.5g 0% /sys/fs/cgroup /dev/sda1 197m 107m 90m 55% /boot /dev/mapper/data-data 40g 5.5g 35g 14% /data tmpfs 301m 0 301m 0% /run/user/0
软件环境检查
- 软件包需求
根据官方文档的描述,得出需要安装的软件包如下:
binutils-2.23.52.0.1-12.el7.x86_64 compat-libcap1-1.10-3.el7.x86_64 compat-libstdc++-33-3.2.3-71.el7.i686 compat-libstdc++-33-3.2.3-71.el7.x86_64 gcc-4.8.2-3.el7.x86_64 gcc-c++-4.8.2-3.el7.x86_64 glibc-2.17-36.el7.i686 glibc-2.17-36.el7.x86_64 glibc-devel-2.17-36.el7.i686 glibc-devel-2.17-36.el7.x86_64 ksh libaio-0.3.109-9.el7.i686 libaio-0.3.109-9.el7.x86_64 libaio-devel-0.3.109-9.el7.i686 libaio-devel-0.3.109-9.el7.x86_64 libgcc-4.8.2-3.el7.i686 libgcc-4.8.2-3.el7.x86_64 libstdc++-4.8.2-3.el7.i686 libstdc++-4.8.2-3.el7.x86_64 libstdc++-devel-4.8.2-3.el7.i686 libstdc++-devel-4.8.2-3.el7.x86_64 libxi-1.7.2-1.el7.i686 libxi-1.7.2-1.el7.x86_64 libxtst-1.2.2-1.el7.i686 libxtst-1.2.2-1.el7.x86_64 make-3.82-19.el7.x86_64 sysstat-10.1.5-1.el7.x86_64
检查本机环境软件包安装情况:
# rpm -q binutils \ > compat-libcap1 \ > compat-libstdc++-33 \ > gcc \ > gcc-c++ \ > glibc \ > glibc-devel \ > ksh \ > libaio \ > libaio-devel \ > libgcc \ > libstdc++ \ > libstdc++-devel \ > libxi \ > libxtst \ > make \ > sysstat binutils-2.27-27.base.el7.x86_64 --package compat-libcap1 is not installed --package compat-libstdc++-33 is not installed gcc-4.8.5-28.el7_5.1.x86_64 gcc-c++-4.8.5-28.el7_5.1.x86_64 glibc-2.17-222.el7.x86_64 glibc-devel-2.17-222.el7.x86_64 --package ksh is not installed libaio-0.3.109-13.el7.x86_64 libaio-devel-0.3.109-13.el7.x86_64 libgcc-4.8.5-28.el7_5.1.x86_64 libstdc++-4.8.5-28.el7_5.1.x86_64 libstdc++-devel-4.8.5-28.el7_5.1.x86_64 --package libxi is not installed --package libxtst is not installed make-3.82-23.el7.x86_64 --package sysstat is not installed
使用yum安装缺失的软件包:
# yum install compat-libcap1 compat-libstdc++-33 ksh libxi libxtst sysstat
驱动软件包安装:
# yum install unixodbc unixodbc-devel
创建系统用户及用户组
- 创建用户组oinstall和dba
# /usr/sbin/groupadd oinstall # /usr/sbin/groupadd dba # grep oinstall /etc/group oinstall:x:1000: # grep dba /etc/group dba:x:1001:
- 创建用户oracle
# /usr/sbin/useradd -g oinstall -g dba oracle # id oracle uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),1001(dba)
- 为用户oracle设置密码
这里为oracle用户设置密码为:oracle
# passwd oracle changing password for user oracle. new password: # 输入oracle bad password: the password is shorter than 8 characters retype new password: # 再次确认为 oracle passwd: all authentication tokens updated successfully.
配置内核参数及资源限制选项
编辑文件 /etc/sysctl.conf,在文件末尾添加如下配置:
# oracle setting 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 = 1048576
使配置生效:
# sysctl -p
编辑文件 /etc/security/limits.conf,在文件末尾添加如下配置:
# oracle setting oracle soft nproc 10240 oracle hard nproc 65535 oracle soft nofile 10240 oracle hard nofile 65536 oracle soft stack 10240
编辑文件 /etc/pam.d/login,在文件末尾添加如下配置:
# oracle setting session required pam_limits.so
编辑文件 /etc/profile,在文件末尾添加如下配置:
# oracle setting if [ $user = "oracle" ]; then if [ $shell = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
编辑文件 /etc/csh.login,在文件末尾添加如下配置:
# oracle setting if ( $user == "oracle") then limit maxproc 16384 limit descriptors 65536 endif
创建相关目录
- 创建oracle_base目录
# mkdir -p /data/app/oracle # chown -r oracle.oinstall /data/app/ # chmod -r 755 /data/app/oracle/
- 创建oracle_home目录
# su - oracle $ mkdir -p /data/app/oracle/product/11.2.0/db_1
- 创建inventory目录
# su - oracle $ mkdir -p /data/app/orainventory
配置oracle用户环境变量
编辑文件 /home/oracle/.bash_profile,在文件末尾添加如下配置(忽略注释信息):
# oracle setting umask 022 export oracle_base=/data/app/oracle/ #oracle base目录 export oracle_home=/data/app/oracle/product/11.2.0/db_1 #oracle home目录 export oracle_sid=dbabd #实例sid export path=$path:$oracle_home/bin #命令加入系统环境变量中 #export nls_lang="simplified chinese_china.utf8" #如果需要中文显示设置这项,如果是英文则设置成下面这项,最好是英文以避免不必要的麻烦。 export nls_lang="american_america.utf8" export nls_date_format="yyyy-mm-dd hh24:mi:ss" alias sqlplus='rlwrap sqlplus' #命令history readline功能,需要另外安装rlwrap的rpm包 alias rman='rlwrap rman'
准备数据库安装文件
- 上传安装文件
# rz rz waiting to receive. upload zmodem p13390677_112040_linux-x86-64_1of7.zip (1330.93 mb, 0:48 min = 27.73 mb/sec) p13390677_112040_linux-x86-64_2of7.zip (1097.97 mb, 0:45 min = 24.40 mb/sec)
- 解压安装文件
# unzip p13390677_112040_linux-x86-64_1of7.zip -d /tmp/ # unzip p13390677_112040_linux-x86-64_2of7.zip -d /tmp/ # chown -r oracle.oinstall /tmp/database/
response file(响应文件)准备
在 /tmp/database/response/目录下有一份响应文件模板,复制一份至 /data/app目录下编辑:
$ cd /tmp/database/response/ $ ls dbca.rsp db_install.rsp netca.rsp $ cp db_install.rsp /data/app/dbabd_install.rsp -ra
修改后的响应文件内容如下,清除了多余的空行和注释语句。
$ cd /data/app/ $ sed -i 's/^#.*$//g' dbabd_install.rsp $ sed -i '/^$/d' dbabd_install.rsp
文件dbabd_install.rsp修改后如下(实际文件中无以下注释语句):
oracle.install.responsefileversion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 oracle.install.option=install_db_swonly # 只安装数据库软件 oracle_hostname=dbabd # 主机名 unix_group_name=oinstall # 用户组 inventory_location=/data/app/orainventory # inventory目录 selected_languages=en,zh_cn # 支持语言 oracle_home=/data/app/oracle/product/11.2.0/db_1 # oracle_home目录 oracle_base=/data/app/oracle/ # oracle_base目录 oracle.install.db.installedition=ee # 安装版本 oracle.install.db.eeoptionsselection=false oracle.install.db.optionalcomponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0 oracle.install.db.dba_group=dba oracle.install.db.oper_group= oracle.install.db.cluster_nodes= oracle.install.db.israconeinstall= oracle.install.db.raconeservicename= oracle.install.db.config.starterdb.type= oracle.install.db.config.starterdb.globaldbname= oracle.install.db.config.starterdb.sid= oracle.install.db.config.starterdb.characterset=al32utf8 oracle.install.db.config.starterdb.memoryoption=true oracle.install.db.config.starterdb.memorylimit= oracle.install.db.config.starterdb.installexampleschemas=false oracle.install.db.config.starterdb.enablesecuritysettings=true oracle.install.db.config.starterdb.password.all= 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.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 # 该选项默认为false,需要改成true,忽略安全性更新 proxy_host= proxy_port= proxy_user= proxy_pwd= proxy_realm= collector_supporthub_url= oracle.installer.autoupdates.option= oracle.installer.autoupdates.downloadupdatesloc= autoupdates_myoraclesupport_username= autoupdates_myoraclesupport_password=
关于响应文件更详细信息可参考官方文档:customizing and creating response files
开始安装
安装时需要切换到oracle用户执行如下命令:
$ /tmp/database/runinstaller -silent -force -ignoreprereq -ignoresysprereqs -responsefile /data/app/dbabd_install.rsp
输出如下:
starting oracle universal installer... checking temp space: must be greater than 120 mb. actual 35541 mb passed checking swap space: must be greater than 150 mb. actual 5119 mb passed preparing to launch oracle universal installer from /tmp/orainstall2019-01-09_04-59-02pm. please wait ...[oracle@dbabd ~]$ you can find the log of this install session at: /data/app/orainventory/logs/installactions2019-01-09_04-59-02pm.log the installation of oracle database 11g was successful. please check '/data/app/orainventory/logs/silentinstall2019-01-09_04-59-02pm.log' for more details. as a root user, execute the following script(s): 1. /data/app/orainventory/orainstroot.sh 2. /data/app/oracle/product/11.2.0/db_1/root.sh successfully setup software.
根据输出内容,需要root用户执行两个脚本:
# /data/app/orainventory/orainstroot.sh changing permissions of /data/app/orainventory. adding read,write permissions for group. removing read,write,execute permissions for world. changing groupname of /data/app/orainventory to oinstall. the execution of the script is complete. # /data/app/oracle/product/11.2.0/db_1/root.sh check /data/app/oracle/product/11.2.0/db_1/install/root_dbabd_2019-01-09_17-04-17.log for the output of root script
配置监听
不只是安装数据库软件可以采取静默方式安装,同样,之前采用netca命令配置数据库监听现在也可以通过静默方式进行配置。与数据库软件相同的都是采用response file(响应文件)方式来安装。
- 复制编辑响应文件
监听的响应文件可以保持默认,即跟默认模板文件一致。
$ cp /tmp/database/response/netca.rsp /data/app/dbabd_netca.rsp -ra $ sed -i 's/^#.*$//g' /data/app/dbabd_netca.rsp $ sed -i '/^$/d' /data/app/dbabd_netca.rsp
文件dbabd_netca.rsp修改后如下(实际文件中无以下注释语句):
[general] responsefile_version="11.2" create_type="custom" [oracle.net.ca] installed_components={"server","net8","javavm"} install_type=""typical"" listener_number=1 listener_names={"listener"} # 监听名称 listener_protocols={"tcp;1521"} # 监听端口 listener_start=""listener"" naming_methods={"tnsnames","onames","hostname"} nsn_number=1 nsn_names={"extproc_connection_data"} nsn_service={"plsextproc"} nsn_protocols={"tcp;hostname;1521"}
- 静默配置监听
在oracle用户下执行如下命令:
$ $oracle_home/bin/netca /silent /responsefile /data/app/dbabd_netca.rsp
输出如下:
parsing command line arguments: parameter "silent" = true parameter "responsefile" = /data/app/dbabd_netca.rsp done parsing command line arguments. oracle net services configuration: profile configuration complete. oracle net listener startup: running listener control: /data/app/oracle/product/11.2.0/db_1/bin/lsnrctl start listener listener control complete. listener started successfully. listener configuration complete. oracle net services configuration successful. the exit code is 0
查看监听状态:
$ lsnrctl status lsnrctl for linux: version 11.2.0.4.0 - production on 09-jan-2019 17:12:19 copyright (c) 1991, 2013, oracle. all rights reserved. connecting to (description=(address=(protocol=ipc)(key=extproc1521))) status of the listener ------------------------ alias listener version tnslsnr for linux: version 11.2.0.4.0 - production start date 09-jan-2019 17:09:20 uptime 0 days 0 hr. 02 min. 58 sec trace level off security on: local os authentication snmp off listener parameter file /data/app/oracle/product/11.2.0/db_1/network/admin/listener.ora listener log file /data/app/oracle/diag/tnslsnr/dbabd/listener/alert/log.xml listening endpoints summary... (description=(address=(protocol=ipc)(key=extproc1521))) (description=(address=(protocol=tcp)(host=dbabd)(port=1521))) the listener supports no services the command completed successfully
安装完成
至此,静默安装oracle 11g r2数据库软件以及配置监听就完成了,可以看出静默安装有如下优点:
- 安装速度更快,提高了部署的效率;
- 不像图形界面安装方式需要人工干预,安装选项通过响应文件传递给安装程序执行;
- 减少操作系统资源消耗,避免安装更多的软件包。
参考
https://docs.oracle.com/cd/e11882_01/install.112/e24326/toc.htm
https://docs.oracle.com/cd/e11882_01/em.112/e12255/toc.htm
〖本人水平有限,文中如有错误还请留言批评指正!〗