1、故障现象:
data guard切换时,原来的standby节点无法启动,报ORA-30012错误,内容为:
undo tablespace '%s' does not exist or of wrong type |
2、问题定位:
因为是standby节点无法启动,怀疑primary节点和standby节点的undo_tablespace名称不同:
a)、在primary节点上检查undo参数:
SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDTBS1 |
b)、因为备用节点无法启动,且spfile为裸设备,使用strings命令检查undo参数
$ strings '/dev/rlv_spfile'|grep -i undo *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' |
c)、找到错误的原因了
在primary节点上,undo_tablespace是UNDTBS1,而standby节点上undo_tablespace是UNDOTBS1,undo表空间名称不同,但切换过来后,在standby节点上不存在UNDOTBS1表空间,只要standby节点上将undo_tablespace参数改为UNDTBS1就可以
3、解决过程
在standby节点上操作:
a)、关闭数据库,用spfile成生pfile
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> create pfile='/tmp/initorcl.ora' from spfile='/dev/rlv_spfile'; File created. |
b)、修改生成的pfile文件,将*.undo_tablespace='UNDOTBS1'修改为*.undo_tablespace='UNDTBS1'
c)、用修改过的pfile生成spfile
[oracle@oracle ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 28 10:24:00 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. SQL> create spfile='/dev/rlv_spfile' from pfile='/tmp/initorcl.ora'; File created. |
d)、启动数据库
SQL> startup; ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1218292 bytes Variable Size 71305484 bytes Database Buffers 88080384 bytes Redo Buffers 7168000 bytes Database mounted. Database opened. SQL> |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22049049/viewspace-1029146/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22049049/viewspace-1029146/