萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> 在ORACLE裡用存儲過程定期分割表

在ORACLE裡用存儲過程定期分割表

Oracle數據庫裡存放著各種各樣的數據,其中有一些數據表會隨著時間的推移,越來越大。如交友聊天的日志、 短信收發的日志、生產系統的日志、動態網站發布系統的日志等等。這樣的信息又和時間緊密相關,有沒有辦法 讓這些日志表能到時間自動分割成歷史年月(如log200308,log200309)的表呢? 請看看我用存儲過程定期分割表的 方法吧。

一、問題的引出

1.初學數據庫時只知道用delete來刪除表裡的數據。但在Oracle數據庫裡,大量delete記錄後,並不能釋放表

所占用的物理空間,這裡面有一個高水位的概念,所以我們不能用delete來分割表。

2.用重命名(rename)表的方法

(1).先建一個和原來日志表(假如是log)數據結構一模一樣的新表(如log_new),建約束、索引及指定字段的默

認值;

(2).重命名表log到log_YYYYMM;

要注意的問題是OLTP系統可能會因為DML操作阻礙重命名執行成功,出現ORA-00054資源正忙的錯誤提示,

需要試多次才能成功。

(3).重命名表log_new到log。

這樣應用程序不用修改(受影響的時間僅幾秒鐘),日志表就被截斷分割了。

上述步驟可以在Oracle裡可以用存儲過程來實現它們。

  • 共4頁:
  • 上一頁
  • 1
  • 2
  • 3
  • 4
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved