点击上方“IT那活儿”,关注后了解更多精彩内容!!!
01
坏块概述
02
坏块检测
2.1 RMAN 工具





2.2 DBV工具
dbv help=yDBVERIFY: Release 12.2.0.1.0 - Production on Tue Jan 19 17:24:26 2021Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.Keyword Description (Default)----------------------------------------------------FILE File to Verify (NONE)START Start Block (First Block of File)END End Block (Last Block of File)BLOCKSIZE Logical Block Size (8192)LOGFILE Output Log (NONE)FEEDBACK Display Progress (0)PARFILE Parameter File (NONE)USERID Username/Password (NONE)SEGMENT_ID Segment ID (tsn.relfile.block) (NONE)HIGH_SCN Highest Block SCN To Verify (NONE)(scn_wrap.scn_base OR scn)
dbv file=+DATADG/xxx/DATAFILE/system.1135.1061813741 blocksize=8192 USERID=sys/xxxx logfile=system.1135.1061813741.1.log






2.3 EXP/EXPDP检测


2.4 ANALYZE命令



03
坏块修复
3.1 RMAN工具



RECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19;RECOVER CORRUPTION LIST;(V$DATABASE_BLOCK_CORRUPTION)

By default, RMAN first searches for good blocks in the real-time query physical standby database, then flashback logs and then blocks in full or level 0 incremental backups.<https://docs.oracle.com/database/121/BRADV/rcmblock.htm#BRADV89782>
3.2 EXPDP


3.3 DBMS_REPAIR
REM Create the repair table in a given tablespace:BEGIN DBMS_REPAIR.ADMIN_TABLES ( TABLE_NAME => 'REPAIR_TABLE', TABLE_TYPE => dbms_repair.repair_table, ACTION => dbms_repair.create_action, TABLESPACE => '&tablespace_name');END;/REM Identify corrupted blocks for schema.object (it also can be done at partition level with parameter PARTITION_NAME):set serveroutput onDECLARE num_corrupt INT;BEGIN num_corrupt := 0; DBMS_REPAIR.CHECK_OBJECT ( SCHEMA_NAME => '&schema_name', OBJECT_NAME => '&object_name', REPAIR_TABLE_NAME => 'REPAIR_TABLE', corrupt_count => num_corrupt); DBMS_OUTPUT.PUT_LINE('number corrupt: ' || TO_CHAR (num_corrupt));END;/REM Optionally display any corrupted block identified by check_object:select BLOCK_ID, CORRUPT_TYPE, CORRUPT_DESCRIPTIONfrom REPAIR_TABLE;REM Mark the identified blocks as corruptedDECLARE num_fix INT;BEGIN num_fix := 0; DBMS_REPAIR.FIX_CORRUPT_BLOCKS ( SCHEMA_NAME => '&schema_name', OBJECT_NAME=> '&object_name', OBJECT_TYPE => dbms_repair.table_object, REPAIR_TABLE_NAME => 'REPAIR_TABLE', FIX_COUNT=> num_fix); DBMS_OUTPUT.PUT_LINE('num fix: ' || to_char(num_fix));END;/REM Allow future DML statements to skip the corrupted blocks:BEGIN DBMS_REPAIR.SKIP_CORRUPT_BLOCKS ( SCHEMA_NAME => '&schema_name', OBJECT_NAME => '&object_name', OBJECT_TYPE => dbms_repair.table_object, FLAGS => dbms_repair.SKIP_FLAG);END;/


3.4 Event 10231
alter system set events='10231 trace name context forever,level 10’;
alter system set events='10231 trace name context off';


3.5 特殊情况


04
总 结

本 文 原 创 来 源:IT那活儿微信公众号(上海新炬王翦团队)


文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




