一、首先使用DBMS_REPAIR.ADMIN_TABLES来建立repair table和orphan key table,
并且为repair table和orphan key tables提供管理功能
SQL> @adminCreate
SQL> connect sys/<PASSWORD>
Connected.
SQL>
SQL> -- Repair Table
SQL>
SQL> declare
2 begin
3 -- create repair table
4 dbms_repair.admin_tables (
5 -- table_name => 'REPAIR_TABLE',
6 table_type => dbms_repair.repair_table,
7 action => dbms_repair.create_action,
8 tablespace => 'USERS'); -- 如果是使用SYS用户的缺省表空间,该项就不用指定
9 end;
10 /
PL/SQL procedure successfully completed.
我们查询dba_objects,可以看到如下结果:
SQL> select owner, object_name, object_type
2 from dba_objects
3 where object_name like '%REPAIR_TABLE';
OWNER OBJECT_NAME OBJECT_TYPE
------------------------------------------------------------------
SYS DBA_REPAIR_TABLE VIEW
SYS REPAIR_TABLE TABLE
SQL>
SQL> -- Orphan Key Table
SQL>
SQL> declare
2 begin
3 -- Create orphan key table
4 dbms_repair.admin_tables (
5 table_type => dbms_repair.orphan_table,
6 action => dbms_repair.create_action,
7 tablespace => 'USERS'); -- 如果是使用SYS用户的缺省表空间,该项就不用指定
8 end;
9 /
PL/SQL procedure successfully completed.
我们查询dba_objects,可以看到如下结果:
SQL> select owner, object_name, object_type
2 from dba_objects
3 where object_name like '%ORPHAN_KEY_TABLE';
OWNER OBJECT_NAME OBJECT_TYPE
------------------------------------------------------------------
SYS DBA_ORPHAN_KEY_TABLE VIEW
SYS ORPHAN_KEY_TABLE TABLE
二、使用DBMS_REPAIR.CHECK_OBJECT进行检测
CHECK_OBJECT procedure检查指定的object,并且将关于损坏和修补的指导信息装入Repair Table。它将效验指定object中所有块的一致性。而在此之前已标识的块就会被跳过。
SQL> @checkObject
SQL> set serveroutput on
SQL>
SQL> declare
2 rpr_count int;
3 begin
4 rpr_count := 0;
5 dbms_repair.check_object (
6 schema_name => 'SYSTEM',
7 object_name => 'T1',
8 repair_table_name => 'REPAIR_TABLE',
9 corrupt_count => rpr_count);
10 dbms_output.put_line('repair count: ' || to_char(rpr_count));
11 end;
12 /
repair count: 1
PL/SQL procedure successfully completed.
repair_table的结构如下:
SQL> desc repair_table
Name Null? Type
----------------------------------------- -------- ----------------------------
OBJECT_ID NOT NULL NUMBER
TABLESPACE_ID NOT NULL NUMBER
RELATIVE_FILE_ID NOT NULL NUMBER
BLOCK_ID NOT NULL NUMBER
CORRUPT_TYPE NOT NULL NUMBER
SCHEMA_NAME NOT NULL VARCHAR2(30)
OBJECT_NAME NOT NULL VARCHAR2(30)
BASEOBJECT_NAME VARCHAR2(30)
PARTITION_NAME VARCHAR2(30)
CORRUPT_DESCRIPTION VARCHAR2(2000)
REPAIR_DESCRIPTION VARCHAR2(200)
MARKED_CORRUPT NOT NULL VARCHAR2(10)
CHECK_TIMESTAMP NOT NULL DATE
FIX_TIMESTAMP DATE
REFORMAT_TIMESTAMP DATE
相关专题
- RAID——磁盘阵列基础 (434篇文章)
- 数据库专栏 (5318篇文章)
- 数据库处理专题 (9029篇文章)
- 城域网专题 (8033篇文章)
- 数据库安全技术专题 (13549篇文章)
- 数据库安装与卸载 (10825篇文章)
- Oracle 10g基础应用 (4644篇文章)
- Linux数据库宝典 (13854篇文章)
- 服务器存储 (686篇文章)
- 数据库相关文章 (5318篇文章)
- Oracle数据库中关键字 (67次浏览)
- 深入讲解“database link”的设置和使用 (31次浏览)
- 甲骨文:从手机功能变化看数据库性能扩展 (27次浏览)
- Windows环境中同时安装Oracle9i 10g和11g (25次浏览)
- 测量磁盘I/O (21次浏览)
- 带你深入了解Oracle数据库的进制转换 (17次浏览)
- 教你快速掌握如何使用“Opatch”打补丁 (16次浏览)
- 详细讲解Oracle表分区的相关概念及其优点 (16次浏览)
- 讲解Oracle中JOB与存储过程的接合用法 (15次浏览)
- Oracle 10G 新特性--透明数据加密技术 (15次浏览)



