實踐!Oracle 11g 數據庫級別最佳參數優化
在 Oracle 11g 安裝并建庫后,為使數據庫穩定、高效運行,可進行以下調整:
(一)針對 RAC 數據庫的參數調整
1. 設置 `parallel_force_local=true`,將并行的 slave 進程限制在發起并行 SQL 的會話所在節點,避免跨節點并行產生性能問題,取代之前版本的相關參數設置。
2. 設置 `_gc_policy_time=0` 和 `_gc_undo_affinity=false`,關閉 RAC 的 DRM 特性和 Read-mostly Locking 新特性,防止系統性能不穩定或數據庫掛起、實例宕掉。若節點 CPU 數量不同導致推導的 lms 進程數量不一樣,需手工設置 `gcs_server_processes` 參數,使所有節點的 lms 進程數相同。
(二)RAC 數據庫和非 RAC 數據庫都適用的參數調整
1. 關閉 11g 的 adaptive cursor sharing、cardinality feedback 等特性,避免 SQL 性能不穩定和子游標過多問題,可設置相關參數如 `_optimizer_adaptive_cursor_sharing=false`等。
2. 設置 `deferred_segment_creation=false`,關閉段延遲創建特性,避免相關 BUG。
3. 設置兩個事件 `10949 trace name context forever,level 1` 和 `28401 trace name context forever,level 1`,分別關閉自動 serial direct path read 特性和用戶持續輸入錯誤密碼時的延遲用戶驗證特性,避免過多直接路徑讀和大量等待。
4. 設置 `resource_limit=true` 和 `resource_manager_plan='force:'`,強制設置資源管理計劃為“空”,避免 Oracle 自動打開維護窗口帶來的資源不足或 BUG。
5. 設置 `_undo_autotune=false`,關閉 UNDO 表空間自動調整功能,防止 UNDO 表空間利用率過高或段爭用問題。
6. 設置 `_optimizer_null_aware_antijoin=false`,關閉優化器的 null aware antijoin 特性以避免新特性帶來的 BUG。
7. 設置 `_px_use_large_pool=true`,使并行會話使用 large pool,避免并行過多時 shared pool 不足導致的 ORA - 4031 錯誤。
8. 考慮關閉審計,設置 `audit_trail=none`,避免審計占用 SYSTEM 表空間過多。
9. 設置 `_partition_large_extents=false` 和 `_index_partition_large_extents=false`,避免新建分區時初始占用空間過大。
10. 設置 `_use_adaptive_log_file_sync=false`,恢復到 10g 及之前版本的 LGWR 通知方式。
11. 設置 `_memory_imm_mode_without_autosga=false`,關閉手工管理內存方式下可能的自動調整內存行為。
12. 設置 `enable_ddl_logging=true`,將 ddl 語句記錄在 alert 日志中,便于故障排查(適用于 OLTP 系統)。
13. 設置 `parallel_max_servers=64`(OLTP 系統可設置小一些,避免過多并行對系統造成沖擊)。
14. 設置 `sec_case_sensitive_logon=false`,避免在升級時因密碼大小寫問題導致應用連接不上。
15. 設置 `_b_tree_bitmap_plans=false`,對于 OLTP 系統避免某些 SQL 的高邏輯讀問題,使用復合索引從根本上解決。
(三)其他調整
1. 調整 DEFAULT PROFILE,設置 `PASSWORD_GRACE_TIME`、`PASSWORD_LIFE_TIME`、`PASSWORD_LOCK_TIME`、`FAILED_LOGIN_ATTEMPTS`為 UNLIMITED,避免用戶因登錄失敗被鎖影響業務。
2. 關閉一些不需要的維護任務,如執行 `dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB')` 和 `dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB')`。
3. 若采用手工收集統計信息策略,可關閉自動統計信息收集任務,如執行 `DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto optimizer stats collection', operation => NULL, window_name => NULL)`。
4. 可在數據庫全局級關閉直方圖收集以減少統計信息收集時間和避免 SQL 執行計劃不穩定,如執行 `exec DBMS_STATS.SET_GLOBAL_PREFS('method_opt','FOR ALL COLUMNS SIZE 1')` 或 `exec DBMS_STATS.SET_PARAM('method_opt','FOR ALL COLUMNS SIZE 1')`。
5. 關閉自動空間 Advisor、自動 SQL 調整 Advisor,避免消耗過多資源和出現 library cache lock,如執行 `DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto space advisor', operation => NULL, window_name => NULL)` 和 `DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'sql tuning advisor', operation => NULL, window_name => NULL)`。
6. 調整時間窗口,如執行 `EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE('SATURDAY_WINDOW','repeat_interval','freq=daily;byday=SAT;byhour=22;byminute=0;bysecond=0')` 等語句,調整周六和周日窗口的起止時間和長度,避免影響業務性能。
浙公網安備 33010602011771號