2014-07-03 40 views
1

我有一個firebird 2.5數據庫,我想知道是否有一種方法來回滾提交的事務。真的,我問是否有人可以訪問firebird數據庫文件,可以讀取之前提交的事務中刪除的數據。
我有一個進程(存儲過程),刪除一些寄存器並提交。可以訪問數據庫文件的人恢復該寄存器嗎?火鳥DB提交後讀取刪除的寄存器

回答

1

沒有簡單的方法來恢復/回滾提交的交易,但Firebird使用MVCC (Multi Version Concurrency Control)。刪除(或更新)記錄將添加新的記錄版本併爲記錄的以前狀態創建增量記錄版本。

當舊的記錄版本沒有事務處於「感興趣」狀態時,它就有資格進行垃圾回收(當另一個事務訪問記錄時或在後臺執行時,可能會合作完成)。但是,無法保證何時發生垃圾收集。

因此,如果一條記錄被刪除,但還沒有被垃圾收集(因爲仍然存在事務,或者因爲垃圾收集器還沒有訪問記錄),那麼它仍然是對Firebird內部結構有足夠技能和知識的人員可以恢復記錄。請注意,即使記錄版本已被垃圾收集,數據本身也會保留在磁盤上,直到它被另一個記錄版本覆蓋。

另請參閱​​

+0

感謝您的回答。前幾天我讀過這個第4集,我認爲它不容易閱讀,但也許它會是可行的,正如你所說的。如果在刪除操作後啓動垃圾回收,問題仍然存在。我只能在交易中做到這一點,我真的希望不可恢復。 – briast

+1

@briast它可能有助於知道爲什麼你需要知道:你需要恢復數據,還是你想確保刪除的記錄不可恢復? –

+0

嗨。我想確保刪除的記錄不可恢復。 – briast