应该是你以前执行的时候,非正常退出。导致的纪录被lock了,后者是别的数据库session把纪录/表lock了,
也就是说在一个事物处理中,执行了update,insert,delete等等操作,但是没有执行commit/rollback操作。这是如果一个新的session去更新,就会发生这个现象。
你可以在插入之前,使用这句看看:
select * from tbldailyreprot for update nowait.
这句成功以后,在执行后面的。这样就不会发生四季了

解决方案 »

  1.   

    我以前连oracle也当机过,好象最后发现不是程序的问题。
    加一句commit试一试
      

  2.   

    miaoweijun(苗苗):
       按你所說的方法,出現提示“資源使用中,請使用‘NoWait’來取得它”。
    但我不知道怎么“取得它”,你能不能說詳細一點呢?謝了先!
      

  3.   

    肯定是你的表被其他session lock住了。
    加上select * from tbldailyreprot for update nowait。的作用,仅仅是可以避免当table/record被锁定的时候,程序不会发生死机。在那个锁定的session释放以前,你还是没有办法取得纪录的。要避免这个问题的发生。
    1>合理设计使用DB 资源的各个Application的数据流程.不要让一个进程长时间的操作数据库,但是不进行rollbakc/commit操作。
    2〉在sqlnet.ora配置文件中设定。
    sqlnet.expire_time = 5。(分钟数)
    意思是如果过了5分钟,记录仍旧没有被释放,db server将会切断该session.
    3〉杀掉锁定纪录的session
    在V$session table中可以看到所有的session.
      

  4.   

    miaoweijun(苗苗):
        那現在我怎么做才可以繼續對表tblDailyReport進行操作呢,?
    我已經在DBA Studio中把與它有關的Session都Disconnect了,可是
    運行程式時還會出現在錯誤!
      

  5.   

    我的msn:[email protected]
    你把数据库重起一下试试吧。