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

作者:网络 佚名

2006-02-22 00:00

评论

分享

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

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

控制文件是镜像的

数据库运行在archivelog模式

每个星期都进行冷备份

每日都进行热备份

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

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

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

事件2:恢复部分的表空间

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

1、以restrict模式启动数据库

2、重新创建表空间

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

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

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

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

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

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

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

1、关闭数据库

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

3、Startup mount数据库

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

SELECT X.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE#

FROM V$LOG X, V$LOGILE Y

WHERE X.GROUP# = Y.GROUP#;

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

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

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

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

7、打开数据库

事件4:恢复一个特别的表

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

1、使用最近的一次全数据库导出来导入表,并且使用owner=和tables=的选项

2、考虑到性能的原因,可能需要重建表索引

事件5:丢失控制文件

在数据库起来并且运行时,通常都不能检测到控制文件的问题、如果控制文件丢失或者损坏了,Oracle将不会了解,下次数据库的启动时将会导致ORA-205错误(标识控制文件"%s的错误),还有一个系统级的错误。

如果只是丢失了其中的一个控制文件,可以采用下面的步骤来恢复:

1、如果它正在运行的话,先关闭它

2、查找丢失控制文件的原因、是由于硬件的问题吗(磁盘还是控制器)?

3、如果不是硬件的问题,将控制文件的一个好的拷贝复制到丢失的位置,并且跳到步骤5、

4、如果是硬件的问题,复制一个好的控制文件拷贝到一个可靠的位置

5、编辑initsid.ora 或者 configsid.ora,更新CONTROL_FILES以反映最新的控制文件位置

6、启动数据库

事件6:丢失全部的控制文件

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

1、关闭数据库

2、进行一次全数据库备份,包括全部的数据文件和redo log文件

3、以NOMOUNT的状态启动数据库

4、使用CREATE CONTROLFILE重新创建控制文件、你也可以备份控制文件到一个trace文件,然后执行该文件

5、在数据库上进行媒体恢复

6、打开数据库

7、使用shutdown normal关闭数据库

8、对数据库进行一次冷备份

事件7:丢失一个索引

最简单的方法就是重新创建丢失的索引

事件8:丢失一个非活动的redo log

如果丢失redo数据,恢复将是不完全的,必须重新创建涉及的表空间。要重新创建表空间,可以使用全的数据库导出,这样就可以很容易的导入数据并且重新创建该表空间的对象。可以使用以下的步骤来恢复:

1、通过Alter system来切换redo log文件

2、关闭数据库

3、startup mount数据库

4、离线删除涉及的数据文件

5、打开数据库

6、删除用户的表空间,包括其中的内容、

7、通过全数据库备份重新创建表空间和其中的对象

事件9:丢失活动的Redo log

如事件8讨论的一样,如果丢失了redo数据,恢复将是不完全的,必须重新创建涉及的表空间、可以采用以下的步骤恢复:

1、关闭数据库

2、startup mount数据库

3、离线删除涉及的数据文件

4、打开数据库

5、删除用户的表空间,包括其中的内容、

6、通过全数据库备份重新创建表空间和其中的对象

要注意的是活动的事务将会丢失

事件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可以通过一些计划以确保停机时间最小化、这篇文章讨论了不同的策略可以达到这个目的。

0

oracle停数据库服务器,优化Oracle停机时间及数据库恢复相关推荐

  1. 数据库服务器审计系统部署方式,数据库审计系统D2020,agent方式审计如何配置...

    客户端(101.1.12.2): 用于访问数据库审计系统管理界面,进行数据库审计系统的相关配置. 数据库审计系统: 管理口IP(183.1.10.52):被访问的,实现数据库审计系统的管理. 业务口I ...

  2. oracle的免费 mysql数据库服务器地址_Oracle 免费的数据库

    一.Oracle XE 数据库与连接工具安装使用 Oracle数据库历来以价格昂贵出名,当然贵有贵的道理,成为一个Oracle DBA也是令人羡慕的事情,如果程序员熟悉Oracle使用也有机会接触到大 ...

  3. oracle安装少服务器,安装oracle数据库服务器

    1      卸载oracle数据库服务器 1.停止数据库,监听 su - oracle sqlplus / as sysdba shutdown abort exit lsnrctl stop 用p ...

  4. oracle delete not in 优化,Oracle中的sql语句优化

    1.选择最有效率的表名顺序(只在基于规则的优化器中有效) ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表driving table)将被最先处理,在 ...

  5. 本机不装Oracle,远程访问服务器上Oracle教程

    一.背景 在开发过程中,我们会遇到本机不装Oracle,需要通过PLSQL等工具连接服务器上Oracle的情况. 前段时间因为项目组需要,搜索了很多资料,踩了很多坑,终于把他搞通了. 在此记录一下整个 ...

  6. linux oracle停启,linux下Oracle自动启动与停止总结

    1. 修改Oracle系统配置文件/etc/oratab /etc/oratab 格式为: SID:ORACLE_HOME:AUTO 把AUTO域设置为Y(大写),只有这样,oracle 自带的dbs ...

  7. MySQL数据库服务器优化详细

    查看MySql状态及变量的方法: Mysql> show status --显示状态信息(扩展show status like 'XXX') Mysql> show variables - ...

  8. oracle千万行update优化,Oracle的update优化

    Oracle的update语句优化研究 一. update语句的语法与原理 1. 语法 单表:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值如:update t_join ...

  9. 数据库服务器查询格式化显示,在数据库服务器端养成设置NLS_LANG和NLS_DATE_FORMAT环境变量的习惯...

    今日凌晨3点左右同事打来电话说,他们在将一个单机版AIX平台的Oracle数据库迁移到相同平台相同版本的RAC数据库的时候,业务数据所有的中文变成了"?"号.迁移的方法是通过RMA ...

