在 Linux 上安裝 Oracle Database 需嚴格遵循官方預安裝需求:作業系統版本、核心參數、必要 RPM 套件、使用者/群組、目錄權限、環境變數等。本文以 CentOS 4.8 / Oracle 11g 為例,整理標準化安裝流程,適用於 10g/11g/12c/19c 的核心步驟。
# 建立群組
groupadd oinstall
groupadd dba
groupadd oper # 可選,操作員權限
# 建立 oracle 使用者,主群組 oinstall,附屬群組 dba,oper
useradd -g oinstall -G dba,oper -d /u01/app/oracle oracle
# 設定密碼
passwd oracle
# 建立基礎目錄並設定權限
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod -R 775 /u01
關鍵: /u01 為 ORACLE_BASE,安裝程式會在其下建立 product/11.2.0/dbhome_1 等目錄。
Oracle 官方文件列出各版本所需套件清單。以 Oracle 11g R2 on RHEL 5/6 為例:
# 檢查套件是否已安裝
rpm -q binutils compat-libstdc++-33 elfutils-libelf gcc gcc-c++ glibc glibc-common glibc-devel \
ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
# 缺失套件從安裝光碟或 yum 安裝
yum install -y binutils compat-libstdc++-33 elfutils-libelf gcc gcc-c++ glibc glibc-common glibc-devel \
ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
提示: Oracle 19c 需額外 smartmontools、net-tools、policycoreutils 等,請參照對應版本《Installation Guide》Appendix。
# Oracle 11g 建議值(依實體記憶體調整)
kernel.shmall = 2097152
kernel.shmmax = 2147483648 # 建議為實體記憶體 50%~80%,單位 bytes
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
fs.aio-max-nr = 1048576
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
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
session required /lib/security/pam_limits.so
session required pam_limits.so
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
切換至 oracle 用戶編輯 ~/.bash_profile:
# Oracle Settings
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORA_NLS11=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$ORACLE_HOME/bin:$PATH
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
# 顯示設定(若使用 X11 Forwarding)
# export DISPLAY=localhost:0.0
生效:source ~/.bash_profile,驗證:env | grep ORA
編輯 /etc/hosts,確保主機名稱解析正確:
127.0.0.1 localhost.localdomain localhost
192.168.1.100 dbserver.example.com dbserver
安裝程式檢查時會驗證主機名稱解析,錯誤會導致「Network configuration」警告。
# 解壓安裝檔
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
# 編輯回應檔 database/response/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=dbserver.example.com
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_TW
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
執行靜默安裝:
cd database
./runInstaller -silent -responseFile `pwd`/response/db_install.rsp -ignorePrereq
安裝結束時提示以 root 執行:
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname orcl -sid orcl \
-sysPassword SysPassword1 -systemPassword SysPassword1 \
-sysmanPassword SysPassword1 -dbsnmpPassword SysPassword1 \
-characterSet AL32UTF8 -nationalCharacterSet AL16UTF16 \
-storageType FS -datafileDestination /u01/app/oracle/oradata \
-recoveryAreaDestination /u01/app/oracle/fast_recovery_area \
-totalMemory 2048
# 檢查 listener
lsnrctl status
# 連線測試
sqlplus / as sysdba
SQL> SELECT instance_name, status FROM v$instance;
# 檢查企業管理器 (若安裝)
emctl status dbconsole
| 錯誤 | 原因與解決 |
|---|---|
libstdc++.so.5 not found | 缺少 compat-libstdc++-33 → yum install compat-libstdc++-33 |
DISPLAY not set | 圖形安裝需 X11 → 設定 export DISPLAY=localhost:0.0 或使用靜默安裝 |
| 記憶體不足 | swap 空間小於建議值 → 增加 swap 分區或檔案 |
| 核心參數不符 | sysctl -p 未生效或數值過小 → 檢查 /etc/sysctl.conf 並重新套用 |
| 權限錯誤 | 目錄擁有者非 oracle:oinstall → chown -R oracle:oinstall /u01 |
參考:Oracle Database Installation Guide for Linux (對應版本)。生產環境建議使用 Oracle Preinstallation RPM (oracle-database-preinstall-19c) 自動完成大部分預安裝配置。