您的位置:首页 > 数据库

RAC环境STANDBY数据库只能有一个实例在进行日志恢复工作

2011-04-22 20:51 537 查看
11g的STANDBY数据库可以在应用日志的同时打开数据库,但是对于RAC环境,这里有一些小的问题。
  即使是RAC环境,STANDBY数据库也只能有一个实例在进行日志恢复工作。但是STANDBY的两个节点是可以同时打开进行READ ONLY访问的。而且11g还支持在进行恢复的时候打开数据库。那么Oracle是否支持在恢复的时候,同时打开两个节点进行只读访问呢。根据测试发现,这种操作是被禁止的:SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 1.7108E+10 bytes
Fixed Size 2101632 bytes
Variable Size 3344420480 bytes
Database Buffers 1.3757E+10 bytes
Redo Buffers 4431872 bytes数据库装载完毕。
SQL> set pages 100 lines 120
SQL> column unique_db_name format a15
SQL> column primary_db_unique_name format a25
SQL> select name,
2 open_mode,
3 database_role,
4 guard_status,
5 db_unique_name,
6 primary_db_unique_name
7 from v$database;

NAME OPEN_MODE DATABASE_ROLE GUARD_S DB_UNIQUE_NAME PRIMARY_DB_UNIQUE_NAME
--------- ---------- ---------------- ------- ------------------------------ -------------------------
RAC11G MOUNTED PHYSICAL STANDBY NONE rac11g_s rac11g

SQL> select instance_name, status from gv$instance;
INSTANCE_NAME STATUS
---------------- ------------
rac11g1 MOUNTED

SQL> alter database recover managed standby database disconnect from session;
数据库已更改。
而实例2尝试启动数据库则会报错:SQL> startup
ORACLE 例程已经启动。

Total System Global Area 1.7108E+10 bytes
Fixed Size 2101632 bytes
Variable Size 3478638208 bytes
Database Buffers 1.3623E+10 bytes
Redo Buffers 4431872 bytes数据库装载完毕。
ORA-01187: 由于验证测试失败而无法从文件 1 读取
ORA-01110: 数据文件 1: '+DATA/rac11g/rac11g_system_1_1g'


SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
rac11g2

如果说这个错误不是很明确,那么alert文件里面的错误信息就清楚多了:Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 1 failed verification tests
ORA-01108: file 1 is in backup or media recovery
ORA-01110: data file 1: '+DATA/rac11g/rac11g_system_1_1g'
File 1 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 2 failed verification tests
ORA-01108: file 2 is in backup or media recovery
ORA-01110: data file 2: '+DATA/rac11g/rac11g_sysaux_1_1g'
File 2 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 3 failed verification tests
ORA-01108: file 3 is in backup or media recovery
ORA-01110: data file 3: '+DATA/rac11g/rac11g_undotbs1_1_4g'
File 3 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 4 failed verification tests
ORA-01108: file 4 is in backup or media recovery
ORA-01110: data file 4: '+DATA/rac11g/rac11g_undotbs2_1_4g'
File 4 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 5 failed verification tests
ORA-01108: file 5 is in backup or media recovery
ORA-01110: data file 5: '+DATA/rac11g/rac11g_users_1_4g'
File 5 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 6 failed verification tests
ORA-01108: file 6 is in backup or media recovery
ORA-01110: data file 6: '+DATA/rac11g/rac11g_ndmain_1_32g'
File 6 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 7 failed verification tests
ORA-01108: file 7 is in backup or media recovery
ORA-01110: data file 7: '+DATA/rac11g/rac11g_ndmain_2_32g'
File 7 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 8 failed verification tests
ORA-01108: file 8 is in backup or media recovery
ORA-01110: data file 8: '+DATA/rac11g/rac11g_ndmain_3_32g'
File 8 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 9 failed verification tests
ORA-01108: file 9 is in backup or media recovery
ORA-01110: data file 9: '+DATA/rac11g/rac11g_ndmain_4_32g'
File 9 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 10 failed verification tests
ORA-01108: file 10 is in backup or media recove
ca94
ry
ORA-01110: data file 10: '+DATA/rac11g/rac11g_ndmain_5_32g'
File 10 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 11 failed verification tests
ORA-01108: file 11 is in backup or media recovery
ORA-01110: data file 11: '+DATA/rac11g/rac11g_ndmain_6_32g'
File 11 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 12 failed verification tests
ORA-01108: file 12 is in backup or media recovery
ORA-01110: data file 12: '+DATA/rac11g/rac11g_undotbs1_2_32g'
File 12 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 13 failed verification tests
ORA-01108: file 13 is in backup or media recovery
ORA-01110: data file 13: '+DATA/rac11g/rac11g_undotbs2_2_32g'
File 13 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 14 failed verification tests
ORA-01108: file 14 is in backup or media recovery
ORA-01110: data file 14: '+DATA/rac11g/rac11g_perfstat_1_8g'
File 14 not verified due to error ORA-01108
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 201 failed verification tests
ORA-01122: database file 201 failed verification check
ORA-01110: data file 201: '+DATA/rac11g/rac11g_temp_1_4g'
ORA-01203: wrong incarnation of this file - wrong creation SCN
File 201 not verified due to error ORA-01122
Errors in file /data/oracle/diag/rdbms/rac11g_s/rac11g2/trace/rac11g2_dbw0_1093.trc:
ORA-01186: file 202 failed verification tests
ORA-01122: database file 202 failed verification check
ORA-01110: data file 202: '+DATA/rac11g/rac11g_temp_2_16g'
ORA-01206: file is not part of this database - wrong database id
File 202 not verified due to error ORA-01122
ORA-1187 signalled during: ALTER DATABASE OPEN...

显然Oracle不允许一个实例进行恢复的时候,另外一个实例只读打开。不过Oracle11g是允许当前实例进行恢复的同时打开数据库的,而且这个实例只读打开数据库后,另外一个实例也可以只读打开。具体的过程可以参考:但是这种情况下,Oracle会自动停止后台的恢复过程。而且似乎一旦这种情况发生过,下次就没有办法再次在恢复的时候打开数据库,这时会报错:SQL> alter database open;
alter database open
*第 1 行出现错误:
ORA-01154: 数据库忙。现在不允许打开, 关闭, 装载和卸装

现在还不清楚为什么会出现这个ORA-1154的错误,怀疑是bug导致的,但是这个错误的出现意味着无法在恢复的时候只读打开了。下面从另一个方面验证这种情况:SQL> alter database recover managed standby database cancel;
数据库已更改。
SQL> alter database open;
数据库已更改。
把另一个节点也打开:SQL> alter database open;
数据库已更改。
下面在实例1关闭数据库,并尝试进行恢复:SQL> alter database close;
数据库已更改。
SQL> alter database recover managed standby database disconnect from session;
数据库已更改。
似乎成功了,但是通过查询V$DATAGUARD_STATUS就可以看到,实际上恢复过程报错停止了:SQL> select message from v$dataguard_status
2 where message_num > (select max(message_num) - 2 from v$dataguard_status);

MESSAGE
--------------------------------------------------------------------------------------
MRP0: Background Media Recovery terminated with error 1153
MRP0: Background Media Recovery process shutdown

通过下面的命令也可以看到,实际上当前并没有进行恢复:SQL> alter database recover managed standby database cancel;
alter database recover managed standby database cancel
*第 1 行出现错误:
ORA-16136: 受管备用恢复未激活

可以看到,Oracle虽然在11g支持了应用归档的时候只读打开。但是对于另外一个节点,仍然是无法访问的。而且存在bug,会导致本节点在应用归档日志的时候也无法只读打开数据库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