正文 之前安裝Oracle 11g R2資料庫軟體都是建立在圖形界面上的,不過現在大部分伺服器上都沒有安裝圖形界面。圖形界面安裝較為方便,安裝選項清晰,步驟明確,但Oracle還支持另一種安裝方式,就是通過響應文件(response file)靜默方式安裝。這對於沒有安裝圖形界面組件的伺服器來說十分 ...
正文
之前安裝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
☆〖本人水平有限,文中如有錯誤還請留言批評指正!〗☆