由于数据库所在服务器多次非正常关机导致,导致测试服务器上的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 表空间,个人认为没有必要。如确要这样操作,请你先提前备份旧表空间文件。