Windows环境下的Oracle 11g在一次关机后,无法正常启动,且无法启动到mount状态,一直提示:
ORA-03113: end-of-file on communication channel Process ID: 4276 Session ID: 1286Serial number: 2 在D:\app\Administrator\diag\rdbms\wind\wind\trace目录里根据Process ID: 4276找到相应号码的trc文件查看(实例名_ora_XXXXX.trc都是前台服务器进程的trace文件),发现如下提示: Error:kccpb_sanity_check_2 Control filesequence number mismatch! fhcsq: 168754bhcsq: 168757 cfn 0 所以确认为控制文件问题引起。 首先退出了SQLPLUS,然后把库文件所在的整个目录备份了一份。 然后尝试restore控制文件: C:\> rman target/ RMAN> shutdownimmediate RMAN> startupnomount RMAN> restorecontrolfile from ‘D:\ptc\Windchill_10.0\ocu\oradata\wind\CONTROL03_WIND.CTL’; 完成以上操作后,重新进入SQLPLUS,启动数据库时问题依旧。 可以确认所有控制文件全部出了问题,因库文件等都存在,所以决定重建控制文件: C:\> sqlplus /nolog SQL> conn / as sysdba SQL> shutdown immediate SQL> startup nomount SQL> CREATE CONTROLFILE REUSE DATABASE "WIND"NORESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXDATAFILES 100 MAXINSTANCES 2 MAXLOGHISTORY 453 LOGFILE GROUP 1'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDREDO01.LOG' SIZE 50M, GROUP 2'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDREDO02.LOG' SIZE 50M, GROUP 3'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDREDO03.LOG' SIZE 50M DATAFILE 'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDBLOBS01.DBF', 'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDINDEX01.DBF', 'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDSYSAUX01.DBF', 'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDSYSTEM01.DBF', 'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDUNDOTBS01.DBF', 'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDUSERS01.DBF', 'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDWCAUDIT01.DBF' CHARACTER SET ZHS16GBK; SQL> RECOVER DATABASE; SQL> alter database open; SQL> alter tablespace temp add tmpfile'D:\ptc\Windchill_10.0\ocu\oradata\wind\WINDTEMP01.DBF' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE 5G; 完成以上步骤后,重启数据库正常。 ========================================================================== CREATE CONTROLFILE REUSE DATABASE "PARSEDB2"NORESETLOGS NOARCHIVELOG MAXINSTANCES 8 MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 Datafile 'F:\Program\Oracle\oradata\PARSEDB2\SYSTEM01.DBF', 'F:\Program\Oracle\oradata\PARSEDB2\SYSAUX01.DBF', 'F:\Program\Oracle\oradata\PARSEDB2\UNDOTBS01.DBF', 'F:\Program\Oracle\oradata\PARSEDB2\USERS01.DBF' LOGFILE GROUP 1 ('F:\Program\Oracle\oradata\PARSEDB2\redo01.log') SIZE 51200K, GROUP 2 ('F:\Program\Oracle\oradata\PARSEDB2\redo02.log') SIZE 51200K, GROUP 3 ('F:\Program\Oracle\oradata\PARSEDB2\redo03.log') SIZE 51200K; alter tablespace temp add tmpfile'F:\Program\Oracle\oradata\PARSEDB2\TEMP01.DBF' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE 5G;
==================================================================================
实际问题解决记录:(无法启动到mount状态)
ORA-03113: 通信通道的文件结尾,是一个通用的错误提示,很多错误都会产生这个错误提示。
本问题的最终原因是Control filesequence number mismatch
开始是通过网络连接方式(即如sqlplus user/mima@IP地址/服务名(或是sid,看sqlnet文件支持的命名方法))访问数据库服务端,发现错误提示如下:
ERROR: ORA-27101 Shared memory realm does not exist ORA-01034 ORACLE not available
于是,换成 以本地连接方式(即如sqlplus / as sysdba)访问数据库服务端,发现错误提示如下:
ERROR: ORA-01031: insufficient privileges
解决该错误后,继续以本地连接方式(即如sqlplus / as sysdba)访问数据库服务端,发现错误提示如下:
已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。
ORA-03113: 通信通道的文件结尾
注释:
网络连接方式要经过Oracle数据库软件的SQL*NET层来间接访问数据库服务端,而本地连接方式不用经过该层直接访问数据库服务端。由此可以看出,因为网络连接方式要经过Oracle数据库软件的SQL*NET层来间接访问数据库服务端,即多了一个环节,所以由此获得的错误提示不易于发现错误提示的本质原因(SQL*NET层错误的干扰不易于发现数据库服务端实例的错误)。故而,每次以网络连接方式连接时若有问题,就先以本地连接方式访问数据库服务端,看是否会有错误提示出现,若有,说明是数据库服务端实例的错误,若是没有,则应该考虑SQL*NET层的错误(即网络问题)。
以本地连接方式(即如sqlplus / as sysdba)访问数据库服务端的具体实际操作过程如下:
Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 C:\Users\h>set oracle_sid=parsedb2 C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 13:20:27 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR: ORA-01031: insufficient privileges 请输入用户名: ^V C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 13:33:22 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR: ORA-12560: TNS: 协议适配器错误 请输入用户名: ^V^V C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 13:34:27 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR: ORA-01031: insufficient privileges 请输入用户名: ^V C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 13:47:36 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 778387456 bytes Fixed Size 1374808 bytes Variable Size 444597672 bytes Database Buffers 327155712 bytes Redo Buffers 5259264 bytes ORA-03113: 通信通道的文件结尾 进程 ID: 1340 会话 ID: 191 序列号: 1 SQL> quit 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断 开 C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 13:48:49 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 778387456 bytes Fixed Size 1374808 bytes Variable Size 444597672 bytes Database Buffers 327155712 bytes Redo Buffers 5259264 bytes ORA-03113: 通信通道的文件结尾 进程 ID: 5896 会话 ID: 191 序列号: 1 SQL> SQL> + SP2-0042: 未知命令 "+" - 其余行忽略。 SQL> archive log list; ORA-24324: 未初始化服务句柄 ORA-01041: 内部错误, hostdef 扩展名不存在 SQL> quit 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断 开 C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 14:25:58 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. 已连接到空闲例程。 SQL> archive log list; ORA-01012: not logged on SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 778387456 bytes Fixed Size 1374808 bytes Variable Size 444597672 bytes Database Buffers 327155712 bytes Redo Buffers 5259264 bytes ORA-03113: 通信通道的文件结尾 进程 ID: 3196 会话 ID: 191 序列号: 1 SQL> startup nomount; ORA-24324: 未初始化服务句柄 ORA-01041: 内部错误, hostdef 扩展名不存在 SQL> quit 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断 开 C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 14:26:54 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup nomount; ORACLE 例程已经启动。 Total System Global Area 778387456 bytes Fixed Size 1374808 bytes Variable Size 444597672 bytes Database Buffers 327155712 bytes Redo Buffers 5259264 bytes SQL> archive log list; ORA-01507: ?????? SQL> alter database mount; alter database mount * 第 1 行出现错误: ORA-03113: 通信通道的文件结尾 进程 ID: 4112 会话 ID: 191 序列号: 1 SQL> quit 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断 开 C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 15:27:20 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup nomount; ORACLE 例程已经启动。 Total System Global Area 778387456 bytes Fixed Size 1374808 bytes Variable Size 444597672 bytes Database Buffers 327155712 bytes Redo Buffers 5259264 bytes SQL> CREATE CONTROLFILE REUSE DATABASE "PARSEDB2"NORESETLOGS NOARCHIVELOG 2 MAXINSTANCES 8 3 MAXLOGHISTORY 1 4 MAXLOGFILES 16 5 MAXLOGMEMBERS 3 6 MAXDATAFILES 100 7 Datafile 8 'F:\Program\Oracle\oradata\PARSEDB2\SYSTEM01.DBF', 9 'F:\Program\Oracle\oradata\PARSEDB2\SYSAUX01.DBF', 10 'F:\Program\Oracle\oradata\PARSEDB2\UNDOTBS01.DBF', 11 'F:\Program\Oracle\oradata\PARSEDB2\USERS01.DBF' 12 LOGFILE GROUP 1 ('F:\Program\Oracle\oradata\PARSEDB2\redo01.log') SIZE 5120 0K, 13 GROUP 2 ('F:\Program\Oracle\oradata\PARSEDB2\redo02.log') SIZE 51200K, 14 GROUP 3 ('F:\Program\Oracle\oradata\PARSEDB2\redo03.log') SIZE 51200K; 控制文件已创建。 SQL> RECOVER DATABASE; 完成介质恢复。 SQL> alter database open; 数据库已更改。 SQL> alter tablespace temp 2 add tmpfile'F:\Program\Oracle\oradata\PARSEDB2\TEMP01.DBF' 3 SIZE 200M REUSE AUTOEXTEND ON MAXSIZE 5G; add tmpfile'F:\Program\Oracle\oradata\PARSEDB2\TEMP01.DBF' * 第 2 行出现错误: ORA-00905: ??????????????? SQL> alter tablespace temp 2 add tempfile'F:\Program\Oracle\oradata\PARSEDB2\TEMP01.DBF' 3 SIZE 200M REUSE AUTOEXTEND ON MAXSIZE 5G; 表空间已更改。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> quit 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断 开 C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 15:36:23 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 778387456 bytes Fixed Size 1374808 bytes Variable Size 444597672 bytes Database Buffers 327155712 bytes Redo Buffers 5259264 bytes 数据库装载完毕。 数据库已经打开。 SQL> quit 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断 开 C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 15:37:11 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> conn hdl/123456 ERROR: ORA-01017: 用户名/口令无效; 登录被拒绝 警告: 您不再连接到 ORACLE。 SQL> quit C:\Users\h>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 21 15:37:57 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> alter user hdl identified by 123456; 用户已更改。 SQL> conn hdl/123456 已连接。 SQL> ==================================== ora-03113 controlfile sequence number mismatch 解决 http://www.iyunv.com/thread-15076-1-1.html
http://ljblog.sinaapp.com/?p=309
ora-03113 control file sequence number mismatch Control file sequence number mismatch http://blog.csdn.net/marvelyu/article/details/7432417 控制文件序列号不匹配
Oracle出现错误,于是去错误日志里去找问题根源:在e:\app\kang\diag\rdbms\oracle\oracle\trace\文件夹下找到oracle_ora_6320.trc文件,打开显示错误日志:
[plain] view plain copy
从这里我们发现了问题的根源:“
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用100.00%, 尚有 0 字节可用。”是db_recovery_file_dest_size也叫归档日志空间不足导致的,既然找到问题的根源,那解决起来也就容易了。
空间小,那摆在我们面前办法就是,一个是将空间设置大点,另一个就是将多余的文件删除掉即可,那么我们就将这两个办法都使用一下。
通过命令窗口:
--------设置归档日志空间的大小
[sql] view plain copy
--------删除归档日志
[sql] view plain copy
到这里就彻底ok了。接下来重新打开数据库:正常使用。
在删除归档文件中有一点要注意,通过命令窗口显示显示归档文件都在E:\app\kang\flash_recovery_area\oracle\ARCHIVELOG 下,但是我们不能手工在操作系统中直接把这些文件删除掉,这是因为在controlfile中记录着每一个archivelog的相关信息,当我们在OS中删除这些文件后,我们的controlfile中仍然记录着这些archivelog的信息,因此在Oracle的OEM管理器中还会存在这些日志。因为当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,也就是oracle并不知道这些文件已经不存在了。所以还是要通过命令窗口去执行删除这些文件的命令。
归档日志其实是为了方便我们在恢复数据库时使用的,但是有时候这些归档日志有时确实会给我们带来一点点的小麻烦,所以这些归档日志还是需要我们去注意的。
本文转载自网络