竟然遇上了ORACLE的BUG

竟然遇上了ORACLE的BUG
2011-01-19

介绍:在创建物理standby的过程中,不想遇上了BUG.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
BUG表现

RMAN> list backupset 173;


List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time    
------- ---- -- ---------- ----------- ------------ -------------------
173     Full    6.92M      DISK        00:00:01     2011-01-19 19:31:20
        BP Key: 173   Status: AVAILABLE  Compressed: NO  Tag: TAG20110119T193119
        Piece Name: /u02/flash_recovery_area/ORCL/backupset/2011_01_19/o1_mf_ncnnf_TAG20110119T193119_6mflw89s_.bkp
  Standby Control File Included: Ckp SCN: 4813785      Ckp time: 2011-01-19 19:31:19

RMAN> @dup_standby.rman

RMAN> run
2> {
3>   set newname for datafile 1 to '/u03/oradata/orcl02/system01.dbf';
4>   set newname for datafile 2 to '/u03/oradata/orcl02/undotbs01.dbf';
5>   set newname for datafile 3 to '/u03/oradata/orcl02/sysaux01.dbf';
6>   set newname for datafile 4 to '/u03/oradata/orcl02/users01.dbf';
7>   set newname for datafile 5 to '/u03/oradata/orcl02/example01.dbf';
8>   set newname for datafile 6 to '/u03/oradata/orcl02/test_tbsp.dbf';
9>   set newname for datafile 7 to '/u03/oradata/orcl02/test.dbf';
10>   set newname for datafile 8 to '/u03/oradata/orcl02/test02.dbf';
11>
12>   duplicate target database for standby dorecover;
13> }
executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting Duplicate Db at 2011-01-19 19:32:51
using channel ORA_AUX_DISK_1

contents of Memory Script.:
{
   set until scn  4788916;
   restore clone standby controlfile;
   sql clone 'alter database mount standby database';
}
executing Memory Script

executing command: SET until clause

Starting restore at 2011-01-19 19:32:51
using channel ORA_AUX_DISK_1

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 01/19/2011 19:32:51
RMAN-03015: error occurred in stored script. Memory Script
RMAN-06026: some targets not found - aborting restore
RMAN-06024: no backup or copy of the control file found to restore
 
RMAN> **end-of-file**

RMAN>

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
原因分析

《Oracle Data Guard 11g Handbook》中这样解释:The problem is that RMAN sets the SCN to restore to, it sets it
too low and the backup save set with you standby control file in it cannot be used.

即RMAN设置的恢复SCN太低,于是包含standby控制文件的备份集就无法使用。

我们这个例子中,RMAN设置的恢复SCN=4788916,而standby控制文件中的SCN=4813785(backupset 173),确实RMAN的低。

顺便看一下当前系统logfile的SCN:
19:37:45 SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIV STATUS                           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- ------ -------------------------------- ------------- -------------------
         1          1         21   52428800          2 NO     CURRENT                                4788916 2011-01-18 22:20:25
         2          1         19   52428800          2 YES    INACTIVE                               4738420 2011-01-17 14:48:04
         3          1         20   52428800          2 YES    INACTIVE                               4784288 2011-01-18 22:00:25

20:05:43 SQL>

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
解决方法

解决方法很简单,只要做一次switch logfile,让RMAN的恢复SCN比standby控制文件中的SCN大,之后重新运行duplicate.

20:08:04 SQL> alter system switch logfile;

系统已更改。

20:08:11 SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIV STATUS                           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- ------ -------------------------------- ------------- -------------------
         1          1         21   52428800          2 NO     ACTIVE                                 4788916 2011-01-18 22:20:25
         2          1         22   52428800          2 NO     CURRENT                                4815502 2011-01-19 20:08:11
         3          1         20   52428800          2 YES    INACTIVE                               4784288 2011-01-18 22:00:25

20:08:13 SQL>

+++++++++++++++++++++++++++++++++++++++++++++++++
BUG修复情况

该BUG在10.2.0.4的版本中修复。

我的版本是:
20:08:13 SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

20:10:33 SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24131851/viewspace-684306/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24131851/viewspace-684306/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值