為什麼我的歸檔檔案比我設定的線上日誌的大小要小?

wei-xh發表於2012-07-03

為什麼我的歸檔檔案比我設定的線上日誌的大小要小?有幾種可能的原因:

1)  你用命令手工切換了

2)  你設定了archive_lag_target引數,導致定期觸發的切換

3)  10G後,Oracle的新特性,private redo的出現。由於會話的事務日誌是保留在private redo pool裡的,這裡面的日誌只有在提交的時候才會寫到public redo pool然後再寫到log file裡,想象這麼一個場景:事務X修改了幾條記錄,但是遲遲沒提交,事務X產生的日誌是記錄在private redo pool裡的。當前日誌組是組1,日誌組1寫滿了後切換了,切換後,當前日誌組是2,日誌組2start scn1000,但是private redo pool裡的日誌的scn肯定是小於這個1000的,如果Oracle切換前,不把這些private redo重新整理到日誌組1,那麼日誌組2裡就會出現scn小於當前日誌組的start scn的情況。這個是不允許的。因此Oracle的工程師,必須要有一個機制保障,在做切換前,日誌檔案裡有足夠的空間能夠容納下public redo+private redo pool裡面的日誌,但是這2redo pool裡面很可能是空的或者是不滿的,日誌量沒有Oracle計算的大,這樣就導致了,被歸檔後的檔案總是沒有我們設定的線上日誌大。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-734500/,如需轉載,請註明出處,否則將追究法律責任。

相關文章