本文分享一個用於自動化 Oracle 資料庫安裝與建庫的 Shell 腳本。該腳本涵蓋從作業系統層面的使用者/群組建立、核心參數調整、環境變數設定,到 Oracle 軟體靜默安裝、監聽器配置、資料庫建立(DBCA)的完整流程。適合在 Linux 環境下進行標準化、可重複的 Oracle 部署。
config.conf 獲取軟體路徑、SID、ORACLE_BASE/HOME、資料庫名稱等關鍵參數,支援預設值回填。/etc/sysctl.conf(核心參數)、/etc/security/limits.conf(資源限制)、/etc/pam.d/login、/etc/profile。~/.bash_profile 寫入 ORACLE_SID、ORACLE_BASE、ORACLE_HOME、PATH、LD_LIBRARY_PATH、CLASSPATH 等。db_install.rsp,指定企業版、字元集、儲存路徑、安全選項等。runInstaller -silent,輪詢日誌判斷完成,自動執行 orainstRoot.sh 與 root.sh。netca -silent 建立預設監聽器。dbca.rsp,呼叫 dbca -silent -createDatabase 完成建庫,設定 SYS/SYSTEM 密碼。#!/bin/bash
# 檢查 oracle 使用者是否存在,不存在則建立
if ! id oracle &>/dev/null; then
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/useradd -g oinstall -G dba -d /home/oracle oracle
echo "oracle" | passwd --stdin oracle
fi
# 附加到 /etc/sysctl.conf
cat >> /etc/sysctl.conf <<EOF
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
kernel.shmmax = 957691904
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 1048576
EOF
sysctl -p
# 附加到 /etc/security/limits.conf
cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOME=/oracle/db11g
ORACLE_BASE=/oracle
INVENTORY_LOCATION=/oracle/Inventory
oracle.install.db.InstallEdition=EE
SELECTED_LANGUAGES=zh_CN,en
UNIX_GROUP_NAME=oinstall
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
oracle.installer.autoupdates.option=SKIP_UPDATES
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "orcl"
SID = "orcl"
TEMPLATENAME = "General_Purpose.dbc"
CHARACTERSET = "AL32UTF8"
NATIONALCHARACTERSET = "AL16UTF16"
MEMORYPERCENTAGE = 40
EMCONFIGURATION = "DBEXPRESS"
config.conf 中的路徑與參數(如 SOFTWARE_HOME 指向解壓後的 database 目錄)。/oracle/711/setupDatabase.out、netca.log、dbca.log 確認無錯誤。這支腳本將 Oracle 11gR2 的繁瑣安裝過程封裝為可重複執行的自動化流程,大幅降低人工操作風險,適合批次部署、環境快速重建或 CI/CD 流程整合。實際落地時,建議搭配版本控制(Git)管理配置檔與腳本,並加入錯誤通知與回滾機制,打造更健壯的資料庫交付管線。