Health Monitor

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Health Monitor as PDF for free.

More details

  • Words: 1,267
  • Pages: 9
Database 기술문서 by Oradori Health Monitor

Health Monitor Oracle Database 11g에는 Database에 대한 점검을 위한 framework로 Health Monitor를 제공된다. 이는 심각한 문제가 발견되면 자동으로 수행하여 발견된 내용을 ADR에 저장하고 이를 Data Recovery Advisor에 제공하여 Data Recovery Advisor이 그 정보를 이용하여 Report를 생성하거나 문제를 해결 하는 정보를 제공하게끔 한다. 또 수동으로 수행하여 Proactive하게 점검을 수행할 수 있다. Health Check(or Checker or Check) Database의 Health에 대한 점검을 수행하거나 오라클의 다른 구성 요소에 대한 점검을 수행하는 프 로시저를 일컬는다. 다음의 2가지 방식으로 수행이 될 수 있다. z

Reactive 방식 심각한 문제 발생후 Database가 자동으로 수행하는 방식 z Manual 방식 유저가 여러 방식을 사용하여 직접 수행하는 방식 수행 모드는 다음의 2가지 모드로 수행이 가능하다 z z

DB-online(Database 상태가 mount 이거나 open 상태에서 수행 가능) DB-offline(Database 상태가 nomount 상태)

Health Check 종류 Health Check의 종류는 V$HM_CHECK view를 통해서 조회가 가능하다. 이중에 INTERNAL_CHECK의 값이 N인 것이 Health Check의 종류로 실직적으로 사용이 가능한 것들이다. OFFLINE_CAPABLE의 값 이 Y인 경우 DB-offline에서 가능한 항목이고 N인 경우 DB-online에서 가능한 항목이다. ORCL2> SET LINESIZE 200 ORCL2> COL DESCRIPTION FOR A48 ORCL2> COL NAME FOR A30 ORCL2> ORCL2> SELECT ID 2 ,NAME 3 ,CLSID 4 ,CLS_NAME 5 ,INTERNAL_CHECK 6 ,OFFLINE_CAPABLE 7 ,DESCRIPTION 8 FROM V$HM_CHECK 9 WHERE INTERNAL_CHECK = 'N'; ID NAME CLSID CLS_NAME I O DESCRIPTION -- ------------------------------ ----- --------------- - - --------------------------------------2 DB Structure Integrity Check 2 PERSISTENT_DATA N Y Checks integrity of all database files

Blog http://blog.naver.com/ecross Cafe http://cafe.naver.com/dbknowlege

3 4 10 11 24

Data Block Integrity Check Redo Integrity Check Transaction Integrity Check Undo Segment Integrity Check Dictionary Integrity Check

2 2 2 2 2

PERSISTENT_DATA PERSISTENT_DATA PERSISTENT_DATA PERSISTENT_DATA PERSISTENT_DATA

N N N N N

Y Y N N N

Checks Checks Checks Checks Checks

integrity of a datafile block integrity of redo log content a transaction for corruptions integrity of an undo segment dictionary integrity

6 rows selected.

Elapsed: 00:00:00.00 ORCL2>

z

z

z

z

z z

DB Structure Integrity Check Database file들의 정합성을 점검한다. 문제가 있다면 해당 문제를 report한다. Database가 online 상태면 control file에 기록되어 있는 log file, data file을 체크하고 nomount 상태이면 control file을 체크하여 문제의 발생 유무를 체크함 Data Block Integrity Check V$database_block_corruption 뷰를 참조하여 블록의 체크섬, head/tail mismatch, 논리적 일 관성등을 체크하여 문제가 발생한 경우 Block Media Recovery를 수행한다. 그러나 이는 블록 단위에서만 진행이 되고 블록간 혹은 세크먼트간의 corruption에 대해서는 체크가 불가능하다. Redo Integrity Check Archive log와 redo log의 내용을 scan하고 corruption과 같은 문제가 있을 시 해당 문제에 대한 report를 한다 Undo Segment Integrity Check logical undo corruption을 체크한다. 만약 corruption이 발견되면 PMON과 SMON이 해당 트 랜잭션을 복구한다. 만약 복구가 실패하면 Health Monotor는 V$corrupt_xid_list를 참조하여 정보를 기록하고 해당 트랜잭션들을 강제로 commit한다. Transaction Integrity Check Undo Segment Integrity Check와 달리 특정 개별 트랜잭션에 대해서만 동작한다. Dictionary Integrity Check Core Dictionary object에 대한 정합성 검사를 수행한다. 각 dictionary object의 내용을 점검 하고, 각 object의 logical constraint도 점검하며 relationship도 점검한다. 대상 Core dictionary object는 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$, and ecol$ 등 이다.

