oracle 11g health monitor健康監控
health monitor健康監控
從oracle 11g開始,oracle資料庫包含對資料庫執行診斷檢查的健康監控框架
health check健康檢查是對資料庫的各層和元件乾地檢查.健康檢查會檢測檔案錯誤,物理和邏輯塊錯誤,undo和redo錯誤,資料字典錯誤等等.健康檢查會生成一個檢查報告在許多情況下包含了問題解決的建議.健康檢查有兩種執行方式:
.reactive---故障診斷架構為了響應一個嚴重錯誤會自動執行健康檢查.
.manual-----作為一個dba,可以使用dbms_hm包或企業管理器介面來手工執行健康檢查.
健康檢查會儲存調查結果,建議並在ADR中儲存其它的資訊
健康檢查能以以下兩種方式來執行:
DB-online模式意味著當資料庫處於開啟狀態(open或mount)時可以執行健康檢查
DB-offline模式意味著當例項不可用且資料庫處於關閉狀態(nomount)時也能執行健康檢查
所有的健康檢查都能在DB-online模式下執行.只有重做日誌完整性檢查和資料庫結構完整檢查可以在DB-offline模式下執行.
健康檢查的型別
健康監控執行以下檢查:
DB Structure Integrity Check(資料庫結構完整性檢查)--這種檢查驗證資料檔案的完整性,如果這些檔案不能訪問,檔案錯誤
或者不一致時會報告這些錯誤資訊.如果資料庫在mount或者open狀態,這種檢查會檢查控制檔案中所列出的重做日誌檔案和資料檔案.如果資料庫在nomount狀態,只會檢查控制檔案.
Data Block Integrity Check(資料塊完整性檢查)--這種檢查會檢查磁碟映象塊錯誤比如checksum故障,head/tail mismatch和資料塊的邏輯不一致性.大多數的錯誤可以透過使用block media recovery來進行修復.錯誤塊資訊也會被v$database_block_corruption檢視所捕獲.這種檢查不會檢測inter-block或inter-segment錯誤.
Redo Integrity Check(重做完整性檢查)--這種檢查將會掃描重做日誌內容的可訪問性和錯誤資訊,也能對歸檔日誌檔案進行檢查.
這種檢查會報告歸檔日誌或重做日誌的錯誤資訊.
Undo Segment Integrity Check(回滾段完整性檢查)--這種檢查會發現邏輯undo錯誤.在定位一個undo錯誤之後,這種檢查將使用PMON和SMON來嘗試恢復這個錯誤事務.如果恢復失敗,health monitor將會儲存關於這個錯誤的資訊到v$corrupt_xid_list中.大多數undo錯誤都可以透過強制提交來解決.
Transaction Interity Check--這種檢查與undo segment integrity check是相同的只是它只檢查一特定的事務.
Dictionary Integrity Check--這種檢查會檢查核心字典物件比如tab$或col$的完整性.它將執行以下操作:
.驗證每一個字典物件的字典條目內容
.執行cross-row級別的檢查.它將對字典中的行強制執行邏輯約束驗證
.執行物件的關係檢查,它將在字典物件之間強制執行父子關係驗證
Dictionary Integrity Check操作會檢查以下字典物件:
tab$, clu$, fet$, uet$, seg$, undo$, ts$, file$, obj$, ind$, icol$, col$, user$,
con$, cdef$, ccol$, bootstrap$, objauth$, ugroup$, tsq$, syn$, view$, typed_
view$, superobj$, seq$, lob$, coltype$, subcoltype$, ntab$, refcon$, opqtype$,
dependency$, access$, viewcon$, icoldep$, dual$, sysauth$, objpriv$, defrole$,ecol$.
手工執行health check
健康監控提供了兩種方式來手工執行健康檢查:
.使用dbms_hm包
.使用企業管理器介面
使用dbms_hm來執行健康檢查
dbms_hm包中有一個run_check過程用來執行健康檢查.為了呼叫run_check需要提供檢查的名稱和執行的名字比如:
SQL> exec dbms_hm.run_check('Dictionary Integrity Check','jy_dict_run'); PL/SQL procedure successfully completed.
為了獲得一個健康檢查名稱列表執行以下查詢:
SQL> select name from v$hm_check where internal_check='N'; NAME ---------------------------------------------------------------- DB Structure Integrity Check CF Block Integrity Check Data Block Integrity Check Redo Integrity Check Transaction Integrity Check Undo Segment Integrity Check Dictionary Integrity Check ASM Allocation Check
大多數的健康檢查接受輸入引數.可以透過查詢v$hm_check_param來檢視引數名和描述.一些引數是強制性的其它的是可選的.
如果一個可選引數被忽略將會使用預設值.下面的查詢將會顯示所有健康檢查的引數資訊:
SQL> SELECT c.name check_name, p.name parameter_name, p.type, 2 p.default_value, p.description 3 FROM v$hm_check_param p, v$hm_check c 4 WHERE p.check_id = c.id and c.internal_check = 'N' 5 ORDER BY c.name; CHECK_NAME PARAMETER_NAME TYPE DEFAULT_VALUE DESCRIPTION -------------------------------- -------------------- -------------------- ---------------- ------------------------------ ASM Allocation Check ASM_DISK_GRP_NAME DBKH_PARAM_TEXT ASM 組名 CF Block Integrity Check CF_BL_NUM DBKH_PARAM_UB4 控制檔案塊號 Data Block Integrity Check BLC_DF_NUM DBKH_PARAM_UB4 檔案號 Data Block Integrity Check BLC_BL_NUM DBKH_PARAM_UB4 塊號 Dictionary Integrity Check CHECK_MASK DBKH_PARAM_TEXT ALL 檢查掩碼 Dictionary Integrity Check TABLE_NAME DBKH_PARAM_TEXT ALL_CORE_TABLES 表名 Redo Integrity Check SCN_TEXT DBKH_PARAM_TEXT 0 最新良好重做的 SCN (如果已知) Transaction Integrity Check TXN_ID DBKH_PARAM_TEXT 事務處理 ID Undo Segment Integrity Check USN_NUMBER DBKH_PARAM_TEXT 還原段號
輸入引數透過input_params引數以name/value對用分號來分隔進行傳遞.下面的例子用事務ID作為引數進行事務完整性檢查:
SQL>BEGIN DBMS_HM.RUN_CHECK ( check_name => 'Transaction Integrity Check', run_name => 'my_trans_run', input_params => 'TXN_ID=8.31.4'); END; / PL/SQL procedure successfully completed.
檢視檢查報告
在一個檢查執行完後可以檢視它的執行報告.這個可報告包括了調查結果,建議和其它的資訊.也可以使用企業管理器,ADRCI工具,或者
dbms_hm包.其中企業管理器檢視的報告格式為html,dbms_hm包檢視的報告格式為html,xml和text,檢查DRCL工個檢視報告的格式為XML
檢查執行的結果被儲存在ADR,但報告不會立即生成.當你請求檢視報告時可以使用dbms_hm或企業管理器來生成.如果報告不存在,首先
得用ADR中的檢查結果資料來生成並以xml或html格式來儲存.如果使用ADRCI工具如果報告檔案不存必須首先執行命令來生成報告檔案然後執行其它的命令來顯示它的內容.
使用dbms_hm來檢視檢查報告
使用dbms_hm.get_run_report函式可以檢視健康檢查報告.這個函式可以以html,xml或text格式來顯示.預設格式為text:
SQL> SET LONG 100000 SQL> SET LONGCHUNKSIZE 1000 SQL> SET PAGESIZE 1000 SQL> SET LINESIZE 512 SQL> select dbms_hm.get_run_report('jy_dict_run') from dual; DBMS_HM.GET_RUN_REPORT('JY_DICT_RUN') -------------------------------------------------------------------------------- Run Name : JY_DICT_RUN Run Id : 1061 Check Name : Data Block Integrity Check Mode : REACTIVE Status : COMPLETED Start Time : 2007-05-12 22:11:02.032292 -07:00 End Time : 2007-05-12 22:11:20.835135 -07:00 Error Encountered : 0 Source Incident Id : 7418 Number of Incidents Created : 0 Input Paramters for the Run BLC_DF_NUM=1 BLC_BL_NUM=64349 Run Findings And Recommendations Finding Finding Name : Media Block Corruption Finding ID : 1065 Type : FAILURE Status : OPEN Priority : HIGH Message : Block 64349 in datafile 1: '/u01/app/oracle/dbs/t_db1.f' is media corrupt Message : Object BMRTEST1 owned by SYS might be unavailable Finding Finding Name : Media Block Corruption Finding ID : 1071 Type : FAILURE Status : OPEN Priority : HIGH Message : Block 64351 in datafile 1: '/u01/app/oracle/dbs/t_db1.f' is media corrupt Message : Object BMRTEST2 owned by SYS might be unavailable
使用ADRCI工具來檢視檢查報告
1.確保作業系統環境變數(比如 ORACLE_HOME)已經被設定.並輸入以下命令:
[oracle@jyrac1 ~]$ adrci ADRCI: Release 11.2.0.1.0 - Production on Wed Jun 11 17:18:53 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. ADR base = "/u01/app/oracle"
工具啟動後會顯示以下提示符
adrci>
可以改變當前的ADR home目錄.使用show homes命令可以列出所有的ADR home目錄,set homepath命令用來改變當前ADR home目錄.
adrci> show homes ADR Homes: diag/tnslsnr/jyrac1/listener diag/rdbms/cs/cs diag/rdbms/jytest/jytest diag/rdbms/jy/jy diag/rdbms/jycs/jycs adrci> set homepath diag/rdbms/jycs/jycs
2.輸入以下命令:
show hm_run
這個命令會列出所有執行過並(儲存在v$hm_run)註冊到ADR檔案庫中的檢查
adrci> show hm_run ADR Home = /u01/app/oracle/diag/tnslsnr/jyrac1/listener: ************************************************************************* 0 rows fetchedADR Home = /u01/app/oracle/diag/rdbms/cs/cs: ************************************************************************* 0 rows fetched ADR Home = /u01/app/oracle/diag/rdbms/jytest/jytest: ************************************************************************* 0 rows fetched ADR Home = /u01/app/oracle/diag/rdbms/jy/jy: ************************************************************************* 0 rows fetched ADR Home = /u01/app/oracle/diag/rdbms/jycs/jycs: ************************************************************************* ********************************************************** HM RUN RECORD 1 ********************************************************** RUN_ID 1 RUN_NAME HM_RUN_1 CHECK_NAME DB Structure Integrity Check NAME_ID 2 MODE 2 START_TIME 2014-03-24 13:32:58.872509 +08:00 RESUME_TIME END_TIME 2014-03-24 13:33:01.710518 +08:00 MODIFIED_TIME 2014-03-24 13:33:01.710518 +08:00 TIMEOUT 0 FLAGS 0 STATUS 5 SRC_INCIDENT_ID 0 NUM_INCIDENTS 0 ERR_NUMBER 0 REPORT_FILE ********************************************************** HM RUN RECORD 2 ********************************************************** RUN_ID 61 RUN_NAME HM_RUN_61 CHECK_NAME DB Structure Integrity Check NAME_ID 2 MODE 2 START_TIME 2014-04-08 10:22:43.295203 +08:00 RESUME_TIME END_TIME 2014-04-08 10:22:43.723241 +08:00 MODIFIED_TIME 2014-04-08 10:22:43.723241 +08:00 TIMEOUT 0 FLAGS 0 STATUS 5 SRC_INCIDENT_ID 0 NUM_INCIDENTS 0 ERR_NUMBER 0 REPORT_FILE ********************************************************** HM RUN RECORD 3 ********************************************************** RUN_ID 81 RUN_NAME jy_dict_run CHECK_NAME Dictionary Integrity Check NAME_ID 24 MODE 0 START_TIME 2014-06-11 16:42:00.675293 +08:00 RESUME_TIME END_TIME 2014-06-11 16:42:02.950141 +08:00 MODIFIED_TIME 2014-06-11 17:14:33.658642 +08:00 TIMEOUT 0 FLAGS 0 STATUS 5 SRC_INCIDENT_ID 0 NUM_INCIDENTS 0 ERR_NUMBER 0 REPORT_FILE /u01/app/oracle/diag/rdbms/jycs/jycs/hm/HMREPORT_jy_dict_run.hm
3.定位你要建立報告的檢查並注意檢查執行的名稱.如果檢查報告已經存在那麼report_file欄位就會包含一個檔名比如上面的
/u01/app/oracle/diag/rdbms/jycs/jycs/hm/HMREPORT_jy_dict_run.hm.否則使用下面的命令來生成一個報告.
adrci> create report hm_run jy_dict_run_1 DIA-48448: This command does not support multiple ADR homes
這是因為當前存在多個ADR home目錄
adrci> show homes ADR Homes: diag/tnslsnr/jyrac1/listener diag/rdbms/cs/cs diag/rdbms/jytest/jytest diag/rdbms/jy/jy diag/rdbms/jycs/jycs adrci> set homepath diag/rdbms/jycs/jycs adrci> create report hm_run jy_dict_run_1
4.執行以下命令來檢視報告:
adrci> show report hm_run jy_dict_run_1 < ?xml version="1.0" encoding="US-ASCII"?>HM Report: jy_dict_run_1Dictionary Integrity Check 101 jy_dict_run_1 MANUAL COMPLETED 0 0 0 2014-06-11 17:27:13.477462 +08:00 2014-06-11 17:27:14.734166 +08:00 TABLE_NAME=ALL_CORE_TABLES CHECK_MASK=ALL
health monitor檢視
可以用檢視來代替檢查報告來檢視特定檢查的結果.可用的檢視有v$hm_run,v$hm_finding,v$hm_recommendation
下面查詢v$hm_run來判斷執行檢查的確良歷史資訊:
SQL> SELECT run_id, name, check_name, run_mode, src_incident FROM v$hm_run; RUN_ID NAME CHECK_NAME RUN_MODE SRC_INCIDENT ---------- -------------------------------- -------------------------------- -------- ------------ 61 HM_RUN_61 DB Structure Integrity Check REACTIVE 0 81 jy_dict_run Dictionary Integrity Check MANUAL 0 101 jy_dict_run_1 Dictionary Integrity Check MANUAL 0 1 HM_RUN_1 DB Structure Integrity Check REACTIVE 0
下面查詢v$hm_finding來獲得RUN_ID 61的詳細資訊:
SELECT type, description FROM v$hm_finding WHERE run_id = 61; TYPE DESCRIPTION ------------- ----------------------------------------------------------------------------- FAILURE Block 64349 in datafile 1: '/u01/app/oracle/dbs/t_db1.f' is media corrupt FAILURE Block 64351 in datafile 1: '/u01/app/oracle/dbs/t_db1.f' is media corrupt
health check引數
Table 9–6 Parameters for Data Block Integrity Check ------------------------------------------------------------------------------------------------------------------ Parameter Name Type Default Value Description ------------------------------------------------------------------------------------------------------------------ BLC_DF_NUM Number (none) Block datafile number BLC_BL_NUM Number (none) Data block number ------------------------------------------------------------------------------------------------------------------ Table 9–7 Parameters for Redo Integrity Check ------------------------------------------------------------------------------------------------------------------ Parameter Name Type Default Value Description ------------------------------------------------------------------------------------------------------------------ SCN_TEXT Text 0 SCN of the latest good redo (if known) ------------------------------------------------------------------------------------------------------------------ Table 9–8 Parameters for Undo Segment Integrity Check ------------------------------------------------------------------------------------------------------------------ Parameter Name Type Default Value Description ------------------------------------------------------------------------------------------------------------------ USN_NUMBER Text (none) Undo segment number ------------------------------------------------------------------------------------------------------------------ Table 9–9 Parameters for Transaction Integrity Check ------------------------------------------------------------------------------------------------------------------ Parameter Name Type Default Value Description ------------------------------------------------------------------------------------------------------------------ TXN_ID Text (none) Transaction ID ------------------------------------------------------------------------------------------------------------------ Table 9–10 Parameters for Dictionary Integrity Check ------------------------------------------------------------------------------------------------------------------ Parameter Name Type Default Value Description ------------------------------------------------------------------------------------------------------------------ CHECK_MASK Text ALL Possible values are: COLUMN_CHECKS—Run column checks only. Verify column-level constraints in the core tables. ROW_CHECKS—Run row checks only. Verify row-level constraints in the core tables. REFERENTIAL_CHECKS—Run referential checks only. Verify referential constraints in the core tables. ALL—Run all checks. TABLE_NAME Text ALL_CORE_TABLES Name of a single core table to check. If omitted, all core tables are checked. ------------------------------------------------------------------------------------------------------------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-1180769/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g Health MonitorOracle
- Health Monitor 健康檢查
- 11g New Feature: Health monitor
- Health Monitor簡介
- Check_oracle_health之增加監控會話數Oracle會話
- 11g New Feature: Health monitor (Doc ID 466920.1)
- 11g_Health_Monitor
- Nagios主動監控oracle資料庫check_oracle_healthiOSOracle資料庫
- Verilog 監控 Monitor
- [20190306]11g health monitor.txt
- oracle 11g監控SQL指令碼OracleSQL指令碼
- Oracle11g使用sql_monitor實時監控sqlOracleSQL
- 網速監控軟體 Traffic Monitor
- 【RAC】11gR2 新特性:Oracle Cluster Health Monitor(CHM)簡介Oracle
- Process Monitor監控目錄 - 監控檔案被哪個程式操作了
- upptime:使用GitHub Actions監控你的網站健康監控Github網站
- 微服務:指標和健康監控微服務指標
- Oracle EBS Applications 11i Health Check(健康檢查11項)OracleAPP
- 醬油DBA奉獻ORACLE資料庫監控健康指令碼(一)Oracle資料庫指令碼
- 使用Asp.net 2.0內建的健康狀態監聽器(health monitoring)ASP.NET
- SpringBoot整合Actuator進行健康監控Spring Boot
- Spring Boot 揭祕與實戰(九) 應用監控篇 - HTTP 健康監控Spring BootHTTP
- StartUp Health:健康行業年中投資報告行業
- Oracle索引的監控Oracle索引
- oracle監控軟體Oracle
- oracle 長sql監控OracleSQL
- Oracle常用監控SQLOracleSQL
- oracle 監控指令碼Oracle指令碼
- Airpods Battery Monitor Mac(AirPods電池監控器)AIBATMac
- linux_系統資源監控指令碼_system_monitorLinux指令碼
- web server apache tomcat11-21-monitor and management 監控與管理WebServerApacheTomcat
- Battery Health 3 for Mac(電池健康管理工具)BATMac
- 11g R2新特徵:oracle cluster health moniter (CHM) 簡介特徵Oracle
- PostgreSQL實時健康監控大屏-低頻指標SQL指標
- 10-SpringBoot 工程的健康監控實現Spring Boot
- 來聊聊react-native應用的健康監控React
- ORAchk Health Checks for the Oracle StackOracle
- Easy-Monitor 2.0: 開啟你的 Node.js 核心效能監控Node.js