Oracle数据库断电后不能打开的解决

数据库突然断电后,不能打开。或者偶尔能打开,但是很快就关闭。  原因可能很多。但是解决问题只有一种办法:看trace日志,alert错误日志

  简单写下我的解决过程:

1,在alert日志中:

  错误如下两种:

ORA-00600: internal error code, arguments: [4193], [1526], [1543], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [151], [543], [], [], [], [], []

2,查看alert日志:

Errors in file e:\oracle\product\10.2.0\db_1\admin\orcl\udump\orcl_ora_2540.trc:

ORA-00600: 内部错误代码, 参数: [4194], [37], [26], [], [], [], [], []

3,去查看orcl_ora_2540.trc日志文件,

  通过错误信息确定当前出错的回滚段:0~10,

4,修改pfile(注意保存以前pfile):

  加入如下代码:

*.undo_management='MANUAL‘(将auto修改为MANUAL) _corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

5,现在输入命令:

SQL>startup;

  就可以看到数据库正常启动了。

6,新建新的undo表空间

create undo tablespace undotbs2 datafile 'D:\ORACLE\PRODUCT\10.0.2\ORADATA\orcl\undotbs2.dbf';(自己的目录)

7,重定位到新的表空间:

alter system set undo_tablespace=undotbs2;

8,删除旧的表空间:

drop tablespace undotbs2;

9,修改pfile,将undo_management 由手动改回自动,修改undo_tablespace指向新的表空间,去掉

_corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

  修改如下:

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS2'

*.user_dump_dest='E:\oracle\product\10.2.0\db_1/admin/orcl/udump'

10,输入命令:

startup pfile=’……ora'

11,create spfile from pfile (注意备份)。( spfile = E:\ORACLE\PRODUCT\10.2.0\DB_1\DBS\SPFILEORCL.ORA)

12,shutdown immediate;

13,startup ;ok

附:一些有用的命令:

host lsnrctl status;查看当前例程状态

show parameter undo; 查看当前使用的undo表空间

SELECT SEGMENT_NAME, OWNER, TABLESPACE_NAME, STATUS FROM DBA_ROLLBACK_SEGS;

你可能感兴趣的:(数据库,oracle)