Oracle Database 在 Linux 上的安裝若缺乏標準化流程,極易遭遇核心參數不足、套件缺失、權限錯誤等問題。本文提供生產級標準安裝流程:硬體需求、OS 套件預裝、核心參數調優、使用者/目錄建立、安裝執行、安裝後配置,並附常見錯誤對策。
| 項目 | 最低需求 | 生產建議 |
| 實體記憶體 | 1 GB (建議 2 GB+) | ≥ 16 GB (視 SGA/PGA 規劃) |
| Swap 空間 | 1.5×RAM 或 2 GB | ≥ 16 GB (配合 HugePages) |
| /tmp 空間 | 1 GB | ≥ 10 GB |
| CPU | 1 vCPU | ≥ 8 核 (支援平行查詢) |
| OS 版本 | Oracle Linux 7/8, RHEL 7/8 | Oracle Linux 8 (UEK 內核) |
| SELinux | Disabled | Disabled |
| 防火牆 | 關閉或開放 1521/5500/3938 | firewalld 精細規則 |
二、 必裝 RPM 套件清單 (Oracle Linux 8 / RHEL 8)
# 使用 dnf/yum 一鍵安裝 (Oracle Linux 含預設倉庫)
dnf install -y \
oracle-database-preinstall-19c \
# 以上套件自動處理核心參數、用戶、群組、套件依賴
# 若無 preinstall 套件,手動安裝核心依賴
dnf install -y \
bc binutils compat-libcap1 compat-libstdc++-33 \
elfutils-libelf elfutils-libelf-devel fontconfig-devel \
glibc glibc-devel ksh libaio libaio-devel \
libgcc libstdc++ libstdc++-devel libXi libXtst \
make net-tools nfs-utils python3 smartmontools \
sysstat unixODBC unixODBC-devel
三、 核心參數配置 (/etc/sysctl.conf)
# Oracle Kernel Parameters (依實體記憶體調整)
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 4398046511104 # 4TB 或 物理記憶體 80%
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
四、 使用者、群組與目錄建立
# 群組
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 racdba
# 使用者
useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle
echo "oracle:StrongPassw0rd!" | passwd --stdin oracle
# 目錄
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
mkdir -p $ORACLE_HOME
chown -R oracle:oinstall /u01
chmod -R 775 /u01
五、 環境變數配置 (/home/oracle/.bash_profile)
# Oracle Environment
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export TZ=Asia/Taipei
umask 022
六、 安裝執行
- 下載 Oracle Database 19c Linux x64 安裝包 (
LINUX.X64_193000_db_home.zip)
- 解壓至
$ORACLE_HOME:unzip -q LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
- 切換 oracle 用戶:
su - oracle
- 啟動靜默安裝:
cd $ORACLE_HOME
./runInstaller -silent -waitforcompletion \
-responseFile $ORACLE_HOME/install/response/db_install.rsp \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/u01/app/oraInventory \
SELECTED_LANGUAGES=en,zh_TW \
ORACLE_HOME=$ORACLE_HOME \
ORACLE_BASE=$ORACLE_BASE \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSOPER_GROUP=oper \
oracle.install.db.OSBACKUPDBA_GROUP=backupdba \
oracle.install.db.OSDGDBA_GROUP=dgdba \
oracle.install.db.OSKMDBA_GROUP=kmdba \
oracle.install.db.OSRACDBA_GROUP=racdba \
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
DECLINE_SECURITY_UPDATES=true
- Root 執行根腳本:
/u01/app/oraInventory/orainstRoot.sh、$ORACLE_HOME/root.sh
七、 資料庫建立 (DBCA 靜默)
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname ORCL -sid ORCL \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-storageType FS \
-datafileDestination /u01/oradata \
-recoveryAreaDestination /u01/fast_recovery_area \
-recoveryAreaSize 10240 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 8192 \
-sysPassword StrongPassw0rd! \
-systemPassword StrongPassw0rd! \
-emConfiguration NONE
八、 安裝後驗證
# 1. 實例狀態
sqlplus / as sysdba
SQL> SELECT instance_name, status, database_status FROM v$instance;
# 2. 監聽狀態
lsnrctl status
# 3. 表空間/資料檔
SQL> SELECT tablespace_name, file_name, bytes/1024/1024 MB FROM dba_data_files;
# 4. 參數檔位置
SQL> SHOW PARAMETER spfile
九、 常見安裝錯誤與對策
| 錯誤現象 | 根因 | 解決方案 |
INS-32008 核心參數不足 | shmmax/sem/file-max 未達標 | 檢查 sysctl -a | grep -E 'shm|sem|file-max',修正後 sysctl -p |
INS-13001 套件缺失 | compat-libstdc++-33 / libaio-devel 等未裝 | 安裝 oracle-database-preinstall-19c 或手動補裝 |
ORA-01034 ORACLE not available | 實例未啟動 / ORACLE_SID 錯誤 | 確認 export ORACLE_SID=ORCL,sqlplus / as sysdba → startup |
| DBCA 建庫卡住 | /tmp 空間不足 / 熵源不足 | 擴充 /tmp,安裝 rng-tools 或 haveged |
| EM Express 無法存取 | 5500/5501 埠未開放 / 防火牆 | 開放埠,確認 DBMS_XDB_CONFIG.SETHTTPPORT(5500) |
十、 進階:自動化部署建議
- 將上述流程封裝為 **Ansible Playbook** / **Shell 腳本庫**,參數化
ORACLE_SID、PASSWORD、STORAGE_PATH
- 建立 **Golden Image (AMI/Template)** 含預裝套件、核心參數、用戶/目錄,新節點秒級就緒
- 納入 **CI/CD Pipeline**:代碼變更 → 自動佈建測試環境 → 執行整合測試 → 銷毀
標準化安裝流程 = 可重現 + 可審計 + 可自動化。從硬體清單到安裝後驗證,每一步都有明確驗收標準,是企業級 Oracle 交付的專業底線。
- 上一篇文章: Oracle 徹底清理重裝指南:13 步驟消除殘留避免安裝精靈閃退
- 下一篇文章: Oracle Linux 安裝後配置指南:oratab 自啟動、RPM 依賴包驗證、DISPLAY 設置、安裝入口
Copyright ©
程式碼之家 All Rights Reserved