http://fronkx.blog.hexun.com/33704658_d.html
由于为了更快的处理一个大表,我对Oracle 11g的参数做了修改导致部分参数出现错误,进而导致Oracle实例无法启动.
症状如下:
D:\>sqlplus hr/hr SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 6月 10 09:39:59 2009 Copyright (c) 1982, 2007, Oracle. All rights reserved. ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 进程 ID: 0 会话 ID: 0 序列号: 0 |
于是登录系统的控制台尝试手工启动实例:
D:\>sqlplus / as sysdba SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 6月 10 09:41:27 2009 Copyright (c) 1982, 2007, Oracle. All rights reserved. 已连接到空闲例程。 alter session set nls_language = "American" * 第 1 行出现错误: ORA-01034: ORACLE not available 进程 ID: 0 会话 ID: 0 序列号: 0 SQL> startup ORA-00824: cannot set SGA_TARGET or MEMORY_TARGET due to existing internal settings, see alert log for more information |
启动失败的过程进一步的证实了我的判断;
处理办法: 恢复系统上次正常启动的配置文件,Oracle 11g已经将配置文件备份到了pfile目录下,我们可以根据需要进行恢复.
SQL> create spfile from pfile='D:\ora11g\admin\orcl\pfile\init.ora.4262009164718' 文件已创建。 |
最后再次启动数据库实例,终于启动成功了,数据库配置恢复正常.
SQL> startup ORACLE 例程已经启动。 Total System Global Area 535662592 bytes Fixed Size 1334380 bytes Variable Size 171967380 bytes Database Buffers 356515840 bytes Redo Buffers 5844992 bytes 数据库装载完毕。 ORA-01092: ORACLE 实例终止。强制断开连接 进程 ID: 632 会话 ID: 170 序列号: 5 SQL> exit 从 Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开 |
数据库实例还是启动失败。查看数据库实例启动的日志(alert_<实例名>.log)。
分析日志文件在文档尾部(最新的记录)发现如下信息:
Wed Jun 10 11:14:49 2009 SMON: enabling cache recovery Errors in file d:\ora11g\diag\rdbms\orcl\orcl\trace\orcl_ora_5704.trc: ORA-30012: 还原表空间 'UNDOTBS1' 不存在或类型不正确 Error 30012 happened during db open, shutting down database USER (ospid: 5704): terminating the instance due to error 30012 Instance terminated by USER, pid = 5704 ORA-1092 signalled during: ALTER DATABASE OPEN... ORA-1092 : opiodr aborting process unknown ospid (812_5704) Wed Jun 10 11:14:53 2009 ORA-1092 : opitsk aborting process Wed Jun 10 11:22:48 2009 |
再看看数据库的回滚段参数是怎么样的:
SQL> show parameter undo; NAME TYPE VALUE |
这下就清楚了,是回滚段的设置被恢复到了最初状态,从而无法找到现在的新回滚段.
手工修改先前的参数配置文件:init.ora.4262009164718
然后从新更新pfile的设置; 再次从起数据库,到此,数据库恢复正常.
适用于12c