应该是你以前执行的时候,非正常退出。导致的纪录被lock了,后者是别的数据库session把纪录/表lock了,
也就是说在一个事物处理中,执行了update,insert,delete等等操作,但是没有执行commit/rollback操作。这是如果一个新的session去更新,就会发生这个现象。
你可以在插入之前,使用这句看看:
select * from tbldailyreprot for update nowait.
这句成功以后,在执行后面的。这样就不会发生四季了
也就是说在一个事物处理中,执行了update,insert,delete等等操作,但是没有执行commit/rollback操作。这是如果一个新的session去更新,就会发生这个现象。
你可以在插入之前,使用这句看看:
select * from tbldailyreprot for update nowait.
这句成功以后,在执行后面的。这样就不会发生四季了
加一句commit试一试
按你所說的方法,出現提示“資源使用中,請使用‘NoWait’來取得它”。
但我不知道怎么“取得它”,你能不能說詳細一點呢?謝了先!
加上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.
那現在我怎么做才可以繼續對表tblDailyReport進行操作呢,?
我已經在DBA Studio中把與它有關的Session都Disconnect了,可是
運行程式時還會出現在錯誤!
你把数据库重起一下试试吧。