Oracle 9i 引入的里程碑式特性,在於允許 DBA 在實例運行期間動態修改幾乎所有效能參數。這意味著系統全局區域(SGA)的各項組件——資料庫緩衝區、共用池、大池、Java 池以及 PGA 彙總目標——均可即時擴縮,無需重啟資料庫。這為解決突發性能瓶頸、應對可預測的負載波動提供了強大武器。
典型場景:日間 OLTP 高併發、夜間 DSS 大量掃描。兩種負載對 SGA 結構需求截然不同。DBA 可透過作業排程器預先部署切換腳本。
常用工具:
範例腳本(切換至 DSS 模式):
#!/bin/ksh
ORACLE_SID=$1; export ORACLE_SID
ORACLE_HOME=`grep ^$ORACLE_SID: /etc/oratab | cut -f2 -d:`
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH; export PATH
$ORACLE_HOME/bin/sqlplus -s /nolog <<!
connect / as sysdba
alter system set db_cache_size=1500m;
alter system set shared_pool_size=500m;
alter system set pga_aggregate_target=4000m;
exit
!
隔日清晨再執行對應腳本切回 OLTP 模式,實現「零停機」模式切換。
收集歷史效能指標(如每小時、每週的緩衝區命中率 BHR),發現週期性資源短缺,提前注入記憶體資源——類似「準即時生產」的供應鏈邏輯。

圖A:每日各小時緩衝區命中率趨勢
圖A 顯示凌晨 2-3 點及晚間 8-9 點出現周期性緩衝區短缺。DBA 可排程在這兩個時段動態增大 db_cache_size 緩解壓力。

圖B:每週緩衝區命中率趨勢
圖B 揭示週一、週五命中率明顯偏低,針對性調大緩衝區即可修正。長週期趨勢圖是 DBA 挖掘隱性效能模式的金礦。
DBMS_SCHEDULER 與 PL/SQL 邏輯,實現「監測-決策-執行」閉環。