修改了undo表空间之后 数据库只能启动到mount了
对于undo表空间 做了以下操作
在一个telnet会话中运行了语句:
SQL>conn scott/tiger
SQL>insert into dept values(10,'microsoft','America')
1 row created.
在另一个telnet会话中以sys身份执行以下语句,
SQL>alter system set undo_tablespace='UNDOTBS02' SCOPTE=BOTH;
System altered.
执行完这命令后,前一个telnet会话不知觉什么时候已断开,在此会话执行了
SQL>drop tablespace undotbs01 including contents and datafiles;
本来是期待出现以下结果,但是悲剧了,由于前一个会话不知道什么时候结束了,导致undotbs01被删除了。
ERROR at line 1:
ORA-30013: undo tablespace 'UNDOTBS' is currently in use
然后,shutdown了数据库重新启动。只是能够启动到mount状态,提示如下
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-30012: undo tablespace 'UNDO_TBS' does not exist or of wrong type
将数据库打开到mount状态(startup mount),执行以下命令:
发现undo的value为空。
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace
于是就创建了一个同名的undotbs01表空间(创建语法就省略了)
可在打开数据时,仍只能启动到mount状态。
突然想起来在执行以上所有操作之前,还进行了一个操作:
SQL>create spfile from pfile;
于是想到:
create spifle from pfile;
使得spfile引导使用了原来的undotbs空间信息(因为10g以后oracle默认使用spfile启动数据库)
还是spfile的问题,得重新create pfile from spfile,然后看一下pfile文件,undo_tablespace那里对应的是不是新建立的undo表空间,如果不是(果然是这里的问题,还一直以为是undo表空间修改的问题呢,虽然归根到底是它的原因,但是没有想到是pfile和spfile这里, 哎……太菜了,不过相信自己总有一天也会是大神,,呵呵呵呵呵呵),改过来,重新用pfile引导数据库启动,启动后再重建spfile
这样再次启动,OK!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26451903/viewspace-731510/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26451903/viewspace-731510/