安裝類型與版本選擇
| 安裝端 | 類型 | 適用場景 |
| 伺服器端 | 企業版 / 標準版 | 典型安裝、最小安裝、自訂安裝 |
| 客戶端 | 管理員/程式設計師/應用使用者/自訂 | 開發、管理、應用連線 |
系統需求基準
| 項目 | 最低需求 | 建議配置 |
| 記憶體 | 128 MB | ≥ 256 MB (現代環境建議 ≥ 4GB) |
| Swap | 400 MB 或 2×RAM | ≥ 2×RAM (小記憶體) / 1×RAM (大記憶體) |
| 磁碟空間 (伺服器典型) | 750 MB | ≥ 5 GB (含資料檔、備份、日誌) |
| 磁碟空間 (客戶端管理員) | 350 MB | ≥ 1 GB |
| 核心版本 | Linux 2.2+ | 2.6 / 3.x / 4.x / 5.x |
| JRE | 1.1.6+ | JDK 1.8 / 11 (安裝程式需求) |
| 圖形介面 | X Window | GNOME / KDE / Xfce |
安裝前核心準備工作
1. 核心參數調優 (傳統 2.4/2.6 核心修改原始碼重編譯)
現代發發行 (RHEL 6+/OEL 6+/SLES 11+) 已透過 /etc/sysctl.conf 動態調整,無需重編譯核心。以下為歷史參考:
# /usr/src/linux/include/asm/param.h
SHMMAX = 物理記憶體 * 0.5
SHMMIN = 1
SHMMNI = 100
SHMSEG = 10
# /usr/src/linux/include/linux/sem.h
SEMMNI = 100
SEMMSL = processes 參數 + 10
SEMMNS = 所有資料庫 processes 總和 + 10
SEMOPM = 100
SEMMX = 32767
# 重編譯核心
make dep && make clean && make bzImage
# 替換 /boot/vmlinuz 並更新 grub/lilo,重啟生效
2. 現代系統核心參數配置 (/etc/sysctl.conf)
# Oracle 10g/11g/12c/19c 通用建議
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295 # 4GB 或物理記憶體 50% 取較大值
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
3. 使用者限制 (/etc/security/limits.conf)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
4. PAM 配置 (/etc/pam.d/login)
session required pam_limits.so
5. 建立使用者、群組與目錄
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 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,asmoper,asmadmin oracle
passwd oracle
mkdir -p /u01/app/oracle
mkdir -p /u02/oradata
chown -R oracle:oinstall /u01 /u02
chmod -R 775 /u01 /u02
6. Oracle 使用者環境變數 (~oracle/.bash_profile)
# 語言編碼
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
# 核心路徑
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
# 程式庫與國際化
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
# 臨時目錄
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
7. 安裝介質準備
# 光碟掛載
mount /dev/cdrom /mnt/cdrom
# 或解壓下載檔
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
# 合併 database 目錄
chown -R oracle:oinstall /path/to/database
資料庫安裝流程 (OUI 圖形介面)
# oracle 用戶圖形登入
cd /path/to/database
export DISPLAY=:0.0
./runInstaller
關鍵選項決策表
| 步驟 | 建議選擇 | 理由 |
| 安裝類型 | 自訂安裝 | 精確控制元件,避免安裝不需組件 |
| Unix 群組名 | oinstall | Inventory 擁有群組 |
| 資料庫版本 | 企業版 | 功能完整 |
| 安裝內容 | **取消勾選 InterMedia** | 歷史版本穩定性較差,現代版已整合為 Oracle Text |
| 建立資料庫 | **否 (稍後用 DBCA 建立)** | 分離軟體安裝與資料庫建立,利於模板化、自動化 |
| Root 執行腳本 | 依提示執行 root.sh | 設定權限、建立 /etc/oratab、註冊服務 |
資料庫建立 (DBCA) 最佳實踐
- 啟動:`dbca` (圖形) 或 `dbca -silent -responseFile ...` (靜默)
- 範本:一般用途 / 交易處理 / 數據倉庫 / 自訂
- 字符集:**AL32UTF8 (Unicode)** — 避免亂碼、支援多語言
- 儲存:檔案系統 / ASM / 原始裝置
- 啟用封存模式 (ARCHIVELOG) — 生產環境必須
- 配置 Enterprise Manager (Database Control / Cloud Control)
- 設定自動備份策略 (RMAN + Flash Recovery Area)
安裝後關鍵配置
1. 監聽器配置 (NetCA / 手動編輯 listener.ora)
# listener.ora 範例
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl)
)
)
2. 服務自動啟動配置
# /etc/oratab
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y
# systemd 服務檔 (現代 Linux)
# /etc/systemd/system/oracle-db.service
[Unit]
Description=Oracle Database
After=network.target
[Service]
Type=forking
User=oracle
Environment=ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
Environment=ORACLE_SID=orcl
ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME
ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME
TimeoutSec=0
[Install]
WantedBy=multi-user.target
# 啟用
systemctl daemon-reload
systemctl enable oracle-db
systemctl start oracle-db
常見安裝失敗排查
| 錯誤現象 | 原因 | 解決 |
| DISPLAY 變數未設定/連線被拒 | X11 轉發未開啟/權限不足 | `export DISPLAY=:0.0`、`xhost +`、確認 SSH -X |
| 核心參數檢查失敗 | sysctl 參數不足 | 修改 /etc/sysctl.conf、`sysctl -p` |
| Swap 空間不足 | Swap < RAM | 新增 Swap 分區/檔案 |
| libaio / libstdc++ 缺失 | 套件未安裝 | `yum install libaio libaio-devel gcc-c++ compat-libstdc++-33` |
| 權限被拒 (ORA-01031) | 非 dba 群組/環境變數錯 | 確認 `id oracle`、環境變數正確 |
| 字符集選擇錯誤 | 選 US7ASCII/WE8ISO8859P1 | **必選 AL32UTF8** |
總結:成功關鍵在於「準備工作」
只要前置準備 (OS 參數、使用者、目錄、環境變數、介質) 做扎實,OUI 安裝與 DBCA 建庫過程極其順暢。所有參數建庫後均可動態調整,**無需擔心一次設錯無法挽回**。
本寶典整合了傳統核心重編譯時代與現代 sysctl 動態調整時代的最佳實踐,適合 Oracle 10g~19c 全版本 Linux 部署參考。