程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> oracle清理日常備份數據及恢復誤刪除表

oracle清理日常備份數據及恢復誤刪除表

編輯:關於Oracle數據庫

       一、清理日常備份的數據表

      1、背景:系統表空間占用率已經超過90%。於是做了一個相關的垃圾數據進行清理的工作。

      2、查詢需清理表清單:因為日常在數據庫操作的時候,經常會進行一些表的備份。咨詢前任系統管理員,他們在備份表的時候一般是在原表上加日期或者使用bak進行標識。於是使用

      SELECT owner, num_rows * avg_row_len,table_name FROM DBA_TABLES WHERE TABLE_NAME LIKE '%BAK%' AND REGEXP_LIKE(TABLE_NAME,'/d+') AND (TABLE_NAME NOT LIKE 'T_IM_INVENTORY%' AND TABLE_NAME NOT LIKE 'VT%' AND TABLE_NAME NOT LIKE 'NCM%' AND TABLE_NAME NOT LIKE 'T_HR_SCHM%' AND TABLE_NAME NOT LIKE 'SYS%' AND OWNER='JINGYA');

      查詢出相關可能性的表占用的空間,排除其他可能表之後,合計占用空間接近100G。

      3、測試:在測試系統中將已經初步確定的表進行刪除,進行相關業務的測試。沒有問題。

      4、正式操作:依照公司的變更流程,對正式系統進行操作;

      二、誤刪除表的恢復

      在做完一的工作之後,業務運行了2天無故障,第三天的時候,財務報修說財務合並報表自動抵消項生成分錄少一項。分析後確定是誤刪除了一張報表使用到的數據表。需要對該表進行恢復。

      恢復的代碼如下:

      --1 從閃回中查詢誤drop的表select object_name, original_name, partition_name, type, ts_name, createtime, droptime from recyclebin where original_name = 'T_CSL_ITEMDATAENTRY001'; --2 恢復到刪除前flashback table "BIN$AP6V8ohdAaLgU8CoZGEBog==$0" to before drop; --3 查詢數據select count(*) from T_CSL_ITEMDATAENTRY001

      確定問題解決。

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