本文简单记录一下最近一次数据恢复的过程。
事情的起因是,使用者誤刪了基礎資料表中的數據,而被刪除的資料剛好在另外一個表中使用到,而且資料表在建立時為了方便起見沒有建立主外鍵關係,某一个操作导致一些表的的數據出現問題(無論有沒有需要一定要建立主外鍵關係,否則後面維護起來就很痛苦)。这样的错误居然出现在应用代码中,显然是重大的BUG。那个是罪魁祸首的表結構開的問題,在每個基礎資料表中應該添加一個是否停用的注記而且在程序中的刪除必須使用假刪除或者使用基礎資料的歷史當。系统的维护人员称发现出错是在今天九點三十分,也就是我恢复数据的日期,与声称的出错时间已经隔了将近幾分鐘。還好系統使用者告訴我是那隻程序,否則就要一個個表來查 30 分鐘前的數據跟現在的數據區別。
//這個是今天 三十分鐘前的數據表 ,也可以查出某個時段段內數據
select * from hw_vct_regional as of timestamp to_timestamp('2010/04/24 09','yyyy/mm/dd hh24');
//被修改后的數據
select * from hw_vct_regional
將兩者的數據結果進行對比,兩者間的異常之處就剛操作者使用的操作。