ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 检查块讹误

检查块讹误

原创 Linux操作系统 作者:ljm0211 时间:2012-06-25 16:45:51 0 删除 编辑
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博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733760/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Flashback Query
请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    436789