Oracle 11g参数修改错误导致数据库无法启动的处理方法.[ORA-01034,ORA-27101,ORA-00824]

由于为了更快的处理一个大表,我对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
------------------------------------ ---------------------- ------------------------------
undo_management                      string                 AUTO
undo_retention                       integer                900
undo_tablespace                      string                 UNDOTBS1

这下就清楚了,是回滚段的设置被恢复到了最初状态,从而无法找到现在的新回滚段.
手工修改先前的参数配置文件:init.ora.4262009164718
然后从新更新pfile的设置; 再次从起数据库,到此,数据库恢复正常.

你可能感兴趣的:(oracle,oracle,11g,11g,常见错)