fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912 # 建議 ≥ 物理內存 50%,單位 bytes
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
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
session required pam_limits.so
yum install -y \
binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel \
gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers \
ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel \
make sysstat unixODBC unixODBC-devel
注意: libaio-devel、unixODBC* 需同時安裝 x86_64 和 i686 版本 (multilib)。
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
useradd -u 54321 -g oinstall -G dba,oper oracle
passwd oracle # 設置密碼
mkdir -p /u01/app/oracle # ORACLE_BASE
mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1 # ORACLE_HOME
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
# Oracle Settings
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 NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # 推薦 UTF8
export TMP=/tmp
export TMPDIR=/tmp
# 生效
source ~/.bash_profile
/etc/ssh/sshd_config 確保 X11Forwarding yesxhost + (允許本地 X 連接)# 解壓安裝介質
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
cd database
# 圖形界面
./runInstaller
# 或靜默安裝 (生產推薦)
./runInstaller -silent -responseFile /path/to/db_install.rsp \
-ignorePrereqFailure -waitforcompletion
orcl.example.com# 作為 root 執行
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
# oracle 用戶
netca
# 選擇 Listener configuration → Add → 名稱 LISTENER → TCP 1521 → 完成
dbca
# 典型流程:Create Database → General Purpose → Global DB Name: orcl →
# 字符集 AL32UTF8 → 內存管理 Auto (AMM) → 存儲 File System → 完成
關鍵順序: 先 NetCA 配置 Listener,再 DBCA 創建數據庫 (DBCA 會自動註冊服務到 Listener)。
sqlplus / as sysdba
SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;
SELECT OPEN_MODE FROM V$DATABASE;
# 遠程測試
sqlplus system/password@//host:1521/orcl.example.com
https://host:5500/em)| 現象 | 原因 | 對策 |
|---|---|---|
| DBCA 卡住/報錯 | Listener 未啟動或端口衝突 | 先 netca 配置並 lsnrctl start |
| ORA-00845 | /dev/shm 過小 | 修改 /etc/fstab size=6G 並 remount |
| 字符集亂碼 | 安裝選 US7ASCII/WE8ISO8859P1 | 重裝選 AL32UTF8 |
| EM 無法訪問 | 防火牆/端口 5500/1158 未開 | firewall-cmd --add-port=5500/tcp |
| SQL Developer 連不上但 sqlplus 行 | JDBC Thin 不走 TNS,檢查 Host/Port/SID vs Service_Name | JDBC URL 用 Service_Name: //host:1521/orcl |
impdp (Data Pump) 替代舊 impCONVERT DATABASE / 跨平台表空間傳輸總結: Oracle 安裝是系統工程,OS 層面參數合規是前提,字符集選型決定未來十年,Listener 先行是鐵律。建議將上述流程封裝為 Ansible Playbook 或 Shell 腳本庫,實現「基礎設施即代碼」。