`

Oracle 不完全恢复

 
阅读更多
不完全恢复

指的恢复到某一个时间点,在这个时间点scn之后的操作会全部消失
recover datafile until scn xxxx;

recover database until scn xxxx;
recover database until sequence xx;--恢复到哪个日志文件截止
recover database until xx;--恢复到哪个时间点

--此时,数据文件头上的scn会小于控制文件的scn号,需要resetlogs才能打开数据库。
alter database open resetlogs;

--当resetlogs打开后,数据库会重置redo日志,redo文件也会重建。控制文件的scn回退到与数据文件一致。

sys@ORCL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
         1          1          0   52428800          1 YES UNUSED                       0
         2          1          0   52428800          1 YES UNUSED                       0
         3          1          1   52428800          1 NO  CURRENT               13808014 17-7月 -13

--resetlog的模式,若为了恢复数据,建议在其他机器上进行恢复,然后同步到生产环境中。


当前状态的在线重做日志文件丢失(不存在备份)

需要不完全恢复,原理就是使用数据库备份恢复,然后利用日志(重做日志和在线重做日志)恢复到最大的scn,即当前状态的在线重做日志的上一个
已备份的日志截止scn。

最后需要recover database until cancel命令打开数据库。 即恢复到输入cancel的那一刻
通过
alter database open resetlog;--打开数据库



--当非当前日志(状态为inactive)丢失,或损坏时,不会影响数据库,因为事务都已经写入数据库

alter database drop logfile group 3;
alter database clear logfile group 3;

alter database add logfile group 2 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG' size 50m;

--简单测试了下,当shutdown abort后,数据库不会做checkpoint,所以日志文件状态仍为active,当active的非当前日志丢失后,
--无法通过restore恢复,恢复后仍会提示logfile不存在,也无法drop掉,提示实例恢复仍需要。

--当resetlog恢复后,resetlog备份集仍可以使用。它会自动跳过resetlog之后的日志文件,及使用resetlog之后重置的日志文件进行恢复。


--当控制文件损坏,恢复的方法有两种
1.利用trace语句备份的控制文件进行恢复
alter database backup controlfile to trace as 'c:\a.txt';--生成控制文件的备份至c盘的a.txt文件
alter database backup controlfile to trace as 'c:\a.txt' resetlogs;--生成resetlog模式的控制信息
alter database backup controlfile to trace as 'c:\a.txt' noresetlogs;--生成noresetlog模式的控制信息

--NORESETLOGS选项生成的控制文件语句仅仅用在 当前版本的在线日志是可用的状态。
--RESTLOGS选项用在在线日志不可用的状态



alter database backup control file to trace;--备份到控制文件到trace文件中。

生成的trace文件信息如下:

STARTUP NOMOUNT  --nomount状态打开数据库,因为控制文件损坏
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16   --最大日志文件数
    MAXLOGMEMBERS 3 --日志文件的镜像最多有三个,此参数在10g不起作用,限制不住
    MAXDATAFILES 100 --控制文件预留的空间大小,要能保留100个数据文件的记录。当增大此数,会自动增加控制文件的大小
    MAXINSTANCES 8 --最大的实例个数,实际上可以超过8个
    MAXLOGHISTORY 292 --日志的历史的条数限制
LOGFILE --日志文件
  GROUP 1 (
    'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG',
    'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\LOG\REDO04.LOG'
  ) SIZE 50M,
  GROUP 2 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
  GROUP 3 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M

DATAFILE
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF'
CHARACTER SET ZHS16GBK --字符集
;


select * from $archived_log;--归档日志的信息
select * from v$log_history;--日志i切换就记录,当非归档模式,也可以从此查看

创建日志镜像
alter database add logfile member 'F:\oracle\product\10.2.0\oradata\orcl\LOG\redo04.log' to group 1;

--当增加数据文件,或者增加日志文件时,建议通过trace的方式备份下控制文件。



2.利用rman catalog模式下,恢复控制文件

只能启动到nomount状态,控制文件损坏,Oracle无法判断其target DB,因为一个catalog DB对应多个target DB。
需要通过DBID告诉Oracle需要恢复那个target DB。
rman target sys/system@orcl catalog rman/rman@test
set dbid=xxxxxxxx
list backup of controlfile;
restore controlfile--Oracle通过以下参数寻找恢复控制文件的位置 show parameter control_files
--恢复后,启动到mount状态会发现控制文件的checkpoint_change#比数据文件的checkpoint_change#小。
需要以下命令进行启动
recover database using backup controlfile;--告诉Oracle此控制文件是旧的  

auto--输入auto,Oracle会自动根据备份的archive log进行恢复,但不是真正恢复,应该是Oracle内部在做检查
    --直到恢复到当前联机日志,提示找不到备份文件。这是因为控制文件损坏,Oracle不知道这些信息

再次输入
recover database using backup controlfile;
 --需要手工指定当前联机日志文件的位置。

 F:\oracle\product\10.2.0\oradata\orcl\REDO01.LOG

 --最后输入以下命令,打开数据库

 alter database open with resetlogs;



一致性备份指冷备份,shutdown之后的os copy
select
* from v$flash_recovery_area_usage;
--闪回恢复区存放以下几类文件
1.控制文件(CONTROL FILE AUTOBACKUP)
2.在线日志
3.归档日志
4.rman 备份片
5.rman image copy 备份(COPY DATAFILE 4 to 'C:\xx.dbf')
6.闪回日志

show parameter db_recovery;
select * from v$flash_recovery_area_usage;
--监控闪回恢复区的大小


--数据库失败的类型
1.实例失败
2.数据库失败 --媒介失败

 

分享到:
评论

相关推荐

    Oracle RMAN异机不完全恢复

    ### Oracle RMAN 异机不完全恢复 #### 实验背景 在实际的数据库管理工作中,可能会遇到因误操作导致的数据丢失或损坏的情况。在这种情况下,如何有效地利用备份数据完成数据库的恢复工作至关重要。本实验模拟了一...

    oracle数据库不完全恢复

    Oracle数据库的不完全恢复是一种特殊的恢复机制,它用于在某些特定情况下,如丢失部分归档日志或数据文件,使得完全恢复无法实现时,通过应用部分日志来恢复数据库到故障发生前的一个特定状态。不完全恢复的目标是尽...

    ORACLE全库备份(不完全)恢复笔记

    ### ORACLE全库备份与不完全恢复操作指南 在企业级数据库管理中,ORACLE数据库因其卓越的性能、稳定性和安全性而备受青睐。然而,面对数据丢失或损坏的情况,掌握有效的备份与恢复策略至关重要。本文将详细介绍...

    Oracle数据库完全卸载干净工具

    为此,出现了“Oracle数据库完全卸载干净工具”,旨在简化这一过程。 这个工具的主要目标是自动化Oracle数据库的卸载流程,确保所有相关的配置文件、数据文件、日志文件以及注册表项都被正确清理。以下是该工具可能...

    Oracle12c完全参考手册.zip

    这个“Oracle12c完全参考手册”包含了关于Oracle数据库12c的所有关键信息,旨在为数据库管理员(DBA)、开发人员和其他IT专业人员提供详尽的指导。 Oracle12c的主要特性包括: 1. **多租户架构**:这是Oracle12c的...

    Oracle备份和恢复实例

    不完全介质恢复有不同类型的使用,决定于需要不完全介质恢复的情况,有基于撤消、基于时间和基于修改的不完全恢复。基于撤消恢复是在某种情况,不完全介质恢复必须被控制,DBA 可撤消在指定点的操作。基于时间和基于...

    oracle四大宝典之3:Oracle备份与恢复

    8. **恢复类型**:包括完整恢复、不完全恢复、介质恢复和逻辑恢复,每种恢复类型都有其适用场景和操作步骤。 9. **PL/SQL和SQL命令**:熟练掌握`RESTORE`、`RECOVER`等SQL命令,以及相关的PL/SQL包,如DBMS_...

    Oracle基于数据挖掘的不完全恢复

    本篇将探讨Oracle基于数据挖掘的不完全恢复方法,它允许你在误操作后恢复到特定的时间点,而非仅仅回滚到最近的备份状态。 首先,理解不完全恢复的概念。不完全恢复是一种在数据库关闭状态下进行的恢复方式,它可以...

    oracle备份与恢复案例电子书

    总结来说,Oracle备份与恢复是数据库管理中的核心技能,涉及到实例恢复、介质恢复、不同类型的不完全恢复策略,以及使用如`exp`和`imp`等工具进行数据迁移。了解并熟练掌握这些概念和技术,能够帮助DBA有效地应对...

    Oracle数据库备份与恢复之完全攻略

    本资源“Oracle数据库备份与恢复之完全攻略”提供了一份详尽的指导,涵盖了Oracle数据库的备份、还原过程及注意事项。 一、Oracle数据库备份类型 1. **完整备份**:包括数据库的所有数据文件、控制文件、参数文件...

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

    完全恢复是指从备份中恢复整个数据库,而不完全恢复是指从备份中恢复部分数据。 完全恢复与不完全恢复 完全恢复是指从备份中恢复整个数据库,通常在数据库崩溃或严重损坏时使用。完全恢复可以恢复整个数据库,包括...

    Oracle 备份与恢复

    - **归档模式**:允许归档重做日志文件,支持完全恢复和不完全恢复。 #### 三、备份与恢复解决方案 - **备份与恢复方法的系统需求**:包括硬件配置、软件环境等。 - **备份方法对比**:物理备份与逻辑备份之间的...

    Oracle数据库备份恢复工具

    2. 恢复模式:根据业务需求,可以选择完全恢复、不完全恢复或单个表空间恢复等模式。 3. 指定恢复时间点:如果选择了时间点恢复,用户需要确定到哪个时间点的数据需要恢复。 4. 执行恢复:工具会解析用户的恢复指令...

    Oracle完全学习手册

    管理Oracle数据库涉及多个方面,包括但不限于: - 数据备份与恢复:理解如何进行备份和恢复操作是保证数据安全的关键步骤。Oracle提供了RMAN(Recovery Manager)工具来管理备份、恢复和还原。 - 用户和权限管理:...

    windows之oracle不重装恢复

    描述中提到的方法主要是通过修复注册表来实现Oracle数据库的恢复,而不是完全重新安装。注册表是Windows系统中存储配置信息的重要部分,Oracle的许多设置和服务信息都存储在这里。因此,正确地备份和恢复注册表对于...

    Oracle 19c 备份恢复-导入导出

    Oracle 19c 备份恢复-导入导出 Oracle 19c 备份恢复-导入导出是指使用 Oracle 数据库提供的工具 exp 和 imp 实现数据库的备份恢复和数据的导入导出。本文将详细介绍 Oracle 19c 备份恢复-导入导出的基本命令、工作...

    Oracle11g备份恢复笔记文档

    #### 五、完全恢复与不完全恢复 - **完全恢复**:使用完整备份或部分备份将数据恢复到故障发生前的最后一次提交状态,确保数据完整无缺失。 - **不完全恢复**:恢复到故障发生前的某个时间点(或SCN),可能导致...

    oracle之数据备份恢复案例

    2. **不完全恢复**:不完全恢复则是指将数据库恢复到某个特定的时间点或系统变化号(SCN),这样可以在一定程度上减少数据丢失量。 #### 五、示例脚本 以下是一个简单的冷备份脚本示例: ```sql -- 脚本名: ...

    oracle 备份&恢复案例.doc

    本案例主要探讨了Oracle数据库的实例恢复和介质恢复,以及不同类型的不完全恢复。 首先,我们来看一下实例恢复。实例恢复主要针对的是由于系统故障、进程异常等原因导致数据库实例非正常关闭的情况。在这种情况下,...

Global site tag (gtag.js) - Google Analytics