知识大全 如何优化Oracle停机时间及数据库恢复
Posted 数据库
篇首语:富贵必从勤苦得,男儿须读五车书。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何优化Oracle停机时间及数据库恢复相关的知识,希望对你有一定的参考价值。
如何优化Oracle停机时间及数据库恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
这里会讨论令Oracle停机时间最小化的步骤 各种形式的停机 计划的或者是非计划的 总是不断地发生 一个DBA应该有正确的备份策略 这样在数据库出现问题时就可以更快地恢复
以下是假定的备份策略和数据库的运作条件
控制文件是镜像的
数据库运行在archivelog模式
每个星期都进行冷备份
每日都进行热备份
每日都进行一次全数据库导出
事件 完整的数据库重构
在这种情形下 你可以使用全数据库导出或者冷热备份结合的方式来重构数据库 要注意的是无论你选择哪种方式 在线redo log中的事务都会丢失
事件 恢复部分的表空间
可以使用以下的步骤来恢复
以restrict模式启动数据库
重新创建表空间
使用最新的全数据库导出来导入 并且使用ignore=y的选项;
关闭并且重新以normal的模式启动数据库实例
事件 丢失一般的数据文件
丢失一般数据文件的恢复步骤根据所丢失的数据文件包含的表空间类型而定;例如 回滚段 用户表空间 索引表空间或者是只读的表空间 你可能会遇到以下的错误
尝试启动数据库并且碰到错误的信息ORA ORA 可能还有一个操作系统的错误
尝试以normal或者immediate的模式关闭数据库 可能会碰到ORA ORA 的错误信息 还有一个系统错误
以下的步骤可以用作恢复
关闭数据库
由热备份中恢复丢失的数据文件
Startup mount数据库
执行以下的查询来得到所有你的在线redo log文件和它们相应的次序和首次修改号
SELECT X GROUP# MEMBER SEQUENCE# FIRST_CHANGE# FROM V$LOG X V$LOGILE Y WHERE X GROUP# = Y GROUP#;
如果得到的CHANGE#比在线redo log最小的FIRST_CHANGE# 还小 那么该文件不能被完全恢复 你可以有两个选择
如果可以接受丢失最近一次冷备份以来的数据库修改 装入备份并且继续恢复
如果不能接受丢失数据库的修改 那么必须重新创建表空间
通过使用存档和在线的redo log来恢复数据文件
打开数据库
事件 恢复一个特别的表
可以采用以下的步骤恢复
使用最近的一次全数据库导出来导入表 并且使用owner=和tables=的选项
考虑到性能的原因 可能需要重建表索引
事件 丢失控制文件
在数据库起来并且运行时 通常都不能检测到控制文件的问题 如果控制文件丢失或者损坏了 Oracle将不会了解 下次数据库的启动时将会导致ORA 错误(标识控制文件 %s的错误) 还有一个系统级的错误
如果只是丢失了其中的一个控制文件 可以采用下面的步骤来恢复
如果它正在运行的话 先关闭它
查找丢失控制文件的原因 是由于硬件的问题吗(磁盘还是控制器)?
如果不是硬件的问题 将控制文件的一个好的拷贝复制到丢失的位置 并且跳到步骤
如果是硬件的问题 复制一个好的控制文件拷贝到一个可靠的位置
编辑initsid ora 或者 configsid ora 更新CONTROL_FILES以反映最新的控制文件位置
启动数据库
事件 丢失全部的控制文件
可以采用以下的步骤恢复
关闭数据库
进行一次全数据库备份 包括全部的数据文件和redo log文件
以NOMOUNT的状态启动数据库
使用CREATE CONTROLFILE重新创建控制文件 你也可以备份控制文件到一个trace文件 然后执行该文件
在数据库上进行媒体恢复
打开数据库
使用shutdown normal关闭数据库
对数据库进行一次冷备份
事件 丢失一个索引
最简单的方法就是重新创建丢失的索引
事件 丢失一个非活动的redo log
如果丢失redo数据 恢复将是不完全的 必须重新创建涉及的表空间 要重新创建表空间 可以使用全的数据库导出 这样就可以很容易的导入数据并且重新创建该表空间的对象 可以使用以下的步骤来恢复
通过Alter system来切换redo log文件
关闭数据库
startup mount数据库
离线删除涉及的数据文件
打开数据库
删除用户的表空间 包括其中的内容
通过全数据库备份重新创建表空间和其中的对象
事件 丢失活动的Redo log
如事件 讨论的一样 如果丢失了redo数据 恢复将是不完全的 必须重新创建涉及的表空间 可以采用以下的步骤恢复
关闭数据库
startup mount数据库
离线删除涉及的数据文件
打开数据库
删除用户的表空间 包括其中的内容
通过全数据库备份重新创建表空间和其中的对象
要注意的是活动的事务将会丢失
事件 丢失存档的Redo log文件
如果存档的redo log文件丢失 应该马上进行一次冷备份 最好也进行一次全数据库导出 没有丢失的存档redo log文件的任何恢复都将是不完全的
事件 丢失活动的回滚段
这里指的是丢失一个回滚段的一个数据文件 这是一个危急的恢复过程 它主要是在于保存活动的事务 这里假定数据库已经起来 而你想保存当前运行的事务 要使用以下的恢复过程 数据库必须运行在archivelog模式下
可以使用以下步骤恢复
不要关闭数据库 对于这种事件 数据库启动比关闭更容易解决问题
令属于该数据文件中的全部回滚段离线
删除全部离线的回滚段
在上面的第 步中 如果回滚段中有活动的事务 你将不能令它离线 可运行以下的查询来查看哪些事物是活动的
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列 带有 值的回滚段将很快会离线;但是 非 的值表示上面有活动的事务 它们需要被提交或者回滚
处理活动的事务 执行以下的查询来查看哪些用户的事务被指派到该回滚段
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_rollback pending_rollback pending_rollbackN ) AND S TADDR = T ADDR AND T XIDUSN = R USN;
在知道哪些用户在 pending offline 的回滚段上有活动的事务后 可以要求他们提交或者回滚他们的事务 或者可以使用以下的命令杀掉它们的进程
ALTER SYSTEM KILL SESSION sid serial# ;
在你处理完所有活动的事务后 执行以下的步骤
丢弃表空间及其中的全部内容
重新创建回滚表空间
重新创建回滚段 并且令它们在线
事件 丢失全部的回滚段
在这种事件下 将丢失全部活动的事务 并且需要重新创建回滚段 这样大的问题可能是由于一个硬件问题造成的 可以采用以下的步骤恢复
关闭数据库
使用DBVERIFY验证全部的数据文件
解决其它的硬件问题或者数据文件损坏
以startup mount的方式启动数据库实例
在数据库上执行媒体恢复
打开数据库
按需要创建新的回滚段
事件 导出文件损坏
如果导出文件不能用了 那么应该冷备份数据库并且进行一个全的数据库导出 这是假定数据库自身没有问题 如果数据库也损坏了 那么应该执行以下的步骤
ORA 错误信息通常都表示一个或者多个的数据文件损坏了 查明哪些表受到影响 它们应该是错误信息中指明的数据文件中的表格
跳过坏的数据块 将数据由表格中选择到临时表格中
丢弃损坏的表
将临时表重命名为丢弃的表
重新建立受影响表上的全部索引
使用VALIDATE STRUCTURE CASCADE的选项来分析全部损坏的表
要注意的是损坏块中数据将会丢失并且不能恢复
事件 在热备份时关机
如果在热备份正在进行的时候突然关机 其中的一些表空间将可能处在备份模式 当你尝试打开数据库时 它将只能mount 并且指示某些表空间处于热备份模式 由于数据库不能打开 你将不能让表空间脱离热备份模式 你可以使用以下的步骤恢复
startup mount数据库
查询v$backup以查看哪些数据文件处于ACTIVE状态
通过使用命令ALTER DATABASE DATAFILE END BACKUP 来将这些数据文件脱离备份模式
打开数据库
事件 恢复到某个特别的时间点
以下的步骤可用来执行point in time恢复
关闭数据库实例
以NOMOUNT的状态启动数据库实例
使用UNTIL的选项来恢复数据库
打开数据库
Shutdown NORMAL
启动数据库实例
事件 恢复到一个特别的事件或者活动
可以使用以下的步骤来恢复
关闭数据库实例
以NOMOUNT状态启动数据库实例;
使用UNTIL CANCEL来恢复数据库 提供存档的redo log文件请求直到该活动/事件为止
输入CANCEL来取消恢复
打开数据库;
使用NORMAL的模式来关闭数据库
启动数据库实例
结论
cha138/Article/program/Oracle/201311/16850相关参考
Oracle数据库的备份及恢复策略研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多工联机重
重装OS及Oracle软件,巧用RMAN恢复数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ORACLE数据库性能优化概述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 实际上为了保证OR
Oracle数据库系统性能优化策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一个数据库系统
Oracle学习应用之数据库性能优化策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库系
优化数据库大幅度提高Oracle的性能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 几个简单的
数据库优化oraclei 很多的时侯做OracleDBA的我们当应用管理员向我们通告现在应用很慢数据库很慢的时侯我们到数据库时做几个示例的Select也发现同样的问题时有些时侯我们会无从下手因为
Oracle数据库索引优化技术关联查询性能调优 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数
优化数据库的三板斧大幅提高Oracle性能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 几个简
自己对oraclesql的一些优化总结自己也记录下来也希望对大家有帮助 一使用where少使用having; 二查两张以上表时把记录少的放在右边; 三减少对表的访问次数; 四有where子