Chinaunix首页 | 论坛 | 博客
  • 博客访问: 537135
  • 博文数量: 154
  • 博客积分: 4055
  • 博客等级: 上校
  • 技术积分: 1381
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-01 14:26
文章分类

全部博文(154)

文章存档

2014年(2)

2013年(2)

2011年(2)

2010年(11)

2009年(9)

2008年(35)

2007年(22)

2006年(71)

我的朋友

分类: Oracle

2006-11-13 20:06:08

SQL> select name,status from v$datafile;
NAME                                                                           
--------------------------------------------------------------------------------
STATUS                                                                         
-------                                                                        
E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\SYSTEM01.DBF                        
SYSTEM                                                                         
                                                                               
E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\UNDOTBS01.DBF                       
ONLINE                                                                         
                                                                               
E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\SYSAUX01.DBF                        
ONLINE                                                                         
                                                                               
NAME                                                                           
--------------------------------------------------------------------------------
STATUS                                                                         
-------                                                                        
E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\USERS01.DBF                         
ONLINE                                                                         
                                                                               
SQL> create table arch (status varchar(2)) tablespace users;
表已创建。
SQL> insert into arch select 'ok' from dba_objects;
已创建49749行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系统已更改。
SQL> l
  1* alter system switch logfile
SQL>  insert into arch select 'ok' from dba_objects;
已创建49749行。
SQL> commit;
提交完成。
SQL> insert into arch select 'no' from dba_objects;
已创建49748行。
SQL> commit
  2  ;
提交完成。
SQL> select count(*) from arch group by status;
  COUNT(*)                                                                     
----------                                                                     
     99498                                                                     
     49748                                                                     
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
ok,现在把users表空间的数据文件手动修改,破坏数据文件
然后检查数据文件
C:\Documents and Settings\zhangli>dbv file = E:\oracle\product\10.2.0\db_1\oradata\orcl\USERS01.DBF blocksize = 8192
...................
页 635 流入 - 很可能是介质损坏
Corrupt block relative dba: 0x0800027b (file 538976288, block 635)
Fractured block found during dbv:
Data in bad block:
 type: 0 format: 0 rdba: 0x00000000
 last change scn: 0x0000.00000000 seq: 0x0 flg: 0x00
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x00000000
 check value in block header: 0x0
 block checksum disabled
页 636 流入 - 很可能是介质损坏
Corrupt block relative dba: 0x0800027c (file 538976288, block 636)
Fractured block found during dbv:
Data in bad block:
 type: 0 format: 0 rdba: 0x00000000
 last change scn: 0x0000.00000000 seq: 0x0 flg: 0x00
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x00000000
 check value in block header: 0x0
 block checksum disabled
页 637 流入 - 很可能是介质损坏
Corrupt block relative dba: 0x0800027d (file 538976288, block 637)
Fractured block found during dbv:
Data in bad block:
 type: 0 format: 0 rdba: 0x00000000
 last change scn: 0x0000.00000000 seq: 0x0 flg: 0x00
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x00000000
 check value in block header: 0x0
 block checksum disabled
页 638 流入 - 很可能是介质损坏
Corrupt block relative dba: 0x0800027e (file 538976288, block 638)
Fractured block found during dbv:
Data in bad block:
 type: 0 format: 0 rdba: 0x00000000
 last change scn: 0x0000.00000000 seq: 0x0 flg: 0x00
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x00000000
 check value in block header: 0x0
 block checksum disabled
页 639 流入 - 很可能是介质损坏
Corrupt block relative dba: 0x0800027f (file 538976288, block 639)
Fractured block found during dbv:
Data in bad block:
 type: 0 format: 0 rdba: 0x00000000
 last change scn: 0x0000.00000000 seq: 0x0 flg: 0x00
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x00000000
 check value in block header: 0x0
 block checksum disabled
 
DBVERIFY - 验证完成
检查的页总数: 639
处理的页总数 (数据): 0
失败的页总数 (数据): 0
处理的页总数 (索引): 0
失败的页总数 (索引): 0
处理的页总数 (其它): 0
处理的总页数 (段)  : 0
失败的总页数 (段)  : 0
空的页总数: 0
标记为损坏的总页数: 639
流入的页总数: 612
最高块 SCN            : 0 (0.0)
确保数据文件损坏,然后启动数据库
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  289406976 bytes                                      
Fixed Size                  1248600 bytes                                      
Variable Size              92275368 bytes                                      
Database Buffers          192937984 bytes                                      
Redo Buffers                2945024 bytes                                      
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 4: 'E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\USERS01.DBF'

SQL> alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\USERS01.DBF' offline drop;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> drop tablespace users including contents;
drop tablespace users including contents
*
第 1 行出现错误:
ORA-12919: 不能删除默认永久表空间

SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-01124: 无法恢复数据文件 1 - 文件在使用中或在恢复中
ORA-01110: 数据文件 1:
'E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\SYSTEM01.DBF'

SQL> recover datafile 'E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\USERS01.DBF' ;
ORA-00279: 更改 606705 (在 11/11/2006 12:14:14 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2006_11_11\O1_
MF_1_4_%U_.ARC
ORA-00280: 更改 606705 (用于线程 1) 在序列 #4 中

指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 607096 (在 11/11/2006 12:25:03 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2006_11_11\O1_
MF_1_1_%U_.ARC
ORA-00280: 更改 607096 (用于线程 1) 在序列 #1 中
ORA-00278: 此恢复不再需要日志文件
'E:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2006_11_11\O1
_MF_1_4_2OBN5FN0_.ARC'

ORA-00279: 更改 608375 (在 11/11/2006 12:42:57 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2006_11_11\O1_
MF_1_2_%U_.ARC
ORA-00280: 更改 608375 (用于线程 1) 在序列 #2 中
ORA-00278: 此恢复不再需要日志文件
'E:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2006_11_11\O1
_MF_1_1_2OBO6L6C_.ARC'

ORA-00279: 更改 608476 (在 11/11/2006 12:45:27 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2006_11_11\O1_
MF_1_3_%U_.ARC
ORA-00280: 更改 608476 (用于线程 1) 在序列 #3 中
ORA-00278: 此恢复不再需要日志文件
'E:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2006_11_11\O1
_MF_1_2_2OBOC85V_.ARC'

已应用的日志。
完成介质恢复。
SQL> select count(*) from arch;
select count(*) from arch
                     *
第 1 行出现错误:
ORA-00376: 此时无法读取文件 4
ORA-01110: 数据文件 4: 'E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\USERS01.DBF'

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area  289406976 bytes                                      
Fixed Size                  1248600 bytes                                      
Variable Size              92275368 bytes                                      
Database Buffers          192937984 bytes                                      
Redo Buffers                2945024 bytes                                      
数据库装载完毕。
SQL> recover database ;
ORA-00283: 恢复会话因错误而取消
ORA-00264: 不要求恢复

SQL> alter database open;
数据库已更改。
SQL> select count(*) from arch;
select count(*) from arch
                     *
第 1 行出现错误:
ORA-00376: 此时无法读取文件 4
ORA-01110: 数据文件 4: 'E:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCL\USERS01.DBF'

SQL> alter tablespace users online;
表空间已更改。
SQL> select count(*) from arch;
  COUNT(*)                                                                     
----------                                                                     
    149246                                                                     
SQL> select count(*) from arch group by status;
  COUNT(*)                                                                     
----------                                                                     
     99498                                                                     
     49748                                                                     
SQL>
ok!数据完全恢复,问题解决
阅读(2923) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~