Fenng曾经总结过ORA-03113的各类原因:
- Unix核心参数设置不当
- Oracle执行文件权限不正确/环境变量问题
- 客户端通信不能正确处理
- 数据库服务器崩溃/操作系统崩溃/进程被kill
- Oracle 内部错误
- 特定SQL、PL/SQL引起的错误
- 空间不够
- 防火墙的问题
可是有一种原因也能引起这个问题,这绝对是多数人意想不到的。
SQL> conn sys/manager as sysdba
Connected to an idle instance.SQL> startupORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 62915964 bytes
Database Buffers 96468992 bytes
Redo Buffers 7139328 bytes
Database mounted.
Database opened.
然后在操作系统中执行这个命令:
REG DELETE HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE /FSQL> alter database datafile 'D:\ORADATA\ZEENO.DBF' resize 100M;
alter database datafile 'D:\ORADATA\ZEENO.DBF' resize 100M
*
ERROR at line 1:
Error while trying to retrieve text for error ORA-03113SQL> alter database drop datafile ‘D:\ORADATA\ZEENO.DBF’;ERROR:
Error while trying to retrieve text for error ORA-03114
SQL> alter database datafile ‘D:\ORADATA\ZEENO.DBF’ resize 100M;
ERROR:
ORA-03114: not connected to ORACLE
由于单位里的一套ERP系统许多注册表参数跟Oracle的起冲突,因而我为了安装自己的测试环境不得不临时修改一下注册表。偶尔的,我忘记手头正在做的事情,于是撞出了这个CASE