频道栏目
首页 > 资讯 > win7激活工具 > 正文

优化Oracle停机时间及数据库恢复[下]

04-11-06        来源:[db:作者]  
收藏   我要投稿
事件10:丢失存档的Redo log文件

  如果存档的redo log文件丢失,应该马上进行一次冷备份、最好也进行一次全数据库导出、没有丢失的存档redo log文件的任何恢复都将是不完全的、

  事件11:丢失活动的回滚段

  这里指的是丢失一个回滚段的一个数据文件、这是一个危急的恢复过程,它主要是在于保存活动的事务。这里假定数据库已经起来,而你想保存当前运行的事务。要使用以下的恢复过程,数据库必须运行在archivelog模式下。

  可以使用以下步骤恢复:

   1、不要关闭数据库、对于这种事件,数据库启动比关闭更容易解决问题、

   2、令属于该数据文件中的全部回滚段离线

   3、删除全部离线的回滚段

   4、在上面的第2步中,如果回滚段中有活动的事务,你将不能令它离线、可运行以下的查询来查看哪些事物是活动的:


SELECT SEGMENT_NAME, XACTS ACTIVE_TX, V.STATUS
FROM V$ROLLSTAT V, DBA_ROLLBACK_SEGS
WHERE TABLESPACE_NAME = tablespace_name AND
SEGMENT_ID = USN;

  如果上面的查询没有结果,那么所有的回滚段都是离线的,但是,如果上面的查询返回一行或者多行,并且其状态为PENDING OFFLINE,那么可检查这些回滚段的ACTIVE_TX列、带有0值的回滚段将很快会离线;但是,非0的值表示上面有活动的事务,它们需要被提交或者回滚、

   5、处理活动的事务、执行以下的查询来查看哪些用户的事务被指派到该回滚段:


SELECT S.SID, S.SERIAL#, S.USERNAME, R.NAME "ROLLBACK"
FROM V$SESSION S, V$TRANSACTION T, V$ROLLNAME R
WHERE R.NAME IN (pending_rollback1,pending_rollback2, .... pending_rollbackN) AND
S.TADDR = T.ADDR AND
T.XIDUSN = R.USN;

  在知道哪些用户在"pending offline"的回滚段上有活动的事务后,可以要求他们提交或者回滚他们的事务,或者可以使用以下的命令杀掉它们的进程:

   ALTER SYSTEM KILL SESSION sid, serial#;

   6、在你处理完所有活动的事务后,执行以下的步骤:

    丢弃表空间及其中的全部内容

    重新创建回滚表空间

    重新创建回滚段,并且令它们在线

  事件12:丢失全部的回滚段

  在这种事件下,将丢失全部活动的事务,并且需要重新创建回滚段。这样大的问题可能是由于一个硬件问题造成的,可以采用以下的步骤恢复:

   1、关闭数据库

   2、使用DBVERIFY验证全部的数据文件

   3、解决其它的硬件问题或者数据文件损坏

   4、以startup mount的方式启动数据库实例

   5、在数据库上执行媒体恢复
 
   6、打开数据库

   7、按需要创建新的回滚段

  事件13:导出文件损坏

  如果导出文件不能用了,那么应该冷备份数据库并且进行一个全的数据库导出、这是假定数据库自身没有问题、如果数据库也损坏了,那么应该执行以下的步骤:

   1、ORA-1157错误信息通常都表示一个或者多个的数据文件损坏了。查明哪些表受到影响,它们应该是错误信息中指明的数据文件中的表格

   2、跳过坏的数据块,将数据由表格中选择到临时表格中、

   3、丢弃损坏的表

   4、将临时表重命名为丢弃的表

   5、重新建立受影响表上的全部索引

   6、使用VALIDATE STRUCTURE CASCADE的选项来分析全部损坏的表

  要注意的是损坏块中数据将会丢失并且不能恢复

  事件14:在热备份时关机

  如果在热备份正在进行的时候突然关机,其中的一些表空间将可能处在备份模式、当你尝试打开数据库时,它将只能mount,并且指示某些表空间处于热备份模式、由于数据库不能打开,你将不能让表空间脱离热备份模式、你可以使用以下的步骤恢复:

   1、startup mount数据库

   2、查询v$backup以查看哪些数据文件处于ACTIVE状态、

   3、通过使用命令ALTER DATABASE DATAFILE END BACKUP.来将这些数据文件脱离备份模式

   4、打开数据库

  事件15:恢复到某个特别的时间点

  以下的步骤可用来执行point-in-time恢复

   1、关闭数据库实例

   2、以NOMOUNT的状态启动数据库实例

   3、使用UNTIL的选项来恢复数据库

   4、打开数据库

   5、Shutdown NORMAL

   6、启动数据库实例

  事件16:恢复到一个特别的事件或者活动

  可以使用以下的步骤来恢复:

   1、关闭数据库实例

   2、以NOMOUNT状态启动数据库实例;

   3、使用UNTIL CANCEL来恢复数据库,提供存档的redo log文件请求直到该活动/事件为止

   4、输入CANCEL来取消恢复

   5、打开数据库;

   6、使用NORMAL的模式来关闭数据库

   7、启动数据库实例

  结论
 
  高可用性对于任何的商业都是很重要的,ORACLE DBA可以通过一些计划以确保停机时间最小化、这篇文章讨论了不同的策略可以达到这个目的。

相关TAG标签
上一篇:优化Oracle停机时间及数据库恢复[上]
下一篇:苹果和UNIX系统比拼 Linux最最不安全
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站