[20150309]使用冷备份做恢复的问题.txt

[20150309]使用冷备份做恢复的问题.txt

--做一个例子,说明冷备份做不完全恢复的问题。

1.测试环境:

SCOTT@test> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- ----------------------------------------------------------------
x86_64/Linux 2.4.xx            10.2.0.4.0     Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

create table t1 as select rownum id ,'test' data from dual ;

SYS@test> shutdown immediate ;
Database closed.
Database dismounted.
ORACLE instance shut down.

2.开始测试
--做1个冷备份。

$  cp -a test test0309

SYS@test> startup
ORACLE instance started.

Total System Global Area    473956352 bytes
Fixed Size                    2084776 bytes
Variable Size               230686808 bytes
Database Buffers            230686720 bytes
Redo Buffers                 10498048 bytes
Database mounted.
Database opened.

SCOTT@test> select current_scn ,sysdate from v$database ;
CURRENT_SCN SYSDATE
------------ -------------------
11997339850 2015-03-09 16:28:04

SCOTT@test> insert into t1 values (2,'aaaa');
1 row created.

SCOTT@test> commit ;
Commit complete.

SYS@test> shutdown immediate ;
Database closed.
Database dismounted.
ORACLE instance shut down.

3.开始使用冷备份恢复:
$  mv test test.good
$  mv test0309 test
--注意还有把redo拷贝过来,否则是不能恢复的。
$  cd test
$  mkdir redo.old
$  mv redo0* redo.old
$  cp ../test.good/redo0* .

4.开始恢复:

SYS@test> startup mount
ORACLE instance started.

Total System Global Area    473956352 bytes
Fixed Size                    2084776 bytes
Variable Size               230686808 bytes
Database Buffers            230686720 bytes
Redo Buffers                 10498048 bytes
Database mounted.

SYS@test> recover database until scn 11997339850;
ORA-00277: illegal option to the UNTIL recovery flag SCN
--看来以后应该使用scn号,问题更好定位。

SYS@test> recover database until time '2015-03-09 16:28:04';
ORA-00283: recovery session canceled due to errors
ORA-38760: This database instance failed to turn on flashback database

SYS@test> alter database flashback  off;
Database altered.

SYS@test> recover database until time '2015-03-09 16:28:04';
Media recovery complete.

SYS@test> alter database open read only ;
Database altered.

SYS@test> select * from scott.t1;
          ID DATA
------------ ----
           1 test

--可以发现是成功的。实际上面的recover什么都没有做。

SYS@test> shutdown immediate ;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@test> startup mount
ORACLE instance started.
Total System Global Area    473956352 bytes
Fixed Size                    2084776 bytes
Variable Size               230686808 bytes
Database Buffers            230686720 bytes
Redo Buffers                 10498048 bytes
Database mounted.
SYS@test> recover database until cancel ;
Media recovery complete.
SYS@test> alter database open read only ;
Database altered.

SYS@test> select * from scott.t1;
          ID DATA
------------ ----
           1 test

--可以发现并没有恢复后来插入的记录。因为我们使用的是冷备份,是正常关闭数据库的备份。
--继续测试:

SYS@test> shutdown immediate ;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@test> startup mount
ORACLE instance started.

Total System Global Area    473956352 bytes
Fixed Size                    2084776 bytes
Variable Size               230686808 bytes
Database Buffers            230686720 bytes
Redo Buffers                 10498048 bytes
Database mounted.
SYS@test> recover database until time '2015-03-11 16:28:04';
Media recovery complete.
SYS@test> recover database until time '2015-03-12 16:28:04';
Media recovery complete.

--可以发现即使我使用的时间是明天的日期,提示也是Media recovery complete.实际上如果看alert*.log文件。
ALTER DATABASE RECOVER  database until time '2015-03-12 16:28:04'
Mon Mar  9 16:43:35 2015
Media Recovery Start
parallel recovery started with 16 processes
Media Recovery Not Required
Completed: ALTER DATABASE RECOVER  database until time '2015-03-12 16:28:04'

--可以发现实际上什么都没有做。使用rman也一样。

RMAN> recover database ;
Starting recover at 2015-03-09 16:46:42
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=151 devtype=DISK
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 2015-03-09 16:46:43

SYS@test> alter database open read only ;
Database altered.

SYS@test> select * from scott.t1;
          ID DATA
------------ ----
           1 test

--如果打开数据库提示:
SYS@test> alter database open ;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

5.正确的做法是:

SYS@test> recover database until cancel using backup controlfile;
ORA-00279: change 11997339705 generated at 03/09/2015 16:24:54 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_03_09/o1_mf_1_71_%u_.arc
ORA-00280: change 11997339705 for thread 1 is in sequence #71

Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log '/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_03_09/o1_mf_1_71_%u_.arc'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

SYS@test> @ &r/logfile ;
GROUP# THREAD# SEQUENCE#      BYTES MEMBERS ARC STATUS     FIRST_CHANGE# FIRST_TIME          GROUP# STATUS     TYPE       MEMBER                        IS_
------ ------- --------- ---------- ------- --- ---------- ------------- ------------------- ------ ---------- ---------- ----------------------------- ---
     1       1        70   52428800       1 YES INACTIVE     11997254482 2015-03-07 11:00:42      1            ONLINE     /mnt/ramdisk/test/redo01.log  NO
     2       1        71   52428800       1 NO  CURRENT      11997305678 2015-03-08 19:00:22      2            ONLINE     /mnt/ramdisk/test/redo02.log  NO
     3       1        69   52428800       1 YES INACTIVE     11997227573 2015-03-06 22:00:09      3            ONLINE     /mnt/ramdisk/test/redo03.log  NO

