Oracle实战:备份和恢复游戏(二)

日期: 2008-06-12 作者:Steve Callan黄永兵 来源:TechTarget中国

  下面显示了警告日志(这只是其中一部分):







Thu Mar 06 12:41:15 2008
Errors in file d:oracleproduct10.2.0admindb10bdumpdb10_ckpt_2756.trc:
ORA-00206: error in writing (block 3, # blocks 1) of control file
ORA-00202: control file: ’F:ORACLECONTROL03.CTL’
ORA-27072: File I/O error
OSD-04008: WriteFile() failure, unable to write to file
O/S-Error: (OS 1006) The volume for a file has been externally altered so that the opened file is no longer valid.
…some more messages…
Thu Mar 06 12:41:29 2008
Instance terminated by CKPT, pid = 2756


  修复这个问题其实很简单,但是你真的了解了当一个控制文件丢失后发生了什么吗?


  修复问题,重新连接并启动
 




SQL> prompt Remove the reference to control03
SQL> startup
ORA-24324: service handle not initialized
ORA-01041: internal error. hostdef extension doesn’t exist
SQL> conn sys/oracle as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area  289406976 bytes
Fixed Size                  1290184 bytes
Variable Size             104857656 bytes
Database Buffers          176160768 bytes
Redo Buffers                7098368 bytes
Database mounted.
Database opened.
SQL>
 


  回到在线重做日志文件,丢失了一个成员,实例会象丢失控制文件那样崩溃吗?答案是:依情况而定。一个组可能有一个或多个成员,我们先看一看#members=1的情况,与前面的例子类似,我将在一个闪存盘上创建一个成员的组,并使这个组成为活动组(意味着STATUS的值是ACTIVE, CURRENT, INACTIVE和UNUSED吗?),一旦组是活动的,我将拔出闪存盘,当前的重做日志组是哪一个?从警告日志可以看到:


  提取自警告日志
 





Thu Mar 06 13:22:11 2008
Thread 1 advanced to log sequence 211
  Current log# 10 seq# 211 mem# 0: F:ORACLEREDO10.LOG
 


  如丢失控制文件一样,实例停止运转了。







SQL> select * from v$logfile;
    GROUP# STATUS  TYPE    MEMBER                                               
———- ——- ——- ————————————————
         7         ONLINE  D:ORACLEPRODUCT10.2.0ORADATADB10REDO07.LOG
         8         ONLINE  D:ORACLEPRODUCT10.2.0ORADATADB10REDO08.LOG
        10         ONLINE  F:ORACLEREDO10.LOG                                 
         9         ONLINE  D:ORACLEPRODUCT10.2.0ORADATADB10REDO09.LOG
SQL> select * from v$logfile;
select * from v$logfile
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel


 
  在这个例子中,是LGWR导致了实例终止,注意在其他例子中是CKPT,在控制文件中记录了什么呢?SCN,哪个进程使用SCN给控制文件做的印记?checkpoint进程。


  如果想在家中尝试,将数据库运行在非归档模式,并在当前日志组中只使用一个成员,它能再次打开数据库吗?


  那个组被多路复用,相同的文件从系统中拔出,会发生什么?生命还是要继续,在警告日志中记录了一条关于丢失成员的消息,让我们向组10添加第二个成员,将它放在一个不同的驱动器中,然后再次拔出闪存盘(开始打开数据库时应该有一个提示信息)。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