有关 alter tablespace begin backup
來自:http://www.dev-club.com/club/bbs/essence,27479.htm
在Oracle備份中,我們可以使用alter tablespace ... begin backup將表空間置于聯機備份模式,然后用操作系統命令進行數據文件的物理拷貝,達到備份的目的,這個過程中數據文件還是照樣聯機,并進行正常的數據插入,但會導致比平常更多的REDO記錄的產生
產生較多的REDO記錄是由熱備引起的,因為在熱備過程中,我們采用copy/ocopy命令,這個是屬于操作系統的命令,他和Oracle是不相關的,不能和Oracle的內部進程如dbwr進行交互,這樣就可能導致熱碑塊的出現,因為操作系統讀取數據文件時,他的IO尺寸并不是block size的大小,一般會更小,這樣會導致一個數據塊被讀取多次,而每次獲取的部分都不一致(數據不斷更新),為了恢復這種斷裂的熱碑塊,Oracle進行了數據塊前映象這個操作,對于backup模式的數據文件塊,在第一次受到DML影響時,先將數據塊整個COPY到REDO中,后續的DML在進行UNDO,正常REDO信息的記錄,當恢復數據文件時,會先應用最先的數據塊前映像,然后才是后續的REDO記錄信息,更多的日志記錄就是這個前映像產生的,這個不能和UNDO弄混淆,他是整個數據塊,而不是簡單的行記錄,由于Oracle本身不知道在拷貝時那些塊可能出現熱碑,所以只要是BACKUP期間有DML的塊,就按照上面的情況處理,所以如果在backup期間運行大量的批處理程序,日志信息會集聚增多
還有就是為什么alter tablespace ... begin backup要凍結文件頭的SCN?
這個主要是以后數據文件做恢復的起始SCN,在BEGIN BACKUP下達后,系統要對表空間執行檢查點,并將該檢查點前的所有事務應用都固化到數據文件,然后凍結這個SCN,直到使用END BACKUP,使備份過程結束,再更新為新的SCN,凍結的原因是因為使用操作系統命令拷貝數據文件時,他不能保證第一個讀取的塊就是數據文件頭,如果不凍結,則可能從備份開始,已經多次更新了文件頭,而此時文件頭還沒有被拷貝,這樣等文件頭被拷貝后,他的SCN已經遠遠大于了數據文件中其他數據塊的SCN,這樣從文件頭的SCN來定位恢復起點就不現實了
從上面可以看出,熱備與RMAN的聯機備份是存在本質區別的,RMAN是連接目標數據庫,產生Oracle用戶進程,調用他自身的過程包,與dbwr進行交互,使用Oracle的SGA或PGA進行備份,這樣他首先會保證每個塊都是一致的,不會出現熱碑現象,這樣就減少了REDO記錄的產生,他也不需要凍結文件頭SCN,因為RMAN總是能先讀取數據文件頭的塊,做為DBA,RMAN工具都不能使用的話是很可笑的!!!
轉載于:https://www.cnblogs.com/froster/archive/2005/11/16/277633.html
總結
以上是生活随笔為你收集整理的有关 alter tablespace begin backup的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 世界上最遥远的距离(泰戈尔)
- 下一篇: ASP.NET中常用功能代码总结(3)—