SYS@test> recover database until cancel using backup controlfile;
ORA-00279: change 11997339705 generated at 03/09/2015 16:24:54 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_03_09/o1_mf_1_71_%u_.arc
ORA-00280: change 11997339705 for thread 1 is in sequence #71

Specify log: {=suggested | filename | AUTO | CANCEL}
/mnt/ramdisk/test/redo02.log
Log applied.
Media recovery complete.

SYS@test> alter database open read only ;
Database altered.

SYS@test> select * from scott.t1;
          ID DATA
------------ ----
           1 test
           2 aaaa

--实际上正确理解oracle数据库,以上问题的解决思路很好理解。这种方式视乎rman不好解决,只能取一个控制文件的备份来恢复数据库。
--因为冷备份的控制文件数据文件都是一致的,ok的。

--还有什么方法在rman下解决问题呢?我不知道。。。。

时间: 2024-09-28 15:10:28

[20150309]使用冷备份做恢复的问题.txt的相关文章

[20170623]利用传输表空间恢复部分数据.txt

[20170623]利用传输表空间恢复部分数据.txt --//昨天我测试使用传输表空间+dblink,上午补充测试发现表空间设置只读才能执行impdp导入原数据,这个也很好理解. --//这样的操作模式仅仅减少expdp生成原数据的过程. --//我想一下,rman也支持建立传输表空间的命令.我仔细看了以前的笔记,发现这样最大的有点不用设置只读,实际上它是通过建立辅组实 --//例来建立传输文件,理论讲可以恢复到特定的scn,这样可以利用它解决一些误操作的问题,还是通过例子来说明问题. 1.环

[20170627]使用TSPITR恢复表空间.txt

[20170627]使用TSPITR恢复表空间.txt --//RMAN提供了一种实现所谓TSPITR(Tablespace Point-In-Time Recovery)的技术,通过简单的一个语句,就可以在主库不停库(很吸引人) --//的情况下,利用备份集和连续的归档日志,实现表空间级别的定点恢复. --//实际上rman就是把人工一步一步执行的命令打包,执行恢复工作,减轻dba负担.我一直认为这个不是很实用,前几天做了利用传输表空 --//间的测试,感觉那个更实用一些. --//blog.

[20170623]利用传输表空间恢复数据库2.txt

[20170623]利用传输表空间恢复数据库2.txt --//继续上午的测试,测试truncate,是否可行,理论讲应该没有问题.我主要的目的测试是否要切换日志. --//参考链接 : http://blog.itpub.net/267265/viewspace-2141166/ 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER -------------------------

灾难让CIO措手不及 如何做恢复计划[1]

2008年伊始, 一场罕见的暴雨雪袭击了中国华南大部份地区.与此同时,大范围的雪灾大停电也让CIO措手不及,突如其来的灾难给依赖IThttp://www.aliyun.com/zixun/aggregation/32593.html">系统运行的企业带来毁灭性打击. 雪灾引起的大停电灾难 "幸运之神永远只关照那些有准备的人",在这次大停电事件中这句话再次得到验证."这次太惊险了!"回忆起春节前暴风雪造成的停电事故,湖南星通公司CIO陈风至今仍有些后怕

[20160524]rman备份与检查点4.txt

[20160524]rman备份与检查点4.txt --链接: http://blog.itpub.net/267265/viewspace-2105221/ http://blog.itpub.net/267265/viewspace-2105223/ --昨晚仔细思考,重复测试看看,使用新的控制文件是否可以恢复.感觉我的问题在于我做了catalog注册了备份文件时丢失某些信息.重新 --测试看看. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING      

[20151025]linux下删除数据文件的恢复细节3

[20151025]linux下删除数据文件的恢复细节3.txt --以前曾经写过一篇关于 --链接:http://blog.itpub.net/267265/viewspace-763969/ --里面提到实际上这种方式对于生产系统不是很合适,而且生产系统情况非常复杂,不可能出现删除数据文件时没有事务产生. --这种方式仅仅适合no archivelog的模式(没有办法的选择),我当时还提到这种方式一定要快,因为我的测试执行 alter system --checkpoint;,数据库直接cr

探索ORACLE之RMAN_07恢复

探索ORACLE之RMAN_07恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com   备份的终极目的是为了更好的将数据恢复和还原过来,在前面的章节中我们已经重点谈完了RMAN的备份,实际上也穿插的谈了些复杂的完整恢复.当然在这节我们将会由浅入深的详细谈谈在几种不同情况下的数据库恢复. 1.     数据文件的丢失恢复 1.1    在wwl表空间上创建5张表,并添加数据. SQL> create

oracle数据库冷备份的方法_oracle

冷备份是数据库文件的物理备份,通常在数据库通过一个shutdown normal或shutdown immediate 命令正常关闭后进行.当数据库关闭时,其使用的各个文件都可以进行备份.这些文件构成一个数据库关闭时的一个完整映像.冷备份通常要备份以下文件:所有数据文件所有控制文件所有联机重做日志初始化参数文件initsid.ora(可选)先执行以下SQL语句查看所有需要备份的文件: 复制代码 代码如下: SVRMGR> select * from v$datafile;SVRMGR> sel

oracle数据库脱机备份(冷备份)与注意事项

冷备份是数据库文件的物理备份,通常在数据库通过一个shutdown normal或shutdown immediate 命令正常关闭后进行.当数据库关闭时,其使用的各个文件都可以进行备份.这些文件构成一个数据库关闭时的一个完整映像. 冷备份通常要备份以下文件: 所有数据文件 所有控制文件 所有联机重做日志 初始化参数文件initsid.ora(可选) 先执行以下SQL语句查看所有需要备份的文件:  代码如下 复制代码 SVRMGR> select * from v$datafile; SVRMG