ITPub博客

首页 > 数据库 > Oracle > 坏块的处理思维(用程序制作坏块不如用系统)

坏块的处理思维(用程序制作坏块不如用系统)

原创 Oracle 作者:imlihj2007 时间:2012-02-06 23:40:12 0 删除 编辑

--linux模拟坏块测试
select * from dba_data_files;
create table dd as select * from dict
alter table dd move tablespace lihjtest
select dbms_rowid.rowid_relative_fno(t.rowid) || '_' ||
dbms_rowid.rowid_block_number(t.rowid),
t.*
from dd t;

--1
mv lihjtest.dbf lihjtest.dbfbak
dd if=lihjtest.dbfbak of=lihjtest.dbf bs=8192 count=70 --复制70个块
dd if=lihjtest.dbfbak of=lihjtest.dbf bs=8192 skip=69 count=1 seek=70 --复制第70个块到71块上
dd if=lihjtest.dbfbak of=lihjtest.dbf bs=8192 skip=73 count=1 seek=70---------- 两个结果都是第70个数据块块是坏的
dd if=lihjtest.dbfbak of=lihjtest.dbf bs=8192 skip=71 seek=71
--第70个是坏块 搞得我 迷糊了
rm lihjtest.dbf
mv =lihjtest.dbfbak lihjtest.dbfbak


dd if=lihjtest.dbfbak of=lihjtest.dbf bs=8192 skip=73 count=1 seek=70

begin
dbms_repair.admin_tables(table_name => 'REPAIR_TABLE',
table_type => dbms_repair.repair_table,
action => dbms_repair.create_action,
tablespace => 'LIHJTEST');
end;

SELECT *
FROM REPAIR_TABLE

declare v_out_num_corrupt INT;
num_corrupt INT;
begin
num_corrupt := 0;
dbms_repair.check_object(schema_name => 'SYS',
object_name => 'DD',
repair_table_name => 'REPAIR_TABLE',
corrupt_count => v_out_num_corrupt);
end;

BEGIN
DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(SCHEMA_NAME => 'SYS',
OBJECT_NAME => 'DD',
OBJECT_TYPE => dbms_repair.table_object,
FLAGS => dbms_repair.skip_flag);
END;

[@more@]

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

上一篇: db2 das 初学心得
请登录后发表评论 登录
全部评论

注册时间:2011-05-25

  • 博文量
    109
  • 访问量
    1577024