`

oracle备份--redo丢失与恢复(一)

阅读更多
一、先阐述下测试环境

系统数据库环境:window+oracle10g R2+archive模式;

模拟Redo文件丢失,数据库在正常关闭的情况发现Redo丢失了;

二、测试

(1)、倘若丢了一个或多个redo组的一个成员。这种情况最好处理,直接copy其它目录的成员,重新启动数据库即可。此种情况不作太多的说明;

(2)、倘若丢失的是一组或两组甚至全部Redo日志丢失,则有以下三种方法可以恢复;

A、clear logfile方法(以下的测试均属于是redo日志全部丢失的环境下)

1、关闭数据库;

2、手动删除所有redo文件;

3、启动数据库;

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             255855492 bytes
Database Buffers          348127232 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 联机日志 1 线程 1: 'F:\REDO\REDO01_B.LOG'


SQL>

4、查看当前日志状态;

SQL> select group#,members,archived,status from v$log;

    GROUP#    MEMBERS ARC STATUS
---------- ---------- --- ----------------
         1          2 YES INACTIVE
         2          2 NO  CURRENT
         3          2 YES INACTIVE

SQL>

5、clear生成非当前的日志;

SQL>alter database clear logfile group1;

数据库已更改。

SQL>

6、继续打开数据库;

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-00313: 无法打开日志组 2 (用于线程 1) 的成员
ORA-00312: 联机日志 2线程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
ORA-00312: 联机日志 3 线程 1: 'F:\REDO\REDO02_B.LOG'


SQL>

SQL> alter database clear logfile group 2;
alter database clear logfile group 2*
第 1 行出现错误:
ORA-00350: 日志 2(实例 orcl 的日志, 线程 1) 需要归档
ORA-00312: 联机日志 2 线程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
ORA-00312: 联机日志 2 线程 1: 'F:\REDO\REDO02_B.LOG'

报错;因为group2是当前状态;

此时只能从其它目录copy有效备份。然后在alter database;

SQL>alter database clear unarchived logfile group2;

数据库已更改。

然后再重建Group 3,方法同重建 Group 1;

SQL> alter database clear logfile group 3;

数据库已更改。

SQL> alter database open;

数据库已更改。

注意:倘若没有物理有效备份文件,数据库则将无法打开;用clear logifle这种方法,对于处于CURRENT状态的Redo,只能通过COPY有效的物理备份去打开数据库,否则无法打开;

B、Resetlogs打开恢复方法

1、关闭数据库;

2、手动删除所有redo文件;

3、启动数据库;

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             276827012 bytes
Database Buffers          327155712 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 联机日志 1 线程 1: 'F:\REDO\REDO01_B.LOG'

4、使用Recover database until cancel;

SQL> recover database until cancel;
完成介质恢复。

此时还是无法打开数据库;

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

5、通过RESETLOGS打开数据库:

SQL>alter database open resetlogs;

数据库已更改。

此种方法应该可以说超越clear logfile了,在没有数据库冷备份数据文件的前提下,可以考虑此种方法。但是要注意的是:

通过NORESETLOGS选项是无法正常打开数据库的。通过此种方法恢复数据库建议恢复之后必须立即做个全备份。因为resetlogs已经清除了所有的日志序列。

C、通过重建控制文件恢复redo

1、关闭数据库;

2、手动删除所有redo文件;

3、启动数据库;

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             276827012 bytes
Database Buffers          327155712 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 联机日志 1 线程 1: 'F:\REDO\REDO01_B.LOG'、

4、获得重建控制文件脚本:

SQL>alter database backup controlfile to trace;

数据库已更改。

SQL>@?/rdbms/admin/gettrcname.sql;

TRACE_FILE_NAME
--------------------------------------------------------------------------------

E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP/orcl_ora_1136.trc

编辑以上文件就可以获得重建控制文件的脚本了。

5、运行生成的生成控制文件的脚本:

SQL> STARTUP NOMOUNT
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             281021316 bytes
Database Buffers          322961408 bytes
Redo Buffers                7135232 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 (
  9      'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG',
 10      'F:\REDO\REDO01_B.LOG'
 11    ) SIZE 50M,
 12    GROUP 2 (
 13      'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG',
 14      'F:\REDO\REDO02_B.LOG'
 15    ) SIZE 50M,
 16    GROUP 3 (
 17      'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG',
 18      'F:\REDO\REDO03_B.LOG'
 19    ) SIZE 50M
 20  -- STANDBY LOGFILE
 21  DATAFILE
 22    'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
 23    'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
 24    'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
 25    'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
 26    'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
 27    'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST.DBF'
 28  CHARACTER SET ZHS16GBK
 29  /

控制文件已创建。

6、以resetlogs方式打开数据库:

SQL>alter database open resetlogs;

数据库已更改。

SQL>

7、全备数据库;

此种方法稍微繁琐了点。但是稳妥。

综上三种方法都是在正常关闭数据库的情况下丢失redo文件的恢复方法。这三种方法中的每种恢复过来之后,数据都不会丢失,因为数据库正常关闭,不会有数据存于redo中。一定要注意的是凡是通过“alter database open resetlogs”方式打开数据库的,必须对数据库进行全备!

附:gettrcname.sql脚本

SELECT    d.VALUE
       || '/'
       || LOWER (RTRIM (i.INSTANCE, CHR (0)))
       || '_ora_'
       || p.spid
       || '.trc' trace_file_name
  FROM (SELECT p.spid
          FROM v$mystat m, v$session s, v$process p
         WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
       (SELECT t.INSTANCE
          FROM v$thread t, v$parameter v
         WHERE v.NAME = 'thread'
           AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
       (SELECT VALUE
          FROM v$parameter
         WHERE NAME = 'user_dump_dest') d
/

此脚本转自eygle的相关资料。

分享到:
评论

相关推荐

    Oracle备份恢复-redo文件损坏的各种场景恢复专题.docx

    Oracle数据库的恢复过程是数据库管理中的重要环节,特别是在redo文件损坏的情况下,恢复策略显得尤为重要。redo日志文件存储了数据库事务的所有更改信息,是保证数据一致性和完整性的关键组件。以下将详细介绍根据...

    福建省电力公司oracle培训教材--ORACLE的备份与恢复

    Oracle数据库的备份与恢复是确保数据安全和业务连续性的重要环节。在福建省电力公司的Oracle培训教材中,重点讲解了逻辑备份和物理备份两种主要方法。 逻辑备份,顾名思义,是通过读取数据库的逻辑结构,即记录集,...

    ORACLE备份恢复案例

    在Oracle数据库管理中,备份与恢复是至关重要的环节,它涉及到数据的安全性和业务连续性。本文将基于"ORACLE备份恢复案例"这一主题,详细阐述Oracle数据库的备份策略、备份类型、恢复方法以及如何处理实际工作中遇到...

    顶级DBA漫谈Oracle Rman备份与恢复

    Oracle RMAN 备份与恢复概述 Oracle RMAN(Recovery Manager)是一种强大的备份和恢复工具,旨在帮助DBA管理员更好地管理和保护Oracle数据库。以下是Oracle RMAN备份与恢复的相关知识点: 备份恢复概述 备份恢复...

    Oracle备份恢复-非归档&归档学习手册

    ### Oracle备份恢复-非归档&归档学习手册 #### 一、归档与非归档模式概述 在Oracle数据库管理中,备份和恢复是非常重要的环节。根据数据库的工作模式不同,备份策略也会有所不同。通常,Oracle数据库有两种工作...

    Oracle 11g 备份与恢复最佳手册

    ### Oracle 11g 备份与恢复最佳实践 #### 一、数据库故障类型与应对措施 ##### 1. 用户进程故障 (User Process Failure) - **定义**: 用户进程发生异常时,导致会话中断。 - **处理**: `Pmon`(Process Monitor ...

    oracle备份与恢复.ppt

    总的来说,Oracle备份与恢复策略需要根据业务需求和风险承受能力来定制,结合物理和逻辑备份,以及非归档和归档模式,以确保在系统出现故障时能迅速恢复到正常状态,最小化数据丢失。同时,定期测试备份和恢复流程也...

    Oracle数据库备份与恢复操作手册

    本操作手册将深入探讨Oracle数据库的备份与恢复策略,确保在面临数据丢失或系统故障时,能够迅速、有效地恢复业务运行。 首先,我们要了解数据库备份的基本概念。备份是预防数据丢失的重要手段,分为物理备份和逻辑...

    ORACLE 修改redo日志文件 大小的方法

    在Oracle数据库管理中,调整redo日志文件大小是一项重要的维护工作,这直接影响到数据库的性能与稳定性。本文将深入探讨如何在Oracle环境中修改redo日志文件的大小,以及这一操作的具体步骤和注意事项。 ### 一、...

    oracle的数据备份与恢复

    综上所述,Oracle的数据备份与恢复涉及到一系列复杂但必要的操作,包括备份类型的选择、恢复策略的制定以及具体实施的技术细节。通过阅读`oracle数据恢复.txt`、`oracle热备份步骤.txt`和`oracle冷备份步骤.txt`,你...

    ORACLE RMAN备份恢复指南

    RMAN(Recovery Manager)是Oracle数据库自带的一种高效且强大的备份与恢复工具。它不仅能够实现数据库文件、归档日志和控制文件的备份与恢复,还能执行完全或不完全的数据库恢复操作。相比于传统的备份工具,RMAN...

    ORACLE rman备份与恢复

    通过RMAN备份与恢复的测试,我们可以验证备份策略的有效性,确保在实际灾难情况下能够快速恢复数据库服务。测试涵盖了从备份配置、备份执行、到不同情况下的恢复步骤,全面评估了RMAN的功能和性能。 在实际操作中...

    oracle备份恢复五个案例

    当面临数据丢失或系统故障时,备份与恢复策略显得尤为重要。本文将深入解析Oracle数据库的五个关键恢复案例,帮助读者理解和掌握如何在不同情况下进行有效的数据恢复。 **恢复案例一:恢复个别表空间或者数据文件**...

    如何对Oracle数据库文件进行恢复与备份

    数据导入和导出是数据库备份与恢复的双向过程。增量导出是一种有效的备份策略,它允许数据库管理员根据需要只备份自上次备份以来发生改变的数据,分为完全增量、增量型和累积型三种类型。通过制定合理的备份计划,...

    oracle培训教材——备份与恢复以及常用命令

    Oracle数据库的备份与恢复是确保数据安全性和可用性的重要环节,尤其在企业级应用中,这一环节至关重要。本文将深入探讨Oracle数据库的备份策略、常用命令以及实际操作案例。 首先,Oracle数据库支持多种备份方式,...

    oracle数据库的备份与恢复

    Oracle数据库的备份与恢复是确保...综上所述,Oracle数据库的备份与恢复是一个多方面、多层次的过程,需要根据具体业务需求和风险承受能力来制定合适的备份策略。定期进行备份测试也是确保恢复计划有效性的关键步骤。

    Oracle备份与恢复案例

    ### Oracle备份与恢复案例 #### 第一章. 理解什么是数据库恢复 数据库作为现代企业和组织的关键资产之一,其可靠性和数据准确性至关重要。然而,在实际应用过程中,由于各种不可预见的原因,例如硬件故障、软件...

    Oracle备份与恢复培训教程.rar

    Oracle数据库是全球广泛使用的大型企业级关系型数据库管理系统,其备份与恢复机制是数据库管理员(DBA)必须掌握的关键技能之一。本培训教程将深入探讨Oracle数据库的备份策略、备份类型、恢复技术以及相关的工具和...

    oracle11G备份恢复讲义

    首先,要进行Oracle数据库的备份与恢复,我们需要了解备份与恢复的基本概念。备份就是将数据库的数据、日志文件、控制文件等信息完整地复制到另一个介质上;恢复则是指当数据库发生故障时,使用备份的介质将数据库...

Global site tag (gtag.js) - Google Analytics