ITPub博客

首页 > 数据库 > Oracle > ORA-30012错误的解决过程

ORA-30012错误的解决过程

Oracle 作者:Mr_Man 时间:2016-10-09 11:07:28 0 删除 编辑

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>

[@more@]

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

请登录后发表评论 登录
全部评论

注册时间:2016-04-09

  • 博文量
    82
  • 访问量
    280480