1)使用SQL*Plus,作为用户SYSTEM连接至数据库。
2)创建表空间NEW_TAB。在Unix系统中需要使用下面的命令:
SQL> create tablespace new_tbs datafile '/oracle/oradata/new_tbs.dbf' size 2m;
在Windows系统中则需要使用下面的命令:
SQL> create tablespace new_tbs datafile '\oracle\oradata\new_tbs.dbf' size 2m;
3)在新创建的表空间内创建一个表,并且标识该表占用的数据块以及所属的文件。
SQL> create table new_tab tablespace new_tbs as select * from all_users;
SQL> select extent_id,file_id,block_id,blocks from dba_extents where wner='SYSTEM' and segment_name='NEW_TAB';
EXTENT_ID FILE_ID BLOCK_ID BLOCKS
------------------ ---------------------- --------------------- -----------------
0 9 9 8
在上面的示例中,这个表只具有一个区间extent_id 0,该区间位于文件号为9的新数据文件内。这个区间从块号9开始,并且大小为8个数据块。实际练习的结果可能与此有所出入。
4)作为用户SYS连接至数据库,并且使用DBMS_REPAIR程序包创建修复表(新建表名称必须具有前缀“REPAIR_”)。
SQL> exec dbms_repair.admin_tables(-
table_name=>'REPAIR_TABLE',-
table_type=>dbms_repair.repair_table,-
action=>dbms_repair.creat_action,-
tablespace=>'NEW_TBS');
5)检查NEW_TAB表是否存在讹误
SQL> declare num_corrupt int;
2 begin
3 dbms_repair.check_object(
4 schema_name=>'SYSTEM',
5 object_name=>'NEW_TAB',
6 repair_table_name=>'REPAIR_TABLE',
7 corrupt_count=>num_corrupt);
8 end;
9 /
6)查询REPAIR_TABLE表,如果表中不存在任何记录,那么就可以确认不存在任何讹误。
如果发现讹误,可以使用dbms_repair.fix_corrupt_blocks将受损的数据库标记为讹误,然后再使用dbms_repair.skip_corrupt_blocks过程通知Oracle忽略所有被标记为讹误的数据块。
7)在操作系统提示符下使用DBVERIFY验证NEW_TAB表。
在Unix系统中需要使用下面的命令:
$ dbv file=/oracle/oradata/new_tbs.dbf blocksize=8192
在Windows系统中则需要使用下面的命令:
C:\> dbv file=\oracle\oradata\new_tbs.dbf blocksize=8192
使用程序输出:略
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11411056/viewspace-733760/
,如需转载,请注明出处,否则将追究法律责任。