最新文章

  1. 指针05 - 零基础入门学习C语言45
  2. 【带着canvas去流浪(10)】文字烟花
  3. 2018.9--2019.7 Java开发工作中的经验和教训之db2数据库操作
  4. java异常断点数组_使用IDEA异常断点来定位java.lang.ArrayStoreException的问题
  5. win7计算机未连接网络连接,解决win7能上网但是网络图标显示未连接的方法-win7之家...
  6. php7 断言,PHP7.2常用新特性和函数
  7. js实现php中图片轮播,两种js实现轮播图的方式
  8. 数字信号处理----数字上变频和下变频都FPGA实现
  9. MT2503处理器性能介绍,MT2503/MT2503A/MT2503D芯片资料下载
  10. 《深入浅出WPF》——命令学习
  11. FPGA开发板公司及产品系列
  12. PC 新时代即将到来,Windows 11 将迎来首次重大更新:终于要支持 Android 应用了
  13. Yii Framework 开发教程(41) Zii组件-Tabs示例
  14. 苹果消息推送服务教程:第一二部分(共2部分)
  15. C/C++大学生考勤系统
  16. 持币大户谈PRS投资策略
  17. 小程序实现图片放大预览功能
  18. 用html做七巧板的方法,第一天:html、css的初步学习和制作七巧板
  19. Linux新手入门教程(精华版)
  20. [附源码]计算机毕业设计springboot智慧园区运营管理系统

热门文章

  1. deeplearning4j的学习
  2. Linux服务器---squid限制
  3. 关于树形插件展示中数据结构转换的算法
  4. iptables 执行清除命令 iptables -F 要非常小心的
  5. CentOS配置snmp
  6. Settings界面分析之Settings一级界面
  7. Java基础之Http协议的理解与总结
  8. ip subnet-zero
  9. 跨平台移动端开发 NativeScript ——创建JavaScript原生移动应用
  10. 初识ADT--抽象数据类型