正確的啟動/關閉順序能確保 Oracle 資料庫實例、監聽器、Enterprise Manager 等元件一致性啟動與優雅關閉,避免資料損壞或連線中斷。本文提供 Linux/Unix 環境下的標準 SOP,並說明各步驟用途。
啟動監聽器 (Listener) — 監聽連接埠 1521
$ lsnrctl start
啟動資料庫實例
$ sqlplus / as sysdba
SQL> STARTUP
$ORACLE_SID 指定的實例。export ORACLE_SID=ctaudit 再執行上述指令。啟動管理服務 (視安裝元件而定)
$ emctl start dbconsole # Enterprise Manager Database Console (埠 1158/5500)
$ isqlplusctl start # iSQL*Plus (埠 5560,11g 已棄用)
停止管理服務 (先關 Web 管理層,避免管理操作殘留交易)
$ emctl stop dbconsole
$ isqlplusctl stop
停止監聽器 (切斷新連線,讓現有工作階段自然結束)
$ lsnrctl stop
關閉資料庫實例
$ sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE
IMMEDIATE:不等待使用者結束交易、回滾未提交交易、關閉資料庫、卸載實例 — 生產環境標準關閉模式。NORMAL (等待所有使用者斷線)、TRANSACTIONAL (等待進行中交易提交)、ABORT (緊急強制關閉,下次啟動需執行執行個體復原)。| 情境 | 建議動作 |
|---|---|
| 例行維護窗口 | 依序執行完整關閉 → 維護作業 → 完整啟動 |
| 緊急修補 OS 核心 | SHUTDOWN ABORT → OS 修補 → STARTUP (自動執行執行個體復原) |
| 僅重啟實例 (不動 OS) | SHUTDOWN IMMEDIATE → STARTUP (監聽器可保持運行) |
| RAC 環境 | 使用 srvctl stop/start database -d <db_name> 管理叢集資源 |
#!/bin/bash
# check_oracle_status.sh
echo "=== Listener ==="; lsnrctl status | grep -E "STATUS|Alias"
echo "=== Instance ==="; sqlplus -s / as sysdba <
遵循「先啟監聽、後啟實例、最後啟管理;關閉時反向操作」原則,並善用 SHUTDOWN IMMEDIATE 確保交易一致性,即可建立穩定可靠的 Oracle 運維流程。