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

正在看的ORACLE教程是:优化Oracle停机时间及数据库恢复。

 这里会讨论令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文件和它们相应的次序和首次修改号:

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

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

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

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

  7、打开数据库

[NextPage] 事件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步中,如果回滚段中有活动的事务,你将不能令它离线、可运行以下的查询来查看哪些事物是活动的:

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

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

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

   ALTER SYSTEM KILL SESSION 'sid, serial#';

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

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

    重新创建回滚表空间

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

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

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

[1] [2] 下一页

正在看的ORACLE教程是:优化Oracle停机时间及数据库恢复。
   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可以通过一些计划以确保停机时间最小化、这篇文章讨论了不同的策略可以达到这个目的。

上一页     

上一页  [1] [2] 

(0)

相关推荐

  • 关于系统重装后Oracle数据库完全恢复的解决办法

    昨日,服务器一磁盘意外故障,c盘数据丢失,重新安装操作系统后,完全还原意外前的数据方法: 完全按照原配置(安装路径.实例名.用户名.密码)重新安装oracle后,将之前留下的oracle文件夹完全拷贝覆盖当前新安装的oracle,启动数据库管理器,数据库完好如初,数据毫发未损,包括之前的job都完全恢复,而且系统代码配置也完全不需要修改,非常省事.

  • Oracle数据库的备份与恢复

    正在看的ORACLE教程是:Oracle数据库的备份与恢复. ---- 当我们使用一个数据库时,总希望数据库的内容是可靠的.正确的,但由于计算机系统的故障(包括机器故障.介质故障.误操作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据就成为当务之急.如果平时对数据库做了备份,那么此时恢复数据就显得很容易.由此可见,做好数据库的备份是多么的重要,下面笔者就以ORACLE7为例,来讲述一下数据库的备份和恢复.ORACLE 数据库有三种标准的备份方法,它们分别为导出/导入(EXPORT/IMPOR

  • ORACLE 数据库RMAN备份恢复

    机器A: select instance_name from v$instance; select name from v$database; select name from v$datafile; 查询日志模式: archive log list; shutdown immediate; startup mount; 把日志改为归档模式: alter database archivelog; alter database open; alter system archive log curr

  • oracle数据库创建备份与恢复脚本整理

    1:创建用户 复制代码 代码如下: create temporary tablespace user_temp tempfile 'D:\app\topwqp\oradata\orcl\user_temp.dbf' size 500m autoextend on next 50m maxsize 2048m extent management local; create tablespace ts_mydb logging datafile 'D:\app\topwqp\oradata\orcl

  • Oracle误删除表数据后的数据恢复详解

    Oracle误删除表数据后的恢复详解   测试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_retention参数的查询与修改 使用show parameter undo命令查看当前的数据库参数undo_retention设置. 显示如下: SQL> show parameter undo NAME                                 TYPE        VAL

  • oracle下实现恢复一个丢失的数据文件的代码

    如果您目前拥有一个冷备份,但是缺少了其中的一个数据文件,但你目前存在所有的归档,如果您要恢复数据文件,可以参考以下的示例:   复制代码 代码如下: [oracle@jumper eygle]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Sun Aug 20 01:22:50 2006 Copyright (c) 1982, 2002, Oracle Corporation.  All right

  • oracle drop table(表)数据恢复方法

    复制代码 代码如下: --查看数据库回收站 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin; --恢复  FLASHBACK TABLE 表名 TO BEFORE DROP; 此举 可以恢复表结构,同时 数据也恢复了 必须9i或10g以上版本支持,flashback无法恢复全文索引

  • Oracle数据库数据丢失恢复的几种方法总结

    根据oracle数据库的特点和提供的工具,主要方法有以下几种方法: 利用逻辑备份使用import工具丢失数据的表 利用物理备份来通过还原数据文件并进行不完全恢复 利用dbms_logmnr包从redo log文件中恢复 利用flashback特性恢复数据 前提 为了方便使用方法的介绍,上述恢复方法都将基于以下场景进行:系统管理员在前一天晚上11点用export对数据库做了全库逻辑备份,然后对所有数据文件进行了热备份.第二天上午10点,系统管理员在修改表TFUNDASSET的数据时,由于修改语句的

  • Oracle数据库的备份及恢复策略研究

    正在看的ORACLE教程是:Oracle数据库的备份及恢复策略研究. 摘 要 恢复丢失的数据库文件在很大程度上取决于所采用的备份策略.本文从恢复的灵活性出发,对Oracle8数据库的备份及恢复策略进行了探讨,并给出了Windows 2000环境下使备份过程自动化的脚本文件的项目开发实例. 关键词 Oracle 数据库 备份 恢复 引言 随着信息系统在各种商务活动中重要性的不断增强,维护系统数据的可用性已成为当前一个十分重要的课题.为了有效地保持健康的信息系统,必须采取一定的措施防止在由介质.操作

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

    正在看的ORACLE教程是:优化Oracle停机时间及数据库恢复. 这里会讨论令Oracle停机时间最小化的步骤.各种形式的停机--计划的或者是非计划的--总是不断地发生,一个DBA应该有正确的备份策略,这样在数据库出现问题时就可以更快地恢复. 以下是假定的备份策略和数据库的运作条件 控制文件是镜像的 数据库运行在archivelog模式 每个星期都进行冷备份 每日都进行热备份 每日都进行一次全数据库导出 事件1:完整的数据库重构 在这种情形下,你可以使用全数据库导出或者冷热备份结合的方式来重构

  • 优化Oracle库表设计的若干方法

    正在看的ORACLE教程是:优化Oracle库表设计的若干方法. 前言 绝大多数的Oracle数据库性能问题都是由于数据库设计不合理造成的,只有少部分问题根植于Database Buffer.Share Pool.Redo Log Buffer等内存模块配置不合理,I/O争用,CPU争用等DBA职责范围上.所以除非是面对一个业已完成不可变更的系统,否则我们不应过多地将关注点投向内存.I/O.CPU等性能调整项目上,而应关注数据库表本身的设计是否合理,库表设计的合理性才是程序性能的真正执牛耳者.

  • 部署Oracle 12c企业版数据库( 安装及使用)

    在计算机信息安全领域中,数据库系统无疑有着举足轻重的地位.比如:SQL Server.MySQL.DB2.Oracle等,都是比较知名的数据库管理软件,由于Oracle数据库的安全性,所以在一些比较重要的场合被普遍使用,比如:电信.银行.政府部门等. 本次博文以Oracle 12c数据库的64位企业版为例,学习如何在Centos 操作系统中的安装和基本配置,包括安装的准备等. 博文大纲: 一.安装Oracle 12c 二.创建Oracle 12c数据库 三.Oracle 12c数据库的启动与关闭

  • Oracle性能究极优化(Oracle 性能优化)

    原作者:Bert Scalzo 目前,HP,Compaq,Dell,IBM 以及 Oracle 都在加快速度拥抱 Linux ,这个开放源码的操作系统.根据 eWeek 的统计,去年 Linux 服务器的销售量大约占据了 Compaq 的 30%,Dell 的 13.7%,IBM 的 13.5%.而且 IBM 2001年度在 Linux 上的投入有 10 个亿. Intel 最新的 64 位的 Itanium CPU 只支持四种操作系统:Windows, Linux, AIX 和 HP-UX.我

  • Oracle控制文件丢失恢复归档模式

    目录 一.查看控制文件路径和内容 二.模拟控制文件丢失情况: 1.未丢失全部控制文件 2.全部丢失,控制文件存在备份 通过备份文件重建控制文件 通过rman恢复控制文件 3.全部丢失,没有备份 三.建议 一.查看控制文件路径和内容 SQL> show parameter control_files NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cont

  • Oracle 手动创建数据库步骤详解

    下面先给大家列出oracle手动创建数据库步骤如下所示: 1.编写初始化参数文件 2.设置操作系统环境变量 3.创建实例 4.以管理员身份连接数据库 5.启动实例 6.create database 创建数据库 7.运行数据字典脚本 8.Oracle的网络配置 (客户端连接到服务端) 初始化参数文件 从%ORACLE_HOME%\admin\sample\pfile从复制initsmpl.ora文件,并黏贴到$ORACLE_HOME%\database目录下,改名为init<sid>假设改为i

  • Oracle连接远程数据库的四种方法

    Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍四种远程连接的方法和注意事项,并通过示例来说明,接下来我们就开始介绍 第一种方法: 若oracle服务器装在本机上,那就不多说了,连接只是用户名和密码的问题了. 不过要注意环境变量%ORACLE_HOME%/network/admin/是否设置. 第二种方法: 本机未安装oracle服务器,也未安装oracle客户端.但是安装了pl sql development.toad sql development.sql navigat

  • 快速实现SQL Server数据库恢复备份

    本文为大家分享了SQL Server数据库恢复备份的两种方法,供大家参考,具体内容如下 第一种方法:通常我们采用恢复备份的方式,选择目标数据库,选择源设备进行恢复. 截图如下: 第二种方法:这种方式有时候不太方便,而脚本方式将更方便,使用脚本方式如下. /* 备份数据DB 到.bak文件.然后利用此bak文件恢复一个新的数据库DBTest. */ USE master BACKUP DATABASE DB TO DISK = 'e:\DBTest.bak' RESTORE FILELISTONL

  • oracle 虚拟专用数据库详细介绍

    所谓虚拟专用数据库(VPD)指的是,通过在数据库里进行配置,从而让不同的用户只能查看某个表里的部分数据.VPD分为以下两个级别. 行级别:在该级别下,可以控制某些用户只能查看到某些数据行.比如,对于销售数据表sales 来说,每个销售人员只能检索出他自己的销售数据,不能查询其他销售人员的销售数据. 列级别:在该级别下,可以控制某些用户不能检索某个表的某个列的值.比如用户HR 下的 employees 表中,含有工资(salary)列,由于该列比较敏感,因此不让其他用户查询该列的值. 其他用户检索

  • 安装Oracle加载数据库错误areasQueries的解决

    正在看的ORACLE教程是:安装Oracle加载数据库错误areasQueries的解决.注意:安装时要保证Oracle安装目录不能带有中文字符 (如果第一次安装出现"加载数据库错误areasQueries"的错误,一般是因为Oracle安装目录带有中文字符的目录) 1. 停止所有关于Oracle的服务 2. 删除Oracle安装目录,主要分布在两个地方(如D盘跟目录下面以及C盘Program Files下面),删除时提示无法删除的错误,重新启动机器重新删除就可以了 3. 删除注册表里

随机推荐