關於DELPHI使用ORACLE復原段的問題(急)

來源:互聯網
上載者:User
關於DELPHI使用ORACLE復原段的問題(急) Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061220125734202.html
我寫了一個DELPHI程式,程式中沒有起事物,只是作了一個迴圈,大概25萬條.  
  每條取出一個NO.傳到一個ORACLE的PROCEDURE中.  
  這個過程包括三個表的插入,一個表的更新。  
  1、執行十幾萬的時候報錯   ORA-01555   快照過舊  
        問:我覺的它應該是一條一提交啊,不存在使用復原段問題。  
  2、我試著使用指定復原段。  
        問:應該在事物前還是在事物後?  
  3、在事務的TRY中:  
        if   i   =   10000   then  
        begin  
            database1.commit;  
            query1.ExecSQL;  
        end;  
        query,內容如下  
        “set   transaction   use   rollback   segment   RBS2”  
        這麼轉復原段對嗎?  
  4、查詢開啟後滾動占復原段嗎?  
  5、我開啟的表,在過程中也更新它,有影響嗎?  
  6、執行這25萬條最好的辦法是什麼,有什麼注意事項嗎?

求助,各位大哥,幫幫我吧,本來程式是分段執行的,可使用者非要一個按鈕搞定.  
  我都快鬱悶死了

事務

資料量較大,第一考慮使用事務!如果事務過大,就需要調整復原段的大小,建議建立若干個小復原段和幾個大的復原段以應付較大事務。

關注!

oracle   的解決方案:  
  復原段太小,可以增加一個大的復原段試一試520745598  
   
  主要是由於復原段太小,可以為此事務指定一個大的復原段,利用Set   Transaction   use   rollback   segment   seg_name   語句.如果資料庫中沒有較大的復原段,那麼應該新增一個,然後使它Online,再指定它.  
   
 

減少一次commit的量,應該也有好處,如:  
      if   i   =   10000   then  
        begin  
            database1.commit;  
   
  10000   改為   5000

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.