通過修改CATALOG記錄的方式實現備份集目錄變更
今天第一次體會到了CATALOG的好處,不過這種用法肯定是文件所不推薦的。
碰到了一個難以解決的問題,是在進行DUPLICATE命令的時候碰到的。
源資料庫RAC環境採用裸裝置方式,將備份集放到一個節點的本地磁碟上,但是目標資料庫使用了ASM,且本地磁碟沒有足夠的空間,因此將遠端的備份級拷貝到了ASM磁碟組中,但是目前的問題是,DUPLICATE命令會根據源資料庫備份集的位置讀取本地的備份級。
在本地伺服器上通過ln的方式對ASM磁碟組中的檔案是無效的,Oracle嘗試讀取時仍然會報錯。
而通過在源資料庫上CATALOG備份集的新位置也是不可行的,因為源資料庫上面沒有啟動ASM例項,而且也沒有空間來新配置一個ASM例項,並將備份集拷貝進去。
最後嘗試了一下能否通過修改CATALOG記錄的方式,可以騙過Oracle的RMAN,使得RMAN可以在輔助例項上根據ASM上面的路徑讀取備份集。
於是本地嘗試一下這種方式是否可行:
E:\>rman target / catalog cata_log/cata_log
恢復管理器: Release 10.2.0.1.0 - Production on 星期一 9月 8 17:22:17 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到目標資料庫: YTK102 (DBID=3695768905)
連線到恢復目錄資料庫
RMAN> backup tablespace users;
啟動 backup 於 08-9月 -08
正在啟動全部恢復目錄的 resync
完成全部 resync
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=132 devtype=DISK
通道 ORA_DISK_1: 啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
輸入資料檔案 fno=00004 name=E:\ORACLE\ORADATA\YTK102\USERS01.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 08-9月 -08
通道 ORA_DISK_1: 已完成段 1 於 08-9月 -08
段控制程式碼=E:\ORACLE\BACKUP\YTK102\0DJQ3EN2_1_1 標記=TAG20080908T172241 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
完成 backup 於 08-9月 -08
利用一個現有的CATALOG進行嘗試,首先備份USERS表空間,下面將備份級的位置進行轉移:
RMAN> HOST;
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
E:\>MOVE E:\ORACLE\BACKUP\YTK102\0DJQ3EN2_1_1 E:\ORACLE\BACKUP\0DJQ3EN2_1_1
E:\>EXIT
主機命令完成
RMAN>
下面登陸到CATALOG使用者下,修改剛才這個備份的HANDLE:
SQL> conn cata_log/cata_log
已連線。
SQL> COL HANDLE FORMAT A50
SQL> SELECT BP_KEY, HANDLE FROM RC_BACKUP_PIECE;
BP_KEY HANDLE
---------- ----------------------------------------------
587 E:\ORACLE\BACKUP\0BJMSAHJ_1_1
588 E:\ORACLE\BACKUP\YTK102\0CJMSB39_1_1
608 E:\ORACLE\BACKUP\YTK102\0DJQ3EN2_1_1
下面修改剛剛備份的這個檔案的HANDLE,指向新的檔案位置:
SQL> UPDATE RC_BACKUP_PIECE SET HANDLE='E:\ORACLE\BACKUP\0DJQ3EN2_1_1' WHERE BP_KEY = 608;
已更新 1 行。
SQL> COMMIT;
提交完成。
下面將表空間置為OFFLINE,並刪除需要恢復資料檔案:
SQL> CONN YANGTK/YANGTK
已連線。
SQL> ALTER TABLESPACE USERS OFFLINE;
表空間已更改。
SQL> HOST DEL E:\ORACLE\ORADATA\YTK102\USERS01.DBF
然後嘗試恢復:
RMAN> RESTORE TABLESPACE USERS;
啟動 restore 於 08-9月 -08
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00004恢復到E:\ORACLE\ORADATA\YTK102\USERS01.DBF
通道 ORA_DISK_1: 正在讀取備份段 E:\ORACLE\BACKUP\0DJQ3EN2_1_1
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = E:\ORACLE\BACKUP\0DJQ3EN2_1_1 標記 = TAG20080908T172241
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
完成 restore 於 08-9月 -08
可以看到,備份已經從指定的位置進行了恢復。所以這種方式來解決前面提到的問題是可行的,利用這種方式,CATALOG方式的備份和恢復將變得更加靈活。
不過需要注意一點,目前修改的只是CATALOG資料庫中的記錄,而控制檔案中備份的位置並沒有發生變化。
SQL> SELECT HANDLE FROM V$BACKUP_PIECE
2 WHERE START_TIME > SYSDATE - 1/24;
HANDLE
--------------------------------------------
E:\ORACLE\BACKUP\YTK102\0DJQ3EN2_1_1
建議利用這種方法之後,應該儘快進行恢復,比如將備份級放回原始位置,並修改RC_BACKPU_PIECE,或者刪除修改的備份集,避免不一致給系統帶來損害。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-466076/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過nfs共享目錄實現oracle 歸檔日誌遠端備份NFSOracle
- 【RMAN】使用恢復目錄catalog備份目標資料庫的演示資料庫
- C#獲取變更過的DataTable記錄的實現方法C#
- 【備份恢復】RMAN catalog 恢復目錄資料庫資料庫
- 透過搭建恢復目錄實現RMAN異地備份和恢復
- 通過克隆程式目錄方式部署迪斯傑
- 實現用backup或tar命令來做目錄備份(轉)
- 手機通訊錄怎麼備份?手機通訊錄的幾種備份方法
- 保留最新N份備份目錄指令碼指令碼
- 建立RMAN catalog實現物理備份
- postgresql通過建立規則(RULE)實現表記錄SQL
- OCR自動備份目錄cdata下出現大量的OCR備份檔案問題
- SQL Server 資料庫引擎怎樣記錄完整備份後修改過的資料SQLServer資料庫
- Tomcat通過自帶的Cluster方式實現Session會話共享環境操作記錄TomcatSession會話
- 通過修改資料字典,變更表的owner
- GitBash初始目錄的修改Git
- Git的修改提交記錄和變基Git
- 使用RMAN恢復目錄(catalog)解析
- 網站備案接入變更 - 記錄從阿里雲轉到騰訊雲的過程網站阿里
- oracle實驗記錄 (恢復-rman catalog)Oracle
- 欄位修改記錄操作日誌的實現
- windows 批處理備份目錄指令碼Windows指令碼
- nub備份安裝目錄/openv由來
- Tomcat通過Redis實現session共享的完整部署記錄TomcatRedisSession
- Tomcat通過Memcached實現session共享的完整部署記錄TomcatSession
- 《使用shell位置變數進行目錄檔案的備份小指令碼》變數指令碼
- oracle實驗記錄 (恢復-rman增量備份)Oracle
- oracle實驗記錄 (rman 備份檢查&preview)OracleView
- mac修改gopath目錄MacGo
- # Others vars此處是資料庫備份時間變數以及目錄變數,這些變數基本不用修改,請複製過去資料庫變數
- Oracle10g增加備份集的CATALOGOracle
- 由於目錄變更引起的資料服務無法啟動的問題處理記錄
- 【備份恢復】之RMAN 恢復目錄庫(客戶端備份資訊註冊到目標庫恢復目錄中)客戶端
- "redirect:/news/to"; springmvc的方式通過後臺來進行重定向目錄SpringMVC
- OM裡保留記錄備份SQLSQL
- 使用SQLServerAudit記錄資料庫變更SQLServer資料庫
- MAKT 物料組 變更記錄表
- Ubuntu 16.04修改Home目錄下的中文目錄為英文Ubuntu