Health Check 수행 방법 DBMS_HM 사용 ORCL2> exec dbms_hm.run_check('DB Structure Integrity Check','my_run') PL/SQL procedure successfully completed. Elapsed: 00:00:00.16 ORCL2> run_check 프로시저는 아래와 같은 description을 가지고 있다. PROCEDURE RUN_CHECK Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------CHECK_NAME VARCHAR2 IN RUN_NAME VARCHAR2 IN DEFAULT TIMEOUT NUMBER IN DEFAULT INPUT_PARAMS VARCHAR2 IN DEFAULT 수행을 위해 여러 파라미터가 사용이 된다. 사용되는 파라미터들에

대한

정보는

Blog http://blog.naver.com/ecross Cafe http://cafe.naver.com/dbknowlege

V$HM_CHECK_PARAM View를 통해 정보를 얻을 수 있다. 또한 아래 쿼리를 통해 얻을 수 있다. ORCL2> COL CHECK_NAME FOR A30 ORCL2> COL PARAMETER_NAME FOR A15 ORCL2> COL DEFAULT_VALUE FOR A17 ORCL2> COL TYPE FOR A15 ORCL2> COL DESCRIPTION FOR A40 ORCL2> SELECT C.NAME CHECK_NAME 2 ,P.NAME PARAMETER_NAME 3 ,P.TYPE 4 ,P.DEFAULT_VALUE 5 ,P.DESCRIPTION 6 FROM V$HM_CHECK_PARAM P 7 ,V$HM_CHECK C 8 WHERE P.CHECK_ID = C.ID 9 AND C.INTERNAL_CHECK = 'N' 10 ORDER BY C.NAME; CHECK_NAME ----------------------------------------------------Data Block Integrity Check number Data Block Integrity Check Dictionary Integrity Check Dictionary Integrity Check Redo Integrity Check latest good redo (if known) Transaction Integrity Check Undo Segment Integrity Check Number

PARAMETER_NAME TYPE DEFAULT_VALUE DESCRIPTION --------------- --------------- ----------------- ---------------BLC_DF_NUM

DBKH_PARAM_UB4

Block Data File

BLC_BL_NUM CHECK_MASK TABLE_NAME SCN_TEXT

DBKH_PARAM_UB4 DBKH_PARAM_TEXT ALL DBKH_PARAM_TEXT ALL_CORE_TABLES DBKH_PARAM_TEXT 0

Datablock number Check Mask Table Name SCN of the

TXN_ID USN NUMBER

DBKH_PARAM_TEXT DBKH_PARAM_TEXT

Transaction ID Undo Segment

7 rows selected. Elapsed: 00:00:00.00 ORCL2> EM 사용

관련 링크중 중앙 권고자 클릭

검사기 탭 클릭

Blog http://blog.naver.com/ecross Cafe http://cafe.naver.com/dbknowlege

DB 구조 무결성 검사 클릭

이름을 채워주고 파라미터 세팅이 필요할 시 관련 파라미터 세팅 후 실행 클릭

Blog http://blog.naver.com/ecross Cafe http://cafe.naver.com/dbknowlege

리스트에서 수행 여부 확인 결과 확인 방법 adrci 사용 adrci를 통해 확인이 가능하다. oracle@ORCL: /home/oracle/script> adrci ADRCI: Release 11.1.0.7.0 - Production on Mon May 11 07:47:02 2009 Copyright (c) 1982, 2007, Oracle. All rights reserved. ADR base = "/u01/app/oracle" adrci> show hm_run -p "RUN_NAME like 'my_run%'" ADR Home = /u01/app/oracle/diag/clients/user_oracle/host_2310821773_11: ************************************************************************* 0 rows fetched ADR Home = /u01/app/oracle/diag/rdbms/orcl/ORCL: ************************************************************************* ********************************************************** HM RUN RECORD 1 ********************************************************** RUN_ID 441 RUN_NAME my_run CHECK_NAME DB Structure Integrity Check NAME_ID 2 MODE 0 START_TIME 2009-05-11 07:29:06.398564 +09:00 RESUME_TIME END_TIME 2009-05-11 07:29:06.470643 +09:00 MODIFIED_TIME 2009-05-11 07:29:06.470643 +09: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 461 RUN_NAME my_run_em CHECK_NAME DB Structure Integrity Check NAME_ID 2 MODE 0 START_TIME 2009-05-11 07:41:27.076686 +09:00

