- 浏览: 5161476 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
实验时间:2011-10-14 环境:RED HAT4,Oracle 10.0.20
基于Cancel的不完全恢复适用场景:Recover时,所需的某个归档日志损坏,或主机断电,current状态的联机日志损坏。
一、环境准备
以SCOTT用户登录,新建表EMP1,切换日志,再新建表EMP2,主机断电,删除当前日志文件,模拟文件损坏。具体命令如下:
SQL> conn scott/oracle
Connected.
SQL> create table emp1 as select * from emp;
Table created.
SQL> conn / as sysdba
Connected.
SQL> alter system switch logfile;
System altered.
SQL> conn scott/oracle
Connected.
SQL> create table emp2 as select * from emp;
Table created.
SQL> conn / as sysdba
Connected.
确认日志的位置。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 5 52428800 1 NO CURRENT 916653 14-OCT-11
2 1 4 52428800 1 YES ACTIVE 915569 14-OCT-11
3 1 3 52428800 1 YES INACTIVE 915566 14-OCT-11
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------------------------------------ ---
3 ONLINE /home/oracle/oracle/product/oradata/orcl/redo03.log NO
2 ONLINE /home/oracle/oracle/product/oradata/orcl/redo02.log NO
1 ONLINE /home/oracle/oracle/product/oradata/orcl/redo01.log NO
SQL> shutdown abort
ORACLE instance shut down.
SQL> !rm -f /home/oracle/oracle/product/oradata/orcl/redo02.log
二、恢复步骤
1、尝试打开数据库
SQL> startup
ORACLE instance started.
Total System Global Area 130023424 bytes
Fixed Size 1218100 bytes
Variable Size 67111372 bytes
Database Buffers 58720256 bytes
Redo Buffers 2973696 bytes
Database mounted.
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/home/oracle/oracle/product/oradata/orcl/redo02.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
2、尝试Clear
SQL> alter database clear logfile group 2;
alter database clear logfile group 2
*
ERROR at line 1:
ORA-01624: log 2 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 2 thread 1: '/home/oracle/oracle/product/oradata/orcl/redo02.log'
结果提示日志有用,不能Clear
3、在当前库做基于Cancel的不完全恢复(这个想法是错误的)
SQL> recover database until cancel;
ORA-00279: change 916503 generated at 10/14/2011 23:26:00 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_4_764549776.dbf
ORA-00280: change 916503 for thread 1 is in sequence #4
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 916653 generated at 10/14/2011 23:26:58 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_5_764549776.dbf
ORA-00280: change 916653 for thread 1 is in sequence #5
ORA-00278: log file '/home/oracle/oracle/product/archive/1_4_764549776.dbf' no longer needed for this recovery
ORA-00308: cannot open archived log '/home/oracle/oracle/product/archive/1_5_764549776.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/home/oracle/oracle/product/oradata/orcl/system01.dbf'
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/home/oracle/oracle/product/oradata/orcl/system01.dbf'
恢复之后,使用Resetlogs选项,仍无法打开数据库,提示数据文件不一致,System表空间需要进一步的恢复。
当前日志损坏时,不能基于当前的数据库做不完全恢复。只能用以前的备份,做一个基于Cancel的不完全恢复。
4、用以前的备份,做基于Cancel的不完全恢复(其实就是恢复到不能恢复为止)
SQL> shutdown abort
ORACLE instance shut down.
SQL> !cp /disk2/oracle/coldbak/*.dbf $ORACLE_BASE/oradata/orcl/
SQL> startup mount
ORACLE instance started.
Total System Global Area 130023424 bytes
Fixed Size 1218100 bytes
Variable Size 67111372 bytes
Database Buffers 58720256 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> recover database until cancel;
ORA-00279: change 916502 generated at 10/14/2011 23:13:45 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_4_764549776.dbf
ORA-00280: change 916502 for thread 1 is in sequence #4
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 916653 generated at 10/14/2011 23:26:58 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_5_764549776.dbf
ORA-00280: change 916653 for thread 1 is in sequence #5
ORA-00278: log file '/home/oracle/oracle/product/archive/1_4_764549776.dbf' no longer needed for this recovery
ORA-00308: cannot open archived log '/home/oracle/oracle/product/archive/1_5_764549776.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
SQL> alter database open resetlogs;
Database altered.
可以看到,最后数据可以打开了。
5、检查数据
SQL> conn scott/oracle
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
RECOVER_TEST TABLE
RECOVER_TEST2 TABLE
EMP_BAK TABLE
EMP1 TABLE
8 rows selected.
可以看到表EMP1存在,表EMP2不存在。因为EMP2的创建,是保存在当前REDO日志中的,而当前REDO日志损坏,所有当前日志中保存的操作全部丢失了。
归档日志、或者REDO日志损失,数据库就只能恢复到丢失的日志之前了。
数据库打开的前提之一:数据文件保持一致。当前数据库不一致无法打开数据库,只能根据以前一致的备份,恢复到最近的一致的时间点。
基于Cancel的不完全恢复适用场景:Recover时,所需的某个归档日志损坏,或主机断电,current状态的联机日志损坏。
一、环境准备
以SCOTT用户登录,新建表EMP1,切换日志,再新建表EMP2,主机断电,删除当前日志文件,模拟文件损坏。具体命令如下:
SQL> conn scott/oracle
Connected.
SQL> create table emp1 as select * from emp;
Table created.
SQL> conn / as sysdba
Connected.
SQL> alter system switch logfile;
System altered.
SQL> conn scott/oracle
Connected.
SQL> create table emp2 as select * from emp;
Table created.
SQL> conn / as sysdba
Connected.
确认日志的位置。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 5 52428800 1 NO CURRENT 916653 14-OCT-11
2 1 4 52428800 1 YES ACTIVE 915569 14-OCT-11
3 1 3 52428800 1 YES INACTIVE 915566 14-OCT-11
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------------------------------------ ---
3 ONLINE /home/oracle/oracle/product/oradata/orcl/redo03.log NO
2 ONLINE /home/oracle/oracle/product/oradata/orcl/redo02.log NO
1 ONLINE /home/oracle/oracle/product/oradata/orcl/redo01.log NO
SQL> shutdown abort
ORACLE instance shut down.
SQL> !rm -f /home/oracle/oracle/product/oradata/orcl/redo02.log
二、恢复步骤
1、尝试打开数据库
SQL> startup
ORACLE instance started.
Total System Global Area 130023424 bytes
Fixed Size 1218100 bytes
Variable Size 67111372 bytes
Database Buffers 58720256 bytes
Redo Buffers 2973696 bytes
Database mounted.
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/home/oracle/oracle/product/oradata/orcl/redo02.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
2、尝试Clear
SQL> alter database clear logfile group 2;
alter database clear logfile group 2
*
ERROR at line 1:
ORA-01624: log 2 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 2 thread 1: '/home/oracle/oracle/product/oradata/orcl/redo02.log'
结果提示日志有用,不能Clear
3、在当前库做基于Cancel的不完全恢复(这个想法是错误的)
SQL> recover database until cancel;
ORA-00279: change 916503 generated at 10/14/2011 23:26:00 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_4_764549776.dbf
ORA-00280: change 916503 for thread 1 is in sequence #4
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 916653 generated at 10/14/2011 23:26:58 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_5_764549776.dbf
ORA-00280: change 916653 for thread 1 is in sequence #5
ORA-00278: log file '/home/oracle/oracle/product/archive/1_4_764549776.dbf' no longer needed for this recovery
ORA-00308: cannot open archived log '/home/oracle/oracle/product/archive/1_5_764549776.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/home/oracle/oracle/product/oradata/orcl/system01.dbf'
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/home/oracle/oracle/product/oradata/orcl/system01.dbf'
恢复之后,使用Resetlogs选项,仍无法打开数据库,提示数据文件不一致,System表空间需要进一步的恢复。
当前日志损坏时,不能基于当前的数据库做不完全恢复。只能用以前的备份,做一个基于Cancel的不完全恢复。
4、用以前的备份,做基于Cancel的不完全恢复(其实就是恢复到不能恢复为止)
SQL> shutdown abort
ORACLE instance shut down.
SQL> !cp /disk2/oracle/coldbak/*.dbf $ORACLE_BASE/oradata/orcl/
SQL> startup mount
ORACLE instance started.
Total System Global Area 130023424 bytes
Fixed Size 1218100 bytes
Variable Size 67111372 bytes
Database Buffers 58720256 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> recover database until cancel;
ORA-00279: change 916502 generated at 10/14/2011 23:13:45 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_4_764549776.dbf
ORA-00280: change 916502 for thread 1 is in sequence #4
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 916653 generated at 10/14/2011 23:26:58 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_5_764549776.dbf
ORA-00280: change 916653 for thread 1 is in sequence #5
ORA-00278: log file '/home/oracle/oracle/product/archive/1_4_764549776.dbf' no longer needed for this recovery
ORA-00308: cannot open archived log '/home/oracle/oracle/product/archive/1_5_764549776.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
SQL> alter database open resetlogs;
Database altered.
可以看到,最后数据可以打开了。
5、检查数据
SQL> conn scott/oracle
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
RECOVER_TEST TABLE
RECOVER_TEST2 TABLE
EMP_BAK TABLE
EMP1 TABLE
8 rows selected.
可以看到表EMP1存在,表EMP2不存在。因为EMP2的创建,是保存在当前REDO日志中的,而当前REDO日志损坏,所有当前日志中保存的操作全部丢失了。
归档日志、或者REDO日志损失,数据库就只能恢复到丢失的日志之前了。
数据库打开的前提之一:数据文件保持一致。当前数据库不一致无法打开数据库,只能根据以前一致的备份,恢复到最近的一致的时间点。
发表评论
-
Oracle连接故障的排除
2024-09-09 22:33 451Oracle版本为11G,操作系统为Windows Ser ... -
Oracle数据库相关系统突然提示“SQLException:违反协议”
2024-02-19 15:50 1117SQLException:违反协议这个异常可能由很多的 ... -
CentOS在Docker中安装Oracle
2024-02-06 12:13 11621.拉取Oracle镜像,并检 ... -
Windows Server安装oracle数据库一直停在82%
2023-02-04 12:01 582网上有个说法:服务器超过一定数量的CPU后,将不能正常安装 ... -
ORA-04030错误处理
2023-02-04 11:52 2632【错误描述】 错误信息如下: ORA-04030:在尝 ... -
ORA-04030错误处理
2023-02-04 11:45 403【错误描述】 错误信息如下: ORA-04030:在尝 ... -
Linux安装MySQL数据库
2019-06-10 22:27 17781.进入安装包所在目录,解压: tar zxvf mysql- ... -
确定MySQL在Linux系统中配置文件的位置
2019-04-14 19:30 27661.通过which mysql命令来查看mysql的安装位置。 ... -
mysql set names 命令和 mysql 字符编码问题
2019-04-12 00:34 1143转自:https://www.cnblogs.com/digd ... -
MYSQL中取当前周/月/季/年的第一天与最后一天
2018-11-17 23:16 2202转自:https://blog.csdn.net/ ... -
Oracle删除大量数据的实践
2016-11-07 18:03 5818一、引言 从来没有 ... -
Oracle 数据库简明教程 V0.1
2016-03-23 21:01 2052供初学者入门学习使用,以开发者常见、常用的知识为主,基本上 ... -
Oracle拆分字符串函数
2016-03-23 10:58 3357create or replace type string ... -
Oracle数据库远程连接无响应
2016-03-21 10:20 4301故障现象: 服务器本机使用sqlplus / as s ... -
Oracle PGA详解
2015-10-21 15:34 11465转自:http://yanguz123.iteye.com/b ... -
Oracle12C导入dmp数据
2015-10-08 23:43 20532Oracle12C,发生了较大的变化。以前熟悉的东西变得陌 ... -
SQLLDR数据导入小结
2015-07-25 22:06 75231.创建数据表 CREATE TABLE ... -
Window7安装Oracle10
2015-03-06 12:14 1607每次安装都要百度,转到自己的博客上,找起来方便,还能增加访 ... -
Oracle SQL Developer 连接 Mysql 数据库
2015-02-25 19:36 3662下载JDBC包,解压缩这里只要mysql-connector- ... -
Mysql数据备份与恢复
2015-02-25 19:15 1349备份/恢复策略 1. 要定期做 mysql备份,并考虑系统可以 ...
相关推荐
Oracle数据库的不完全恢复是一种特殊的恢复机制,它用于在某些特定情况下,如丢失部分归档日志或数据文件,使得完全恢复无法实现时,通过应用部分日志来恢复数据库到故障发生前的一个特定状态。不完全恢复的目标是尽...
以下是对Oracle 11g基于RMAN的备份与恢复的详细说明: 1. 备份整个数据库: 要备份整个数据库,可以通过RMAN命令行工具进行操作。在命令行输入`rman target/`来启动RMAN,然后执行`backup database;`命令,这将备份...
本文档详细阐述了Oracle数据库的各种恢复策略,包括完全恢复和不完全恢复,以及高级恢复技术。 一、相关概念 1. 恢复的两个阶段:Oracle数据库的恢复过程分为Restore(还原)和Recover(恢复)两步。Restore是将...
- 基于时间(TIME)和基于修改(SCN)的恢复:如果DBA希望将数据库恢复到过去某个特定的时间点或系统更改号(SCN),这是一种理想的不完全介质恢复方法。 #### 二、数据库恢复案例测试环境 为了更好地理解和应用上述...
- **不完全介质恢复**:当无法进行完全恢复或不需要完全恢复时,可以执行不完全介质恢复。这包括基于撤消(CANCEL)、基于时间(TIME)或基于系统变更号(SCN)的恢复。 #### 第二章 数据库恢复案例测试环境 为了更好地...
以下是对Oracle数据库备份与恢复的详细阐述。 1. **备份类型** - **完整备份**:包括数据库的所有数据文件、控制文件、重做日志文件等,是最全面的备份方式。 - **增量备份**:基于上一次全备份或增量备份,只...
【Oracle 10g 服务器断电恢复】 在IT领域,数据库系统的稳定性和可靠性至关重要,尤其是在面临突发的自然灾害如洪水时。本案例中,客户的一台运行 Oracle 10g 数据库的 Windows Server 2003 服务器因暴雨导致的断电...
1. **恢复到特定时间点**:通过`recover database until time`或`recover database until cancel`命令,恢复到指定的时间点,适用于未记录在备份中的更改。 2. **介质恢复**:当数据文件或控制文件丢失时,使用`...
以下将详细介绍Oracle数据库备份与恢复的基本步骤和方法。 1. **备份类型** - **完整备份**:包括所有数据文件、控制文件、redo日志文件以及初始化参数文件等。 - **增量备份**:基于前一次全备或增量备份,只...
在介绍RMAN恢复方案之前,需要明确完全恢复和不完全恢复的区别。完全恢复是指在发生故障后,将数据库恢复到故障发生前的状态,并且不丢失任何已经提交事务的数据。而不完全恢复则是在恢复过程中丢失了部分已提交...
- 在备库上使用`RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL`命令进行恢复。 - 调整备库的参数文件,设置`db_unique_name`、`log_archive_config`、`log_archive_dest_*`等参数。 5. **同步与测试**...
本文将基于提供的部分内容,详细介绍Oracle数据库系统的紧急故障处理方法。 #### 二、数据文件损坏处理流程 当数据文件损坏时,需要按照以下步骤进行修复: 1. **确定损坏的数据文件**: - 使用命令`svrmgrl> ...
这个过程涵盖了从暂停归档日志传输、清理备库、备份和恢复控制文件到自动化恢复的整个流程,确保在Oracle DataGuard环境中能够正确地进行基于备库的恢复操作。请注意,实际操作时需根据具体的数据库配置和环境调整...
### Oracle Workflow 实例详解 #### 一、Oracle Workflow 基础 ##### 1.1 工作流概述 Oracle Workflow 是 Oracle 应用程序框架(OAF)的一部分,它提供了一个灵活且强大的机制来管理和自动化业务流程。通过定义...
### Oracle面试问题解析 #### 1. 解释冷备份和热备份的不同点以及各自的优点 在Oracle数据库管理中,备份是非常关键的一个环节,它能够帮助我们有效地保护数据免受意外损失。根据备份过程中数据库是否正常运行,...
在这种情况下,可能需要考虑使用备份软件的增量备份或者尝试使用Oracle的RMAN工具进行部分恢复。 **2.5.4 注意要点** - 在进行备份前,需要确保有足够的磁盘空间。 - 定期测试备份的恢复过程,以确保备份的有效性...
- 日志传输与应用:Oracle Dataguard基于重做日志文件的传输和应用实现数据同步,了解日志传输的工作原理对于处理备库问题非常重要。 - 重做日志管理:了解重做日志文件的自动归档、手动切换等机制,能够更好地控制...
在启用 Flashback 后,即使主库不可用,也能基于已有的日志数据恢复备库,保持 Data Guard 的保护。 总结来说,Dataguard 故障切换和恢复涉及了对 Switchover 和 Failover 的理解,以及熟练掌握相关 SQL 命令。同时...