ITPub博客

首页 > Linux操作系统 > Linux操作系统 > undo表空间删除后,数据库只能启动到mount状态

undo表空间删除后,数据库只能启动到mount状态

原创 Linux操作系统 作者:弦音有你 时间:2012-05-30 23:57:24 0 删除 编辑

修改了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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: undo表空间 (转)
请登录后发表评论 登录
全部评论

注册时间:2012-05-16

  • 博文量
    39
  • 访问量
    511632