最近工作站在运行过程中经常无响应,只能强行关闭程序。
强行关闭程序后,会导致其它工作站也不能正常工作。
如果用shutdown immediate命令关闭数据库的话,则报ORA-03113错误。
重启服务器后各工作站方能恢复正常。咨询开发商后,说是死锁造成的,至于说解决问题,因为牵扯到令一开发商,处理起来比较困难。问题一:
死锁会导致不能关闭数据库而报03113错误吗?
问题二:
如何查看是那个用户造成的死锁,死锁的时候执行的SQL语句是什么?

解决方案 »

  1.   

    ORA-03113: 通信通道的文件结束问题(转http://www.itpub.net/510324.html) 
    我在做基于更改的测试时,当用logmnr分析完日志文件,关闭数据库恢复备份文件之后,再打开数据库,出现以下错误,ORA-03113: 通信通道的文件结束等问题,后来我重启数据库服务才正常。在alert.log找不到相关错误信息。请问在什么情况下会出现ORA-03113错误?还有ORA-01041: 内部错误,hostdef 扩展名不存在?
    下面是我测试时的一部分代码。

    SQL> shutdown
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> $ copy f:\oracle\backuparea\*.dbf f:\oracle\oradata\oemrep\
    f:\oracle\backuparea\DRSYS01.DBF
    f:\oracle\backuparea\EXAMPLE01.DBF
    f:\oracle\backuparea\INDX01.DBF
    f:\oracle\backuparea\ODM01.DBF
    f:\oracle\backuparea\OEM_REPOSITORY.DBF
    f:\oracle\backuparea\SYSTEM01.DBF
    f:\oracle\backuparea\TEMP01.DBF
    f:\oracle\backuparea\TOOLS01.DBF
    f:\oracle\backuparea\UNDOTBS01.DBF
    f:\oracle\backuparea\USERS01.DBF
    f:\oracle\backuparea\XDB01.DBF
    已复制 11 个文件。SQL> startup
    ORACLE 例程已经启动。Total System Global Area 143727516 bytes
    Fixed Size 453532 bytes
    Variable Size 109051904 bytes
    Database Buffers 33554432 bytes
    Redo Buffers 667648 bytes
    ORA-03113: 通信通道的文件结束
    SQL> recover database until change 511754;
    ORA-03114: 未连接到 ORALCE
    SQL> conn / as sysdba
    ERROR:
    ORA-03113: 通信通道的文件结束SQL> conn / as sysdba
    ERROR:
    ORA-01041: 内部错误,hostdef 扩展名不存在
    SQL> shutdown immediate
    ORA-24324: 未初始化服务句柄
    ORA-01041: 内部错误,hostdef 扩展名不存在
    SQL> conn / as sysdba
    ERROR:
    ORA-01041: 内部错误,hostdef 扩展名不存在
    SQL> exitC:\Documents and Settings\Jerry>net stop oracleserviceoemrep
    OracleServiceOEMREP 服务正在停止......
    OracleServiceOEMREP 服务已成功停止。
    C:\Documents and Settings\Jerry>net start oracleserviceoemrep
    OracleServiceOEMREP 服务正在启动 ............
    OracleServiceOEMREP 服务已经启动成功。
    C:\Documents and Settings\Jerry>sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on 星期四 3月 23 00:40:55 2006Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL> conn / as sysdba
    已连接。
    SQL> select status from v$instance;STATUS
    ------------
    MOUNTED
    SQL> recover database until change 511754;
    完成介质恢复。
      

  2.   

    说一下什么操作系统?另外, 参数process是多大?还有.你的oracle是什么版本?死锁会生成一个trace文件,在alert日志中可看到,死锁的时候都会产生一个ora-00060错误.但要注意,死锁是不会造oracle出现3113的.
      

  3.   

    死锁的时候,会写到alert日至里面。
      

  4.   

    参考一下这个网页.
    http://www.idevelopment.info/data/Oracle/DBA_tips/Linux/LINUX_4.shtml3113错误和1041错误的原因,When shutting down the database using SQL*Plus, you will need to do one of the following in order to startup the database again:    * Re-connect to the database again:      SQL> connect / as sysdba    * Exit from SQL*Plus and start a new SQL*Plus session 就是说,要么退出去,要么重新连接。因为之前的session情报已经不再存在了。
      

  5.   

    嗯.当时有多少个连接知道吗?process是多大?
      

  6.   

    我在oracle中的备份中,shutdown之后,
    SQL> SHUTDOWN IMMEDIATE;
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL>  STARTUP MOUNT;
    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
    SQL>  STARTUP MOUNT;
    ORA-24324: 未初始化服务句柄
    ORA-01041: 内部错误, hostdef 扩展名不存在这是什么情况呢