处理Oracle undo_tablespace导致数据库宕机的问题

2016-06-07  金鑫 

由于数据库所在服务器多次非正常关机导致,导致测试服务器上的oracle,在启动服务和监听的1~2min后宕机。

报错信息:

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist


问题定位与处理:

1、查询oracle alter日志文件

     关于alter日志文件在bdump文件夹下。11g用户可脑补 

     《oracle10g11g日志alter文件位置》http://blog.csdn.net/liqfyiyi/article/details/7431787



     通过查询当次启动及宕机日志发现:

      “Doing block recovery for file 2 block 57”

      



2、通过File文件定位表空间

     在数据库初始启动的间隙,执行:

     select file# ,name from v$datafile

     查询结果显示 file 2  对应的表空间为 UNDOTBS01


3、认识undo_tablespace 

     \oracle\product\10.2.0\oradata\orcl\UNDOTBS01.dbf  为系统撤销表空间(常见文件损坏和文件容量过大等导致异常),一般滞后于DB服务启动后检查,虽DB有recovery机制,但是如果recovery失败,将导致数据库宕机。


4、处理方案

     new新的undo表空间来接替之前UNDOTBS01的工作。


    a、创建undo tablespace :

    CREATE UNDO TABLESPACE UNDOTBS02 DATAFILE 'D:\oracle\product\10.2.0\oradata\orcl\UNDOTBS02.dbf' SIZE 2M REUSE AUTOEXTEND ON;


    b、切换undo tablespace:

    ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS02;


    c、重启数据库服务与监听


    ps:有些文档提示,删除旧的undo 表空间,个人认为没有必要。如确要这样操作,请你先提前备份旧表空间文件。



376°/3760 人阅读/0 条评论 发表评论

登录 后发表评论