使用dbms_repair修复块损坏的具体示例
使用dbms_repair修复块损坏的具体示例:
SQL> create tablespace block datafile D:oracleoradataoracle9ilock.dbf size 5M;
Tablespace created
SQL> connect dlinger/dlinger
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as dlinger
QL> create table test tablespace block as select * from all_tables;
Table created
SQL> insert into test select * from test;
806 rows inserted
SQL> insert into test select * from test;
1612 rows inserted
SQL> insert into test select * from test;
3224 rows inserted
SQL> insert into test select * from test;
6448 rows inserted
SQL> insert into test select * from test;
insert into test select * from test
ORA-01653: 表DLINGER.TEST无法通过128(在表空间BLOCK中)扩展
SQL> commit;
Commit complete
SQL> select count(*) from test;
COUNT(*)
----------
12896
SQL> create index i_test on test(table_name);
Index created
SQL> alter system checkpoint;
System altered
SQL> connect sys/sys as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
--使用UltraEdit编辑block.dbf,修改几个字符
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 72424008 bytes
Fixed Size 453192 bytes
Variable Size 46137344 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> select count(*) from dlinger.test;
select count(*) from dlinger.test
*
ERROR 位于第 1 行:
ORA-01578: ORACLE 数据块损坏(文件号14,块号160)
ORA-01110: 数据文件 14: D:ORACLEORADATAORACLE9IBLOCK.DBF
用dbv检查:
C:Documents and Settingsduanl>dbv file=D:oracleoradataoracle9ilock.dbf
blocksize=8192
DBVERIFY: Release 9.2.0.1.0 - Production on 星期二 8月 24 19:58:15 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
DBVERIFY - 验证正在开始 : FILE = D:oracleoradataoracle9ilock.dbf
标记为损坏的页160
***
Corrupt block relative dba: 0x038000a0 (file 14, block 160)
Bad check value found during dbv:
Data in bad block -
type: 6 format: 2 rdba: 0x038000a0
last change scn: 0x0000.0035f5c2 seq: 0x1 flg: 0x06
consistency value in tail: 0xf5c20601
check value in block header: 0x3681, computed block checksum: 0x5bb
spare1: 0x0, spare2: 0x0, spare3: 0x0
***
DBVERIFY - 验证完成
检查的页总数 :640
处理的页总数(数据):510
失败的页总数(数据):0
处理的页总数(索引):0
失败的页总数(索引):0
处理的页总数(其它):9
处理的总页数 (段) : 0
失败的总页数 (段) : 0
空的页总数 :120
标记为损坏的总页数:1
汇入的页总数 :0
使用dbms_repair包
1.创建管理表:
SQL> connect sys/sys as sysdba
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as SYS
SQL> exec DBMS_REPAIR.ADMIN_TABLES(REPAIR_TABLE,1,1,USERS);
PL/SQL procedure successfully completed
SQL> exec DBMS_REPAIR.ADMIN_TABLES(ORPHAN_TABLE,2,1,USERS);
PL/SQL procedure successfully completed
2.检查坏块:dbms_repair.check_object
SQL> declare
2 cc number;
3 begin
4 dbms_repair.check_object(schema_name => DLINGER,object_name => TEST,cor
rupt_count => cc);
5 dbms_output.put_line(a => to_char(cc));
6 end;
7 /
1
PL/SQL 过程已成
相关新闻>>
- 发表评论
-
- 最新评论 进入详细评论页>>