標籤:一個 就是 例子 oracl 維護 hive 時間 flashback acl
為什麼flashback 的時候既需要 flashback log ,又需要 archive log 呢?
如果資料庫的活動不是很頻繁,可以看到,其flashback log 是比較小的。那麼是通過怎樣的方式 flashback 到過去的呢?
示意如下:
12:50 第一次更改資料(100-->200)
1:00 進行 第一次 flashback log 寫入。 記錄內容是 更改前的資料:100
1:10 第二次更改資料(200-->300)
1:30 再進行下一次flashback log 寫入。 記錄內容是 更改前的資料:200
1:45 第三次更改資料(300-->400)
2:00 再進行下一次flashback log 寫入。 記錄內容是 更改前的資料:300
2:20 第四次更改資料(400-->500)
2:30 再進行下一次flashback log 寫入。 記錄內容是 更改前的資料:400
2:40 第五次更改資料(500-->600)
3:00 再進行下一次flashback log 寫入。 記錄內容是 更改前的資料:500
如果想要 flashback 到 1:15 時刻,
資料庫需要先找到最靠近這個時間點的之前的 flashback log 的時刻。
也就是 1:00 是的 flashback 的內容,用這個內容覆當前的資料,然後再吧 1:00 到 1:15 的 archive log 的內容 apply 此資料上。
上面舉的例子是一個資料區塊的變更,資料庫運行中有多個資料區塊被在不同時刻修改。所以真實的 flashback 是這樣的一個過程:
比如現在是 3:10分,想要回到1:15 時刻,那麼要經過如下的過程:
先利用 3:00 的 flashback ,用其中的更改前的資料, 回到3:00 的時刻的狀態。
再利用 2:30 的 flashback ,用其中的更改前的資料, 回到2:30 的時刻的狀態。
再利用 2:00 的 flashback ,用其中的更改前的資料, 回到2:00 的時刻的狀態。
再利用 1:30 的 flashback ,用其中的更改前的資料, 回到1:30 的時刻的狀態。
再利用 1:00 的 flashback ,用其中的更改前的資料, 回到1:00 的時刻的狀態。
然後,再利用 1:00 到 1:15 的archive log 內容,apply後達到 1:15 時刻的狀態。
[Oracle維護工程師手記系列]為什麼flashback 的時候既需要 flashback log ,又需要 archive log?