環境切換
su - oracle # 載入 .profile 環境變數(關鍵!)
# su oracle # 不載入 .profile,易導致環境變數缺失
監聽器管理
| 操作 | 指令 | 說明 |
| 啟動 | lsnrctl start啟動預設 LISTENER |
| 停止 | lsnrctl stop正常關閉 |
| 狀態 | lsnrctl status查看端點、服務註冊狀態 |
| 重載 | lsnrctl reload熱加載設定變更 |
資料庫啟動/關閉
SQL*Plus 互動式
sqlplus "/ as sysdba"
-- 顯示 Connected to an idle instance.
SQL> startup
-- 依序輸出:Instance started / Database mounted / Database opened.
SQL> exit
單行指令模式(適合腳本)
# 啟動
dbstart
# 關閉(正常模式,等待會話結束)
dbshut
# 關閉(立即模式,回滾未提交交易、斷開會話)
sqlplus "/ as sysdba" <
進程檢查
# 查看 Oracle 背景進程
ps -ef | grep ora_
# 典型輸出範例
oracle 688322 1 0 15:06:20 ? 0:00 ora_smon_bxmis
oracle 729224 1 0 15:06:20 ? 0:00 ora_dbw0_bxmis
oracle 745618 1 0 15:06:20 ? 0:00 ora_reco_bxmis
oracle 770216 1 0 15:06:20 ? 0:00 ora_ckpt_bxmis
oracle 778394 1 0 15:06:20 ? 0:00 ora_pmon_bxmis
oracle 843876 1 0 15:06:20 ? 0:00 ora_qmn0_bxmis
oracle 901342 1 0 15:06:20 ? 0:00 ora_lgwr_bxmis
oracle 925704 1 0 15:06:20 ? 0:00 ora_cjq0_bxmis
# 查看監聽進程
ps -ef | grep lsnr
關鍵進程對照表
| 進程前綴 | 全名 | 核心職責 |
| ora_pmon | Process Monitor | 清理失敗進程資源 |
| ora_smon | System Monitor | 執行個體恢復、整理暫存段 |
| ora_dbw | Database Writer | 寫髒塊至資料檔 |
| ora_lgwr | Log Writer | 寫重做日誌至線上日誌檔 |
| ora_ckpt | Checkpoint | 更新檔案標頭檢查點資訊 |
| ora_reco | Recoverer | 解決分散式交易失敗 |
| ora_qmn | Queue Monitor | 管理 Advanced Queuing |
| ora_cjq | Coordinator Job Queue | 協調 DBMS_JOB/DBMS_SCHEDULER |
常用驗證指令
sqlplus -v:確認 Client 版本。
tnsping <service_name>:測試網路連通性與服務註冊。
lsnrctl services:查看已註冊服務與處理器狀態。
cat $ORACLE_HOME/dbs/alert_$ORACLE_SID.log:查看告警日誌(Solaris 預設路徑)。
最佳實踐提醒
- 永遠使用
su - oracle 切換環境,避免 ORACLE_HOME/LD_LIBRARY_PATH 缺失導致 ORA-12547 等錯誤。
- 關閉資料庫優先用
shutdown immediate,避免 shutdown abort 導致啟動時需執行執行個體恢復。
- 定期備份
spfile/init.ora、listener.ora、tnsnames.ora 至異地。
- 建立個人操作手冊,記錄各環境 SID、路徑、關鍵參數,應急時可秒級定位。
熟練掌握上述指令,是 Solaris 上 Oracle DBA 日常巡檢與應急處理的基本功。