首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 11.2.0.1 RHEL 5/6 靜默安裝全自動化部署指南

     編輯:Oracle 資料庫基礎

前言

Oracle 11gR2 (11.2.0.1) 在 RHEL 5/6 (x86/x86_64) 上的靜默安裝,透過 Response File 實現零圖形介面、可腳本化、可版控的標準化部署。本文涵蓋 OS 前置條件、Kernel 參數、使用者/群組、目錄佈局、環境變數、軟體解壓、Response File 定製、靜默安裝/建庫/監聽配置、服務註冊與後續優化,適合納入 Ansible/Kickstart/自動化流水線。


一、作業系統層面前置條件

1.1 關閉 SELinux 與防火牆

# 即時生效
setenforce 0
service iptables stop

# 永久生效
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
chkconfig iptables off

1.2 關閉非必要服務(精簡版)

for svc in rhnsd isdn avahi-daemon avahi-dnsconfd bluetooth cpuspeed hidd ip6tables mcstrans pcscd gpm xinetd portmap yum-updatesd restorecond setroubleshoot libvirtd xendomains xend sendmail cups; do
    chkconfig --level 2345 $svc off
done

1.3 /dev/shm 調大至實體記憶體 100%(預設 40%)

# /etc/fstab 修改
tmpfs /dev/shm tmpfs defaults,size=16G 0 0  # 視實體 RAM 調整
mount -o remount /dev/shm
df -h /dev/shm  # 驗證

二、RPM 套件檢查與安裝

# 必要套件清單 (RHEL 5/6 通用)
yum install -y binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel \
    expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers \
    libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat \
    unixODBC unixODBC-devel

# 64位系統需同時安裝 32位相容套件
yum install -y glibc.i686 libaio.i686 libgcc.i686 libstdc++.i686

三、建立群組、使用者與目錄

# 群組 (GID 建議固定,利於多節點一致)
groupadd -g 1001 oinstall
groupadd -g 1002 dba
groupadd -g 1003 asmadmin
groupadd -g 1004 asmdba

# 使用者 (UID 固定,家目錄自建)
useradd -u 1001 -g oinstall -G dba,asmdba -d /home/oracle oracle
echo "oracle:OraclePasswd123" | chpasswd

# 目錄佈局
mkdir -p /opt/oracle/11.2.0 /home/oracle/inventory
chown -R oracle:oinstall /opt/oracle /home/oracle
chmod -R 775 /opt/oracle /home/oracle

四、Kernel 參數調優 (/etc/sysctl.conf)

# 經驗值,視實體 RAM/CPU 調整
kernel.shmall = 2097152
kernel.shmmax = 536870912        # 建議 >= 實體 RAM 一半
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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

# 套用
/sbin/sysctl -p

RHEL 6 注意:sysctl -p 可能報 net.bridge.bridge-nf-call-* 未知鍵值錯誤,屬內核模組未載入,不影響 Oracle 安裝,可忽略。


五、Shell 限制 (/etc/security/limits.conf)

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

/etc/pam.d/login 末行加入:session required pam_limits.so


六、Oracle 使用者環境變數 (~oracle/.bash_profile)

umask 022
export ORACLE_HOSTNAME=localhost.localdomain
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/11.2.0
export ORACLE_SID=ge01
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

七、軟體解壓與 Response File 定製

# 以 oracle 用戶
cd /home/oracle
unzip -q linux.x64_11gR2_database_1of2.zip
unzip -q linux.x64_11gR2_database_2of2.zip
chown -R oracle:oinstall /home/oracle/database

7.1 db_install.rsp (軟體安裝)

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
DECLINE_SECURITY_UPDATES=true
ORACLE_HOSTNAME=localhost.localdomain
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/home/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/opt/oracle/11.2.0
ORACLE_BASE=/opt/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=ge01
oracle.install.db.config.starterdb.SID=ge01
oracle.install.db.config.starterdb.memoryLimit=40
oracle.install.db.config.starterdb.password.ALL=OraclePasswd123

7.2 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_PROTOCOLS={"TCP;1521"}

7.3 dbca.rsp (建庫)

[GENERAL]
RESPONSEFILE_VERSION="11.2.0"
OPERATION_TYPE="createDatabase"

[CREATEDATABASE]
GDBNAME="ge01"
SID="ge01"
TEMPLATENAME="General_Purpose.dbc"
SYSPASSWORD="OraclePasswd123"
SYSTEMPASSWORD="OraclePasswd123"
EMCONFIGURATION="LOCAL"
DBSNMPPASSWORD="OraclePasswd123"
CHARACTERSET="ZHS16GBK"
MEMORYPERCENTAGE="40"

八、靜默安裝執行序列

# 1. 軟體安裝 (2-5 分鐘)
cd /home/oracle/database
./runInstaller -silent -force -noconfig -responseFile /home/oracle/db_install.rsp

# 監控日誌
tail -100f $ORACLE_BASE/oraInventory/logs/installActions*.log

# 2. 執行 root 腳本 (需 root)
/opt/oracle/oraInventory/orainstRoot.sh
/opt/oracle/11.2.0/root.sh

# 3. 靜默配置監聽
netca /silent /responsefile /home/oracle/netca.rsp
lsnrctl status

# 4. 靜默建庫
dbca -silent -responseFile /home/oracle/dbca.rsp

九、後續配置與服務註冊

9.1 修改 /etc/oratab 啟用自動啟動

# 將第三欄 N 改為 Y
ge01:/opt/oracle/11.2.0:Y

9.2 修正 dbstart/dbshut (修正 ORACLE_HOME_LISTNER 拼寫錯誤)

sed -i 's/ORACLE_HOME_LITENER/ORACLE_HOME_LISTENER/g' $ORACLE_HOME/bin/dbstart
sed -i 's/ORACLE_HOME_LITENER/ORACLE_HOME_LISTENER/g' $ORACLE_HOME/bin/dbshut

9.3 建立 SystemV 啟動腳本 /etc/init.d/oracle11g

#!/bin/bash
# chkconfig: 345 51 49
# description: Oracle 11g Database
ORACLE_HOME=/opt/oracle/11.2.0
ORACLE_OWNER=oracle
ORACLE_LOCK=/var/lock/subsys/oracle

case "$1" in
  start)
    echo -n "Starting Oracle: "
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart"
    touch $ORACLE_LOCK
    echo
    ;;
  stop)
    echo -n "Shutting down Oracle: "
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut"
    rm -f $ORACLE_LOCK
    echo
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac
exit 0
chmod 744 /etc/init.d/oracle11g
chkconfig --add oracle11g
chkconfig --level 35 oracle11g on

十、資料庫優化初始化


sqlplus / as sysdba <

十一、驗證清單

  1. lsnrctl status 監聽正常,服務 ge01 狀態 READY。
  2. sqlplus system/OraclePasswd123@ge01 連線成功。
  3. SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE; 顯示 OPEN。
  4. ps -ef | grep pmon 進程存在。
  5. 重啟 OS 驗證服務自動啟動:reboot → 確認資料庫自動 OPEN。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved