Oracle不同步及死鎖問題(120分)

  • 主题发起人 主题发起人 dadabox1
  • 开始时间 开始时间
D

dadabox1

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大俠﹕
我剛寫出來的程序中﹐我發現一個問題。即﹕我在一台客戶端上(A機)刪除了一筆資料
之后﹐在A機上用查看該筆資料已被刪除﹐退出該程序﹐在到另一台客戶端(B機)上去查詢時
﹐這筆資料居然還在﹐這是怎么回事﹖而等了一陣子之后(几分鐘后)﹐我再在B機上查詢﹐
又沒了﹐即被刪掉了。(反正我覺得奇怪﹐就將程序開了又關閉﹐關閉了又開﹐几次)。我數
據庫是Oracle 8.1.6﹐Delphi 5.0企業版。程序中我是用的Query﹐更新都沒問題。大俠們
遇到過這個問題嗎﹖該怎么解決﹖-->60分
另外﹐數據庫好像也老是有死鎖的問題﹐比如說修改該筆資料﹐程序就死在那儿了﹐關
掉程序后﹐用SQL * PLUS查看也改掉了﹐但要是用SQL * PLUS更改﹐SQL * PLUS也會死掉。
該怎么辦﹖即遇到死鎖怎樣解決以及程序中應該怎樣避免﹖-->60分
 
我的习惯是修改数据的时候
从来不用DATA-AWARE控件
自己写程序控制,肯定不会出问题
 
你要马上commit就没事了。DataAware不会自动commit;
这样:
procedure TForm1.Query1AfterPost(DataSet: TDataSet);
begin
DataBase1.StartTransaction;
try
DataBase1.Commit;
except
DataBase1.Rollback;
end;
end;
就没事了。

如果你在sqlplus里用的话,如果要做了如delete,update,insert 操作的话,最后要
做一个commit;就没事了。
 
进行写操作时(如insert, delete, update等),成功后必须提交(commit)
才能将数据真正写入到数据库中。关键是看你用的控件是否是自动提交的。

一般的控件都是读自动提交,而写是不自动提交的。所以会造成你说的那种情况。

死锁大概是你打开数据库的方式有问题,或者是数据库的确省模式有问题
 
commit啦!
 
onedolph已經有60分啦。
各位大俠新年好﹗前一個問題已經解決了﹐但若數據庫已經出現死鎖﹐那我應該在服務器上
做什么才能解除死鎖呢﹖謝謝﹗
 
用Instance Manager 杀掉其中一个Session.
 
从 V$Session 查出 LOCKWAIT 不为 null的就是锁等待的,
对应的 SID 和 SERIAL# 值用在 alter system kill session 中杀之
 
謝謝各位啦﹗我試一下哈。
 
后退
顶部