来自 澳门威尼斯人注册网站 2020-01-17 08:37 的文章
当前位置: 澳门威尼斯人平台 > 澳门威尼斯人注册网站 > 正文

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

这里会讨论令Oracle停机时间最小化的步骤。各种形式的停机--计划的或者是非计划的--总是不断地发生,一个DBA应该有正确的备份策略,这样在数据库出现问题时就可以更快地恢复。

事件10:丢失存档的Redo log文件

以下是假定的备份策略和数据库的运作条件

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

控制文件是镜像的

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

数据库运行在archivelog模式

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

每个星期都进行冷备份

  可以使用以下步骤恢复:

每日都进行热备份

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

每日都进行一次全数据库导出

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

事件1:完整的数据库重构

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

在这种情形下,你可以使用全数据库导出或者冷热备份结合的方式来重构数据库。要注意的是无论你选择哪种方式,在线redo log中的事务都会丢失。

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

事件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的值表示上面有活动的事务,它们需要被提交或者回滚、

1、以restrict模式启动数据库

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

2、重新创建表空间

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;

3、使用最新的全数据库导出来导入,并且使用ignore=y的选项;

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

4.关闭并且重新以normal的模式启动数据库实例

   ALTER SYSTEM KILL SESSION sid, serial#;

事件3:丢失一般的数据文件

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

丢失一般数据文件的恢复步骤根据所丢失的数据文件包含的表空间类型而定;例如:回滚段,用户表空间,索引表空间或者是只读的表空间、你可能会遇到以下的错误:

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

. 尝试启动数据库并且碰到错误的信息ORA-1157, ORA-1110,可能还有一个操作系统的错误

    重新创建回滚表空间

. 尝试以normal或者immediate的模式关闭数据库,可能会碰到ORA-1116, ORA-1110的错误信息,还有一个系统错误

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

以下的步骤可以用作恢复:

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

1、关闭数据库

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

2、由热备份中恢复丢失的数据文件

   1、关闭数据库

3、Startup mount数据库

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

4、执行以下的查询来得到所有你的在线redo log文件和它们相应的次序和首次修改号:

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

SELECT X.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE#FROM V$LOG X, V$LOGILE YWHERE X.GROUP# = Y.GROUP#;

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

5、如果得到的CHANGE#比在线redo log最小的FIRST_CHANGE# 还小,那么该文件不能被完全恢复,你可以有两个选择:

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

. 如果可以接受丢失最近一次冷备份以来的数据库修改,装入备份并且继续恢复

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

. 如果不能接受丢失数据库的修改,那么必须重新创建表空间

  事件13:导出文件损坏

6、通过使用存档和在线的redo log来恢复数据文件

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

7、打开数据库

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

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

本文由澳门威尼斯人平台发布于澳门威尼斯人注册网站,转载请注明出处:优化Oracle停机时间及数据库恢复

关键词: