ITPub博客

首页 > 数据库 > Oracle > [20160223]检查redo日志的完整性.txt

[20160223]检查redo日志的完整性.txt

Oracle 作者:dbhelper 时间:2016-02-25 12:30:19 0 删除 编辑

[20160223]检查redo日志的完整性.txt

--在论坛里问的问题:
http://www.itpub.net/thread-2053302-1-1.html

1.直接检查dump logfile 后面加入参数validate。

SYS@book> @ &r/logfile
GROUP# THREAD# SEQUENCE#       BYTES BLOCKSIZE MEMBERS ARC STATUS     FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME           GROUP# STATUS     TYPE       MEMBER                        IS_
------ ------- --------- ----------- --------- ------- --- ---------- ------------- ------------------- ------------ ------------------- ------ ---------- ---------- ----------------------------- ---
     1       1       382    52428800       512       1 YES INACTIVE      1.3223E+10 2016-02-22 11:09:33   1.3223E+10 2016-02-22 22:00:13      1            ONLINE     /mnt/ramdisk/book/redo01.log  NO
     2       1       383    52428800       512       1 YES INACTIVE      1.3223E+10 2016-02-22 22:00:13   1.3223E+10 2016-02-22 22:36:19      2            ONLINE     /mnt/ramdisk/book/redo02.log  NO
     3       1       384    52428800       512       1 NO  CURRENT       1.3223E+10 2016-02-22 22:36:19   2.8147E+14                          3            ONLINE     /mnt/ramdisk/book/redo03.log  NO

SYS@book> alter system dump logfile '/mnt/ramdisk/book/redo03.log' validate;
System altered.

2.使用DBMS_HM包:

BEGIN
   DBMS_HM.RUN_CHECK
   (
      check_name   => 'Redo Integrity Check'
     ,run_name     => 'redo_check'
     ,input_params => 'SCN_TEXT=0'
   );
END;
/

--可以加入scn_text 表示从某个scn开始。

SYS@book> select dbms_hm.get_run_report('redo_check') from dual;
DBMS_HM.GET_RUN_REPORT('REDO_CHECK')
-----------------------------------------------------------------
Basic Run Information
Run Name                     : redo_check
Run Id                       : 4221
Check Name                   : Redo Integrity Check
Mode                         : MANUAL
Status                       : COMPLETED
Start Time                   : 2016-02-23 11:31:10.753766 +08:00
End Time                     : 2016-02-23 11:31:12.387839 +08:00
Error Encountered            : 0
Source Incident Id           : 0
Number of Incidents Created  : 0
Input Paramters for the Run
SCN_TEXT=0
Run Findings And Recommendations

--如何删除,仅仅知道使用adrci:
adrci> show hm_run -p "RUN_ID=4261"
ADR Home = /u01/app/oracle/diag/rdbms/book/book:
*************************************************************************
**********************************************************
HM RUN RECORD 1
**********************************************************
   RUN_ID                        4261
   RUN_NAME                      redo_check1
   CHECK_NAME                    Redo Integrity Check
   NAME_ID                       4
   MODE                          0
   START_TIME                    2016-02-23 11:34:27.605690 +08:00
   RESUME_TIME                   <NULL>
   END_TIME                      2016-02-23 11:34:29.116844 +08:00
   MODIFIED_TIME                 2016-02-23 11:34:35.227078 +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/book/book/hm/HMREPORT_redo_check1.hm
1 rows fetched

adrci> select * from HM_RUN where run_id=4261;

ADR Home = /u01/app/oracle/diag/rdbms/book/book:
*************************************************************************
RUN_ID RUN_NAME     CHECK_NAME           NAME_ID  MODE  START_TIME                        RESUME_TIME END_TIME                          MODIFIED_TIME                     TIMEOUT FLAGS STATUS SRC_INCIDENT_ID NUM_INCIDENTS ERR_NUMBER REPORT_FILE
------ ------------ -------------------- -------- ----- --------------------------------- ----------- --------------------------------- --------------------------------- ------- ----- ------ --------------- ------------- ---------- ----------------------------------------------------------------
4261   redo_check1  Redo Integrity Check 4        0     2016-02-23 11:34:27.605690 +08:00             2016-02-23 11:34:29.116844 +08:00 2016-02-23 11:34:35.227078 +08:00 0       0     5      0               0             0          /u01/app/oracle/diag/rdbms/book/book/hm/HMREPORT_redo_check1.hm
1 rows fetched

adrci> delete  from HM_RUN where run_id=4261;
1 Row Deleted

adrci> commit ;
Transaction Committed

adrci> select * from HM_RUN where run_id=4261;
ADR Home = /u01/app/oracle/diag/rdbms/book/book:
*************************************************************************
0 rows fetched

3. 使用rman的validate:

RMAN> validate archivelog sequence 4830;

Starting validate at 2016-02-23 14:50:18
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
channel ORA_DISK_1: starting validation of archived log
channel ORA_DISK_1: specifying archived log(s) for validation
input archived log thread=1 sequence=4830 RECID=1626 STAMP=904574667
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Archived Logs
=====================
Thrd Seq     Status Blocks Failing Blocks Examined Name
---- ------- ------ -------------- --------------- ---------------
1    4830    OK     0              67              /u01/app/oracle11g/archivelog/1_4830_798551880.dbf
Finished validate at 2016-02-23 14:50:21

--理论讲这个不能对redo 的STATUS=CURRENT验证。不过可以作为一种补充方式。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8494287/viewspace-1994329/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-10-14

  • 博文量
    651
  • 访问量
    280683