第9 章、Oracle 10g 中的效能管理
第9 章、Oracle 10g 中的效能管理
1. 資料庫統計
l 時間模型統計:
時間模型相關的檢視有:v$sess_time_model 和v$sys_time_model ,其中DB_TIME 是最重要的時間模型統計,他等於所有會話CPU 時間和等待時間的總和。其中不包括Idle 類的等待。
時間模型的父子關係:
u 後臺時間 > 後臺CPU 時間。
u DB 時間 > DB CPU 、連結管理時間、序列載入時間、sql 執行時間、解析時間、PL/SQL 執行時間、inbound PL/SQL rpc 時間、PL/SQL 編譯時間、Java 執行時間。
u 解析時間 > 硬解析時間、失敗的解析時間。
u 硬解析時間 > 硬解析(共享標準)時間 > 硬解析(繫結不匹配)時間。
u 失敗的解析時間 > 失敗的解析(超出共享記憶體)時間
l 等待模型統計:
l 作業系統統計:Oracle 捕獲OS 資訊並記錄在v$osstat 檢視中。
l 附加的SQL 統計:
l 資料庫度量:
在效能診斷中,v$ 檢視中統計值的改動比例(度量)比積累值更重要,Oracle 提供了度量資訊的檢視:v$sysmetric 、v$sessmetric 、v$metricname 、v$filemetric 、v$eventmetric 、v$waitclassmetric …
2. 新的後臺程式
l Oracle 10g 中新增兩個後臺程式:MMON 、MMNL 。
1. MMON :(Manageablility Monitor )負責各種可管理性任務,例如指定時間間隔內各種統計資訊的快照,MMON 可產生多個從屬程式執行任務。
2. MMNL :(Manageablility Monitor - Lightweight )負責計算各種度量,並且獲得每秒活動會話的快照。
3. AWR (Automatic Workload Repository )
l 在Oracle 10g 中,AWR 使用MMON 程式收集資訊,每隔60min 一次,收集的資訊儲存在sys 模式中的WRI_ (Workload Repository Internal )、WRH_ (Workload Repository Historical )、WRM_ (Workload Repository Metadata )開頭的表中,通過DBA_HIST_ 開頭的檢視來訪問這些表。
l 可以通過EM 訪問AWR 資訊,或者使用dbms_workload_repository 程式包手工管理AWR 。
l 修改快照設定(引數的單位都是min ):
前面的dbms_workload_repository省略。
.modify_snapshot_settings(interval=>30,retention=>15*1440);
其中:interval 必須是10 分鐘到100 年之間的數。但如果設為0 ,則表示禁用快照機制,此時為此引數設定一個巨大數(41050 天)。Retention 必須是1天到100 年之間的數。如果設為0 ,則表示永久儲存,此時使用引數40150 天。
可以從dba_hist_wr_control 中檢視引數的設定。
l 建立快照,可以使用過程或函式:
使用過程:exec .create_snapshot();
使用函式:select .create_snapshot( ‘ALL ’) from dual;
函式返回值是建立的snapshot 的id ,可選引數ALL 、TYPICAL 控制快照級別(flush_level )。
l 刪除快照,必須提供開始快照和結束快照:
Exec .drop_snapshot_range(low_snap_id=>111,high_snap_id=>222);
使用dba_hist_snapshot 可以列出所有的快照資訊。
l 建立基線,必須提供開始和結束的快照號,以及基線名:
使用過程:Exec .create_baseline(start_snap_id=>111,end_snap_id=>222, baseline_name=> ’xxx ’);
使用函式:select .create_baseline(111,222, ’xxx ’) from dual;
函式的返回值是基線的編號,基線存在期間,其內部的快照一直被儲存。
l 刪除基線:exec .drop_baseline( ‘xxx ’,true);
其中:’xxx ’表示基線的名稱,true 表示級聯刪除基線包含的snapshot 。
4. ASH (Active Session History )
l ASH 資訊由v$active_session_history 檢視可以檢視,ASH 的歷史資訊由AWR 寫入到資料檔案中,可以從dba_hist_active_sess_history 檢視。V$active_session_history 取樣的是當前一段時間內的資訊,dba_hist_active_sess_history 是對此資訊的進一步採集,其基表是WRH$_ACTIVE_SESSION_HISTORY 預設此表一小時重新整理一次。
l ASH 在記憶體中的緩衝區大小計算公式為:
ASH Buffer=max(min(cpu_count*2M,5%*shared_pool_size,30M),1M)
簡化:ASH Buffer=min(cpu_count*2M,5%*shared_pool_size,30M)
l ASH 相關引數都是隱含引數,使用前必須注意:
1) _ash_enable :控制是否開啟ASH ,如果false ,則禁用ASH 。
2) _ash_disk_write_enable :是否將磁碟資訊寫入AWR 資訊庫,如果false ,則不儲存歷史ASH 資訊。
3) _ash_size :控制ASH 緩衝區的大小。
l 訪問ASH 在記憶體中資訊時,也是需要獲取解析等相關的鎖存器的,如果存在相關鎖存器的等待,那麼就不能用SQL 語句來訪問ASH 資訊了,此時可以使用ASHDUMP ,將ASH資訊轉儲成追蹤檔案(要sysdba 身份):
Oradebug setmypid
Oradebug unlimit
Oradebug dump ashdump 10
Oradebug tracefile_name
l 或者使用alter session 命令達到同樣的目的:
Alter session set event ‘immediate trace name ashdump,level 10 ’;
5. ADDM (Automatic Database Diagnostic Monitor ,自動資料庫診斷監視器)
l ADDM 推薦的解決方法主要是為了獲取較低的DB 時間。
l 初始化引數statistics_level 必須被設定為typical (預設)、all ,來啟用ADDM ,如果設定為basic ,則禁用ADDM 和其他許多功能。
l 還有引數dbio_expected ,此引數不是初始引數,而是ADDM 任務引數,表示讀取單個資料塊的平均時間,其設定過程為:
l exec dbms_advisor.set_default_task_parameter
(‘ADDM ’,’DBIO_EXPECTED ’,30000);
此時dbio_expected=30000 微秒(30 毫秒),這是速度比較慢的磁碟。
可以從dba_advisor_def_parameters 檢視此引數的資訊。
l 可以使用EM 或者DBMS_ADVISOR 包或者addmrpt.sql 指令碼來生成ADDM 報告,生成報告的使用者必須具有advisor 許可權。
l 使用DBMS_ADVISOR 程式包的具體步驟:
1) 使用create_task 過程建立任務
2) 使用set_task_parameter 設定start_snapshot 和end_snapshot 引數。
3) 使用execute_task 執行任務
4) 使用get_task_report 獲取任務報告。
l ADDM 相關的檢視:
Dba_advisor_findings/log/rationale/recommendations/tasks
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24465008/viewspace-688097/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE9I升級到10G(zt)Oracle
- 第9章 CSS3中的變形與動畫(下)CSSS3動畫
- 第 9 節:工程管理
- 第8 章過程管理
- 第9章使用Scikit-Learn呼叫Keras的模型Keras模型
- 第9章 建立聯盟區塊鏈區塊鏈
- Oracle 10g(10.1.0.2)中的OPTIMIZER_INDEX_COST_ADJ(轉)Oracle 10gIndex
- Oracle 資料庫 10g中的分割槽功能(轉)Oracle資料庫
- 第8,9,10,11,12章-類整理
- oracle 10g flashback databaseOracle 10gDatabase
- 《父與子的程式設計之旅(第3版)》第9章習題答案程式設計
- 第1章 Oracle資料庫簡介-RMOracle資料庫
- 第1章 Oracle資料庫簡介-DBMSOracle資料庫
- 【JS 口袋書】第 9 章:使用 JS 操作 HTML 元素JSHTML
- Oracle 10g 下載地址Oracle 10g
- oracle 10G特性之awrOracle 10g
- Scheduler in Oracle Database 10g(轉)OracleDatabase
- 第10章節-Python3.5-Django建立App9PythonDjangoAPP
- Oracle 9i, 10g, and 11g RAC on Linux所需要的Hangcheck-Timer Module介紹OracleLinuxGC
- ISO 映象安裝oracle 10gOracle 10g
- Oracle 10g RAC故障處理Oracle 10g
- Oracle 10g 增刪節點Oracle 10g
- Oracle中exists和in的效能差異Oracle
- 關於Oracle 10g ASM磁碟大小的限制Oracle 10gASM
- 5~9章
- shell第9-10章NFS_SMB_Apache_FTP伺服器NFSApacheFTP伺服器
- Oralce 入門教程:Oracle Database 9i 10g 11g程式設計藝術 深入資料庫體系結構 第2版OracleDatabase程式設計資料庫
- oracle 10g建立資料庫鏈的簡化Oracle 10g資料庫
- 第1章 DevOps的理想dev
- 資料庫管理-第221期 Oracle的高可用-04(20240717)資料庫Oracle
- Coursera 機器學習 第9章(上) Anomaly Detection 學習筆記機器學習筆記
- Oracle 10g expdp attach引數體驗Oracle 10g
- 《微服務架構設計模式》讀書筆記 | 第9章 微服務架構中的測試策略(上)微服務架構設計模式筆記
- 第 13 章 StringTable
- 第1章 引言
- mORMot 1.18 第08章 Delphi中的伺服器端JavaScriptORM伺服器JavaScript
- Java 第9 章 : 資料表與簡單Java類對映轉換Java
- windows2008R2安裝oracle 10gWindowsOracle 10g
- Oracle 10g RAC 資料儲存更換Oracle 10g