我們有一個shell腳本,用於執行我們oracle數據庫的物理備份(對所有數據庫文件進行tar +壓縮)。最近,我們創建了一個包含表的表空間,我們不需要備份它的內容。是否可以在進行物理備份時忽略一些表空間
是否可以忽略與此表空間相關的數據文件並擁有有效的備份?
PS:我們不想使用RMAN。
我們有一個shell腳本,用於執行我們oracle數據庫的物理備份(對所有數據庫文件進行tar +壓縮)。最近,我們創建了一個包含表的表空間,我們不需要備份它的內容。是否可以在進行物理備份時忽略一些表空間
是否可以忽略與此表空間相關的數據文件並擁有有效的備份?
PS:我們不想使用RMAN。
我在這裏引用我的評論和註釋:這不是規範模式。通常,我們使用RMAN來備份數據庫中的所有數據文件。這就是說...
是的,它可能是恢復和恢復數據庫與m msing數據文件的備份。但恢復將要求在恢復數據庫時刪除表空間。
對於滴下包含單個數據文件表空間的簡單情況:第一還原數據庫文件,則:
STARTUP NOMOUNT;
ALTER DATABASE MOUNT ;
ALTER DATABASE DATAFILE '<complete_path_to_datafile>' OFFLINE DROP ;
ALTER DATABASE OPEN ;
DROP TABLESPACE <tablespace_name> INCLUDING CONTENTS ;
然後,繼續數據庫恢復(RECOVER DATABASE; )
很顯然,您在DROP TABLESPACE命令中提供的tablespace_name將與刪除的數據文件相關。
很明顯,這不適用於SYSTEM表空間。我不敢在UNDO,SYSAUX,USERS等其他表空間上嘗試這種方式。並且有用於刪除和添加TEMPORARY TABLESPACES的不同語法。
我不知道「DROP TABLESPACE ... INCLUDING CONTENTS」的任何「陷阱」,但考慮到其他表空間中的對象可能會受到影響。 (考慮到被丟棄的表空間可能對存儲過程在其他表空間表的外鍵約束的影響,影響指標,等等。)
而且不用說,那你就需要測試這在測試環境中恢復過程的類型之前您在生產中依賴此技術。
如果不進行測試,通過使用RMAN登錄備份所有數據文件可以更好地服務您。
注:我由於Oracle 8還沒有做過這樣的事,可能是甲骨文7.3(回來時,我們不得不推出自己的hotbackup腳本)。自從我們開始使用RMAN以來,我沒有必要測試這樣的任何東西。
注意:可能需要在ALTER DATABASE OPEN之前運行RECOVER DATABASE。我想你可能會得到關於「需要更多恢復的數據文件」的異常警告,就像你在表空間一直處於BEGIN BACKUP模式時啓動數據庫一樣......
你正在做一個熱備份還是一個冷備份?數據庫是否處於ARCHIVELOG模式? –
嗨,我們正在做冷熱備份。yes數據庫處於歸檔日誌模式 – SamiBOB
另外,當通過此備份重新啓動數據庫時,有沒有辦法在oracle目錄中看到屬於忽略的表空間的表? – SamiBOB