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