ora-30012基本是由于参数文件中的undo_tablespace的值和控制文件中记录的值不一致导致的。可以使用alter system修改或者直接修改参数文件中有关undo_tablespace的部分和控制文件中的一致即可。
ora-01092 oracle instance terminated disconnection forced
ora-30012: 撤消表空间 ‘undostb1’ 不存在或类型不正确
查看了以下信息来确认undo表空间的问题
#sqlplus / nolog;
sql>connect / as sysdba;
sql>startup mount
sql>select name from v$datafile;
sql>show parameter undo;
sql>select name from v$tablespace;找到正确的表空间名称,做以下操作进行更改:
sql>create spfile from pfile;
sql>shutdown immediate;
sql>startup;
sql>show parameter undo;
sql>alter system set undo_management=auto scope=spfile;
修改表空间名称:sql>alter system set undo_tablespace=’正确的表空间’ scope=spfile;
重启验证:sql>shutdown immediate;sql>startup;
sql>create pfile from spfile;
sql>show parameter undo;
第二种方法:sql>startup mount;sql>select * from v$tablespace;sql>show parameter spfile;sql>select a.sid,a.value from v$spparameter a where a.name like ‘%undo_tablespace%’
可以看到undo表空间的名称和从控制文件中查到的名称不一致,下面修改spfile文件中有关undo表空间的部分,如下所示:sql>alter system set undo_tablespace=’******’ sid=’*****’;sql>select a.sid,a.value from v$spparameter a where a.name like ‘%undo_tablespace%’
查看和控制文件中的记录一致时,启动。