注:本文來源於 【美】 Sam Alapati , Darl Kuhn , Bill Padfield 著 朱浩波 翻譯 《Oracle Database 12C 性能優化攻略》一書。
源碼下載:oracle-db-12c-perf-tuning-recipes-master.zip
一:優化表性能
1:創建具有優化性能的數據庫
2:創建具有最優性能的表空間安
3:匹配表類型與業務需求
4:選擇有益於性能的表特性
5:恰當選擇數據類型
6:在創建數據表時避免盤區分配延遲
7:數據加載速度最大化
8:高效移除表中的數據
9:顯示自動顧問建議
10:手工生成段顧問建議
11:自動發送段顧問輸出點電子郵件
12:重建跨多個數據塊的數據行
13:檢測行鏈接和行遷移
14:區分行遷移和行鏈接
15:積極預防行遷移/行鏈接的產生
16:檢測表中未使用的空間
17:追蹤檢測到位於高水位線下的空間
18:使用DBWS_SPACE來檢測於高水位線之下的空間
19:釋放未使用的表存儲空間
20:壓縮數據以進行直接路徑加載
21:為所有的DML操作壓縮數據
22:在列級壓縮數據
二:選擇和優化索引
1:理解B樹索引
2:選擇需要建立索引的列
3:創建主鍵約束和索引
4:確保唯一列值
5:為 外鍵列創建索引
7:決定何時使用組合索引
8:實現基於函數的索引
9:在虛擬列上創建索引
10:在多個進程並行插入時限制索引爭奪
11:觸發索引對優化器的可見性
12:創建支持星型架構額位圖索引
13:創建位圖連接索引
14:創建索引組織表
15:監控索引使用
16:索引創建速度最大化
17:回收未使用的索引空間
三:優化實例內存
1:自動內存管理
2:關聯多個緩沖池
3:設定內存最小值
4:監控內存調整操作
5:優化內存使用
6:調優PGA內存分配
7:配置服務器查詢緩存
8:管理服務器結果緩存
9:緩存SQL查詢結果
10:緩存客戶端結果集
11:緩存PL/SQL函數結果
12:配置Oracle數據庫智能閃存緩存
13:調節重做日志緩沖區
14:限制PGA內存分配
四:監控系統性能
1: 實現AWR
2:修改統計信息時間間隔和保存期限
3:手工生成AWR報表
4:通過企業管理器生成一份AWR報告
5:為一條SQL生成AWR基線
6:為數據庫創建統計基線
7:通過企業管理器關聯AWR基線
8:管理AWR統計信息庫
9:自動創建AWR基線
10:快速分析AWR輸出
11:手工獲取活動會話信息
12:從企業管理器中獲取ASH信息
13:從數據字典中獲取ASH信息
五:最小化系統資源爭奪
1:理解響應時間
2:確定引起最多等待的SQL語句
3:分析等待事件
4:理解等待事件的分類
5:檢查會話等待
6:按類型檢查等待事件
7:解決緩沖區忙等待
8:解決日志文件同步等待
9:被另一個會話讀取等待事件的最小化
10:減少直接路徑讀取等待事件
11:恢復寫入器等待最小化
12:找出誰持有阻塞鎖
13:確定被阻塞和引起阻塞的會話
14:處理引起的阻塞的鎖
15:確定被鎖定的對象
16:解決enq:TM鎖資源爭奪
17:確定最近被鎖住的會話
18:分析數據庫中最近的等待事件
19:確定由於鎖定所花費等待時間
20:鎖存器爭奪的最小化
六:分析操作系統性能
1:檢測磁盤空間問題
2:確定系統瓶頸
3:確定消耗服務器資源最多的進程
4:檢測CPU瓶頸
5:確定CPU和內存瓶頸
6:確定I/O瓶頸
7:檢測網絡密集型進程
8:將一個資源密集型進程映射到一個數據庫進程
9:終止一個資源密集型進程
七:檢修數據庫
1:確定最優的撤銷保留時間
2:找出是什么消耗最多的撤銷空間
3:解決ORA_01555錯誤
4:監控臨時表空間使用率
5:確定是誰在使用臨時表空間
6:解決”無法擴展臨時數據段”錯誤
7:解決打開游標錯誤
8:解決被掛起的數據庫問題
9:激活自動診斷庫命令解釋器
10:從ADRCI中查看報警日志
11:使用ADRCI查看事件
12:將事件打包發給Oracle技術指出團隊
13:運行一次數據庫健康檢查
14:創建SQL測試用例
15:生成一份AWR報告
16:比較兩階段的數據庫性能
17:分析一份AWR報告
八:創建高效的SQL
1:獲取一張表中的所有數據行
2:獲取一張表中的部分數據行
3:通過想到對應的行來連接表
4:在沒有相對應數據行的情況下連接表
5:構造簡單的子查詢
6:構建相關子查詢
7:比較2個表找出缺失的數據行
8:關聯2個表找出匹配的數據行
9:將相似SELECT 語句結果集合並
10:查找一定范圍內的值
11:處理空值
12:搜索部分列值
13:重用共享池中的SQL語句
14:避免偶然的全表掃描
15:創建高效的臨時表
16:避免使用NOT 子句
17:控制事務大小
九:SQL手工調優
1:顯示查詢的執行計划
2:定制執行計划輸出
3:圖形化顯示執行計划
4:解讀一份執行計划
5:監控運行時較長的SQL語句
6:確定當前正在執行的好占資源的SQL語句
7:查看當前正在運行的SQL語句的統計信息
8:監控一個SQL執行計划的處理過程
9:確定過去執行的SQL語句中最耗占資源的語句
10:比較系統修改后的SQL 性能
十:追蹤SQL執行
1: 環境准備
2:在追蹤一個特定的SQL語句
3:在你所擁有的會話中啟用追蹤
4:找到追蹤文件
5:檢查原始SQL追蹤文件
6:分析Oracle追蹤文件
7:使用TKPROF 設置追蹤文件的格式
8:使用TKPROF輸出
9:使用Oracle追蹤分析器分析追蹤文件
10:追蹤一個並行查詢
11:追蹤特定的並行查詢進程
12:在RAC系統中追蹤並行查詢
13:合並多個追蹤文件
14:找出正確的回話來進行追蹤
15:追蹤一個SQL會話
16:通過進程ID來追蹤會話
17:追蹤多個會話
18:追蹤一個實例或數據庫
19:為會話生成事件10046追蹤
20:為實例生成10046追蹤
21:在一個正在運行的會話上設置追蹤
22:登錄之后啟用會話追蹤
23:追蹤優化的執行路徑
24:生成Oracle錯誤自動追蹤
25:追蹤后台進程
26:啟用Oracle 監聽器追蹤
27:為數據衛士設置歸檔追蹤
十一:SQL自動調優
1. 顯示自動SQL調優工作詳細信息
2.顯示sql自動調優建議
3.生成SQL腳本實現自動調優建議
4.修改SQL自動調優特性
5.禁用和啟用SQL自動調優
6.修改維護窗口
7.創建SQL調優集對象
8.查看AWR中資源秘籍集型SQL語句
9.用AWR中高資源消耗的SQL來填充優化集
10.查看內存中資源密集型SQL語句
11.用內存中高資源消耗SQL來填充調優集
12.將內存中所有的SQL來填充調優集
13.顯示SQL調優集的內容
14.有選擇地從SQL調優集中刪除語句
15.傳輸SQL調優集
16.創建調優任務
17.手工運行SQL調優顧問
18.從數據庫自動診斷監視器中獲取SQL調優建議
十二:執行計划優化與一致性
1:創建並接受SQL概要文件
2:確認某個查詢是否使用了SQL概要文件
3:自動接受SQL概要文件
4:顯示SQL概要文件
5:選擇性測試SQL概要文件
6:將SQL概要文件遷移到另外一個數據庫中
7:禁用SQL概要文件
8:刪除SQL概要文件
9:為內存中的一條SQL語句創建計划基線
10:為包含SQL調優集中的SQL語句創建計划基線
11:自動增加計划基線
12:修改計划基線
13:確認是否存在計划基線
14:確認某個查詢是否使用了計划基線
15:顯示計划基線執行計划
16:手工在計划基線中加入一個新的計划(擴展)
17:阻止自動接受新的低成本執行計划
18:禁用計划基線
19:移除計划基線信息
20:遷移計划基線
十三:優化配置
1:選擇器優化目標
2:啟用統計信息自動收集
3:為統計信息收集設置首選參數
4:手工生成統計信息
5:鎖定統計信息
6:處理統計信息的缺失
7:導出統計信息
8:還原以前版本的統計信息
9:收集系統統計信息
10:驗證新的統計信息
11:強制優化使用某個索引
12:啟用查詢優化器特性
13:阻止數據庫創建柱形圖
14:不使用綁定定量提高性能
15:理解自適應游標共享
16:在表達式上創建統計信息
17:為相關列創建統計信息
18:自動創建列組
19:維護分區表統計信息
20:為大表並行收集統計信息
21:確定統計信息何時過期
22:預覽統計信息收集對象
十四:實現查詢提示
1:編寫一個提示
2:改變訪問路徑
3:改變連接順序
4:改變連接方法
5:改變優化器版本
6:在快速響應和整體優化之間進行選擇
7:進行直接路徑插入
8:在視圖中加入提示
9:緩存查詢結果
10:將分布式查詢引導到一個特定的數據庫
十五:並行執行SQL
1:為特定查詢啟用並行
2:在創建對象時啟用並行
3:為已經存在的對象啟用並行
4:實現並行DML
5:並行創建表
6:並行創建索引
7:並行重建索引
8:並行移動分區
9:並行拆分分區
10:啟用自動解釋計划
11:檢查並行解釋計划
12:監控並行操作
13:找出並行進程中的瓶頸