Blog http://blog.naver.com/ecross Cafe http://cafe.naver.com/dbknowlege

RESUME_TIME END_TIME MODIFIED_TIME TIMEOUT FLAGS STATUS SRC_INCIDENT_ID NUM_INCIDENTS ERR_NUMBER REPORT_FILE 2 rows fetched

2009-05-11 07:41:27.096015 +09:00 2009-05-11 07:41:27.096015 +09:00 0 0 5 0 0 0

adrci> Report를 통해 볼 때는 xml 형태로 지원이 된다 또한 사전에 report를 생성해야 한다. 예제는 ADR Home이 여러 개이기 때문에 에러 발생하기 때문에 Home을 지정해 주는 과정이 포함되어 있다. adrci> create report hm_run my_run DIA-48448: This command does not support multiple ADR homes adrci> show home ADR Homes: diag/clients/user_oracle/host_2310821773_11 diag/rdbms/orcl/ORCL diag/tnslsnr/oracle/listener adrci> set home diag/rdbms/orcl/ORCL adrci> create report hm_run my_run adrci> show report hm_run my_run <TITLE>HM Report: my_run DB Structure Integrity Check 441 my_run MANUAL COMPLETED 0 <SOURCE_INCIDENT_ID>0 0 2009-05-11 07:29:06.398564 +09:00 2009-05-11 07:29:06.470643 +09:00 adrci> DBMS_HM SQL> SQL> SQL> SQL> SQL> 2

SET LONG 100000 SET LONGCHUNKSIZE 1000 SET PAGESIZE 1000 SET LINESIZE 512 SELECT DBMS_HM.GET_RUN_REPORT ('my_run') FROM DUAL;

Blog http://blog.naver.com/ecross Cafe http://cafe.naver.com/dbknowlege

DBMS_HM.GET_RUN_REPORT('MY_RUN') --------------------------------------------------------------------------------------Basic Run Information Run Name : my_run Run Id : 441 Check Name : DB Structure Integrity Check Mode : MANUAL Status : COMPLETED Start Time : 2009-05-11 07:29:06.398564 +09:00 End Time : 2009-05-11 07:29:06.470643 +09:00 Error Encountered : 0 Source Incident Id : 0 Number of Incidents Created : 0 Input Paramters for the Run Run Findings And Recommendations SQL> -- 다른 방법 SQL> var v_hm_report clob SQL> begin 2 :v_hm_report := dbms_hm.get_run_report('my_run'); 3 end; 4 / PL/SQL procedure successfully completed. SQL> set long 100000 SQL> set pages 0 SQL> print v_hm_report Basic Run Information Run Name Run Id Check Name Mode Status Start Time End Time Error Encountered Source Incident Id Number of Incidents Created

: : : : : : : : : :

my_run 441 DB Structure Integrity Check MANUAL COMPLETED 2009-05-11 07:29:06.398564 +09:00 2009-05-11 07:29:06.470643 +09:00 0 0 0

Input Paramters for the Run Run Findings And Recommendations

SQL> EM 사용 관련 링크의 중앙 권고자를 클릭 검사기 탭을 클릭 검사기 실행 결과에서 해당 이름의 결과 라디오 버튼을 선택하고 세부 정보 클릭

Blog http://blog.naver.com/ecross Cafe http://cafe.naver.com/dbknowlege

실행 탭 클릭

내용을 확인 후 보고서 보기 클릭

Report 보기

Blog http://blog.naver.com/ecross Cafe http://cafe.naver.com/dbknowlege

Health Monitor View 다음의 View을 Health Monitor를 위해서 사용이 가능하다. V$HM_CHECK V$HM_CHECK_PARAM V$HM_RUN V$HM_INFO V$HM_FINDING V$HM_RECOMMENDATION

Blog http://blog.naver.com/ecross Cafe http://cafe.naver.com/dbknowlege

Related Documents

Health Monitor
May 2020 8
Monitor
May 2020 23
Monitor
October 2019 45
Monitor
November 2019 31
Monitor
November 2019 33