龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle数据库中各种类型的文件损坏与修复过程详解(1)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
Oracle数据库 的文件有哪些种类呢?这些文件在什么情况下容易被损坏呢?损坏以后又该怎么样去修复呢?本文就介绍了这些内容,包括了10中Oracle文件的损坏与修复的过程,这10种文件

Oracle数据库的文件有哪些种类呢?这些文件在什么情况下容易被损坏呢?损坏以后又该怎么样去修复呢?本文就介绍了这些内容,包括了10中Oracle文件的损坏与修复的过程,这10种文件几乎涵盖了Oracle数据库中所有类型的文件,接下来就让我们一起来了解一下这10种文件的损坏与修复的过程吧。

一、数据库服务器基本情况

OS:RHEL 3

CPU:4个Intel(R) Xeon(TM) MP CPU 2.70GHz

Mem:8G

Swap:16G

Disk:120G

Oracle Database 10g Enterprise Edition Release 10.1.0.3.0

二、备份方式

数据库以archive模式运行,RMAN多级增量备份。策略如下:

设置控制文件自动备份。

每三个月做一个数据库的全备份(包括所有得数据库和只读表空间),并备份归档日志。

每一个月做一次零级备份(不包含只读表空间),并备份归档日志。

每周做一次一级备份,并备份归档日志。

每天做一次二级备份,并备份归档日志。

三、恢复案例

所有恢复的前提:已经做过数据库全备份(包括归档日志),控制文件和spfile自动备份。

1.损坏一个数据文件

(1)故障模拟

删除数据文件:rm /u02/oradata/dbnms/users01.dbf

关闭数据库:shutdown immediate;

  1. ORA-01116: error in opening database file 4   
  2.  
  3. ORA-01110: data file 4: '/u02/oradata/dbnms/users01.dbf'   
  4.  
  5. ORA-27041: unable to open file   
  6.  
  7. Linux Error: 2: No such file or directory   
  8.  
  9. Additional information: 3  

强行关闭:sutdown abort;

启动数据库:startup;

  1. ORA-01157: cannot identify/lock data file 4 - see DBWR trace file   
  2.  
  3. ORA-01110: data file 4: '/u02/oradata/dbnms/users01.dbf'  

(2)恢复步骤

  1. rman target sys@dbnms catalog rmanuser@cata   
  2.  
  3. run{   
  4.  
  5. allocate channel c1 type disk;   
  6.  
  7. restore datafile 4;   
  8.  
  9. recover datafile 4;   
  10.  
  11. sql 'alter database datafile 4 online';   
  12.  
  13. sql 'alter database open';   
  14.  
  15. release channel c1;   
  16.  
  17. }   
  18.  
  19.  
  20. sqlplus sys as sysdba   
  21.  
  22. select instance_name,status from v$instance;   
  23.  
  24. INSTANCE_NAME STATUS   
  25.  
  26. ---------------- ------------   
  27.  
  28. dbnms OPEN  

恢复成功。

2.损坏全部数据文件

(1)故障模拟

删除数据文件:rm /u02/oradata/dbnms/*.dbf

强行关闭:sutdown abort;

启动数据库:startup;

  1. ORA-01157: cannot identify/lock data file 1 - see DBWR trace file   
  2.  
  3. ORA-01110: data file 1: '/u02/oradata/dbnms/system01.dbf'  

(2)恢复步骤

  1. rman target sys@dbnms catalog rmanuser@cata   
  2.  
  3. run{   
  4.  
  5. allocate channel c1 type disk;   
  6.  
  7. restore database;   
  8.  
  9. recover database;   
  10.  
  11. sql 'alter database open';   
  12.  
  13. release channel c1;   
  14.  
  15. }   
  16.  
  17. sqlplus sys as sysdba   
  18.  
  19. select instance_name,status from v$instance;   
  20.  
  21. INSTANCE_NAME STATUS   
  22.  
  23. ---------------- ------------   
  24.  
  25. dbnms OPEN 

恢复临时文件:

  1. alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;   
  2.  
  3. alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;  

恢复成功。

3.损坏非当前联机日志成员

(1)故障模拟

删除日志文件:rm /u02/oradata/dbnms/redo01.log

关闭数据库:shutdown immediate;

启动数据库:startup;

  1. select * from v$logfile;   
  2.  
  3. GROUP# STATUS TYPE MEMBER IS_   
  4.  
  5. ---------- ------- ------- ------------------------------ ---   
  6.  
  7. 3 ONLINE /u02/oradata/dbnms/redo03.log NO   
  8.  
  9. 2 STALE ONLINE /u02/oradata/dbnms/redo02.log NO   
  10.  
  11. 1 INVALID ONLINE /u02/oradata/dbnms/redo01.log NO   
  12.  
  13. 1 STALE ONLINE /u02/oradata/dbnms/redo11.log NO   
  14.  
  15. 1 STALE ONLINE /u02/oradata/dbnms/redo21.log NO   
  16.  
  17. 2 STALE ONLINE /u02/oradata/dbnms/redo12.log NO   
  18.  
  19. 3 ONLINE /u02/oradata/dbnms/redo13.log NO   
  20.  
  21. 2 STALE ONLINE /u02/oradata/dbnms/redo22.log NO   
  22.  
  23. 3 ONLINE /u02/oradata/dbnms/redo23.log NO   
  24.  
  25. 4 ONLINE /u02/oradata/dbnms/redo31.log NO   
  26.  
  27. 4 ONLINE /u02/oradata/dbnms/redo32.log NO   
  28.  
  29. GROUP# STATUS TYPE MEMBER IS_   
  30.  
  31. ---------- ------- ------- ------------------------------ ---   
  32.  
  33. 4 ONLINE /u02/oradata/dbnms/redo33.log NO 

(2)恢复步骤

  1. alter database drop logfile member '/u02/oradata/dbnms/redo01.log';   
  2.  
  3. alter database add logfile member '/u02/oradata/dbnms/redo01.log' to group 1;  

恢复成功.

4.损坏非当前联机日志组

(1)故障模拟

删除日志文件组1的所有文件:

  1. rm /u02/oradata/dbnms/redo01.log   
  2.  
  3. rm /u02/oradata/dbnms/redo11.log   
  4.  
  5. rm /u02/oradata/dbnms/redo21.log  

关闭数据库:shutdown immediate;

启动数据库:startup;

  1. Database mounted.   
  2.  
  3. ORA-00313: open failed for members of log group 1 of thread 1   
  4.  
  5. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'   
  6.  
  7. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'   
  8.  
  9. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'  

(2)恢复步骤

  1. alter database clear logfile group 1;  

如果该日志组还没有归档,则用:

  1. alter database clear unarchived logfile group 1;  

打开数据库:

  1. alter database open;  

恢复成功。

精彩图集

赞助商链接