程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 在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裡可以用存儲過程來實現它們。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved