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%'
查看和控制文件中的记录一致时,启动数据库。
(笔者原创文章,转载请注明出处:https://blog.csdn.net/LFCuiYs)谢谢!