首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Linux 下 Oracle 監聽器與數據庫自啟動配置 (rc.local + oratab)

     編輯:Oracle 資料庫相關知識

核心配置三步走

1. 修改 /etc/oratab — 控制 dbstart 是否啟動該實例

# 格式: SID:ORACLE_HOME:Y|N
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y

將末尾 N 改為 Y,標記該實例允許自啟動。

2. 修改 $ORACLE_HOME/bin/dbstart — 修正監聽器 ORACLE_HOME

# 找到行:
ORACLE_HOME_LISTNER=$ORACLE_HOME
# 確保指向正確的 ORACLE_HOME (通常無需改動,若多 Home 需顯式指定)

3. 編輯 /etc/rc.d/rc.local — 掛載自啟動腳本

#!/bin/bash
# 自啟動腳本需可執行權限
chmod +x /etc/rc.d/rc.local

cat >> /etc/rc.d/rc.local <<'EOF'
su - oracle -c "/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart"
su - oracle -c "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start"
EOF

驗證與排錯

  • ls -l /etc/rc.d/rc.local 確認可執行位 (x)
  • systemctl status rc-local (CentOS 7+) 確認服務啟用
  • 重啟機器後檢查:ps -ef | grep pmon、lsnrctl status

進階:Systemd 服務化 (推薦 CentOS 7+)

cat > /etc/systemd/system/oracle-db.service <<'EOF'
[Unit]
Description=Oracle Database & Listener Auto Start
After=network.target syslog.target

[Service]
Type=forking
User=oracle
Group=oinstall
Environment=ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
Environment=ORACLE_SID=orcl
ExecStart=/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
ExecStop=/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbshut
TimeoutSec=300

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable oracle-db
systemctl start oracle-db

優勢:依賴管理、日誌集中 (journalctl)、啟動超時控制、狀態查詢標準化。

環境變量落地建議

在 /home/oracle/.bash_profile 統一定義:

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

自啟動腳本通過 su - oracle -c 會加載該 Profile,保證環境一致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved