利用RMAN備份重建資料庫
有時資料庫由於某些原因需要全部銷燬重建,之前的RMAN備份是存在的,希望利用,如系統被重建而導致資料庫重建,或者資料庫備份後需要恢復到其它機器上。以下實驗將演示這一過程。
一、重建前的準備
1、準備測試用表
在RMES使用者下建立測試用表,插入並提交資料
create table rmes.r_rmantest_t(a varchar2(30)) tablespace rmes;
insert into rmes.r_rmantest_t values('Before rman backup');
commit;
做一次檢查點操作,保證資料寫入到資料檔案中
alter system checkpoint;
2、準備備份路徑
建立資料檔案備份路徑e:\rman_bak\mes
建立控制檔案和初始化引數檔案備份路徑e:\rman_bak\mes\control_bak
建立聯機日誌檔案備份路徑e:\rman_bak\mes\redolog
3、配置RMAN備份引數
登入RMAN,檢視並配置RMAN的備份引數
show all;
控制檔案和spfile檔案自動備份設為on,並配置備份路徑
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'e:\rman_bak\mes\control_bak\%F';
配置資料檔案備份路徑
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'e:\rman_bak\mes\%d_%u_%c_%T';
確認備份引數的更改
show all;
4、全備份
backup as compressed backupset database plus archivelog;
5、更新測試用表
完成備份後再插入一條記錄到測試表中
insert into rmes.r_rmantest_t values('After rman backup');
commit;
不做檢查點,這樣資料只記錄在聯機日誌中,不會馬上寫入資料檔案。
6、備份聯機日誌檔案
在作業系統下將聯機日誌檔案複製到備份目錄e:\rman_bak\mes\redolog
所有的備份都已完備,現在可以在本機上用DBCA銷燬資料庫,或者將備份檔案轉出到其他機器上進行資料庫重建。
二、重建資料庫
1、重建例項服務
在作業系統命令提示符下執行oradim命令,建立名為mes的服務,並設定環境變數
C:\> oradim -new -sid mes
C:\> set oracle_sid=mes
2、還原伺服器引數檔案並重建丟失的目錄
登陸RMAN
C:\Users\Administrator>rman target /
恢復管理器: Release 11.2.0.4.0 - Production on 星期四 5月 3 16:55:47 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已連線到目標資料庫 (未啟動)
使用之前的備份,在非載入模式下還原spfile伺服器引數檔案
RMAN> startup nomount
啟動失敗: ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? 'C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITMES.ORA'
在沒有引數檔案的情況下啟動 Oracle 例項以檢索 spfile
Oracle 例項已啟動
系統全域性區域總計 1068937216 位元組
Fixed Size 2288080 位元組
Variable Size 285214256 位元組
Database Buffers 775946240 位元組
Redo Buffers 5488640 位元組
RMAN> restore spfile from 'e:\rman_bak\mes\control_bak\C-2056489697-20180503-01';
啟動 restore 於 2018-05-03 16:58:49
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=396 裝置型別=DISK
通道 ORA_DISK_1: 正在從 AUTOBACKUP e:\rman_bak\mes\control_bak\C-2056489697-20180503-01 還原 spfile
通道 ORA_DISK_1: 從 AUTOBACKUP 還原 SPFILE 已完成
完成 restore 於 2018-05-03 16:58:50
建立pfile檔案
RMAN> sql'create pfile from spfile';
sql 語句: create pfile from spfile
Windows中該檔案預設位置為%ORACLE_HOME%\database\INITmes.ORA
開啟pfile文字檔案,將檔案中提及的目錄建立起來,如本例中需要保證以下目錄存在
C:\Oracle\admin\mes\adump\
D:\ORADATA\MES\
E:\FAST_RECOVERY_AREA\MES\
E:\fast_recovery_area\mes\archivelog\
3、還原控制檔案
用還原的伺服器引數檔案重啟例項到非載入模式,還原控制檔案
RMAN> shutdown abort
Oracle 例項已關閉
RMAN> startup nomount
已連線到目標資料庫 (未啟動)
Oracle 例項已啟動
系統全域性區域總計 1286066176 位元組
Fixed Size 2280896 位元組
Variable Size 771752512 位元組
Database Buffers 503316480 位元組
Redo Buffers 8716288 位元組
RMAN> restore controlfile from 'e:\rman_bak\mes\control_bak\C-2056489697-20180503-01';
啟動 restore 於 2018-05-03 17:06:41
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=156 裝置型別=DISK
通道 ORA_DISK_1: 正在還原控制檔案
通道 ORA_DISK_1: 還原完成, 用時: 00:00:02
輸出檔名=D:\ORADATA\MES\CONTROL01.CTL
輸出檔名=E:\FAST_RECOVERY_AREA\MES\CONTROL02.CTL
完成 restore 於 2018-05-03 17:06:43
4、還原資料庫
用還原的控制檔案載入資料庫
RMAN> alter database mount;
資料庫已裝載
釋放的通道: ORA_DISK_1
還原資料庫
RMAN> restore database;
啟動 restore 於 2018-05-03 17:19:26
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00001 還原到 D:\ORADATA\MES\SYSTEM01.DBF
通道 ORA_DISK_1: 將資料檔案 00002 還原到 D:\ORADATA\MES\SYSAUX01.DBF
通道 ORA_DISK_1: 將資料檔案 00003 還原到 D:\ORADATA\MES\UNDOTBS01.DBF
通道 ORA_DISK_1: 將資料檔案 00004 還原到 D:\ORADATA\MES\USERS01.DBF
通道 ORA_DISK_1: 將資料檔案 00005 還原到 D:\ORADATA\MES\EXAMPLE01.DBF
通道 ORA_DISK_1: 將資料檔案 00006 還原到 D:\ORADATA\MES\CMES01.DBF
通道 ORA_DISK_1: 將資料檔案 00007 還原到 D:\ORADATA\MES\RMES01.DBF
通道 ORA_DISK_1: 將資料檔案 00008 還原到 D:\ORADATA\MES\HMES01.DBF
通道 ORA_DISK_1: 將資料檔案 00009 還原到 D:\ORADATA\MES\INDX01.DBF
通道 ORA_DISK_1: 將資料檔案 00010 還原到 D:\ORADATA\MES\FDA01.DBF
通道 ORA_DISK_1: 正在讀取備份片段 E:\RMAN_BAK\MES\MES_85T1VQN6_1_20180503
通道 ORA_DISK_1: 段控制程式碼 = E:\RMAN_BAK\MES\MES_85T1VQN6_1_20180503 標記 = TAG20180503T163757
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:56
完成 restore 於 2018-05-03 17:20:23
期間可能會遭遇ORA-19693:已包括備份片段的錯誤提示,這個是由於控制檔案中的備份資訊被重複編目所致。可以先將備份檔案路徑改名,然後進行一次交叉檢查crosscheck backup,再用delete expired backup刪除和登出備份資訊,之後再進行重新編目註冊備份catalog start with '...',經此處理後再進行restore還原應該可以解決問題。
5、拷回聯機日誌檔案
確認聯機日誌檔案應當存放的位置
17:16:07 SYS @ mes AS SYSDBA>select member from v$logfile;
MEMBER
------------------------------------------------------------
D:\ORADATA\MES\REDO03.LOG
D:\ORADATA\MES\REDO02.LOG
D:\ORADATA\MES\REDO01.LOG
在作業系統下將備份在e:\rman_bak\mes\redolog中的聯機日誌檔案拷回到指定的聯機日誌目錄中。
6、恢復並開啟資料庫
如果之前使用了塊改變跟蹤,則應當在執行恢復前先取消塊改變跟蹤,因為塊改變跟蹤的DBF資料檔案已不存在,RMAN備份時不會去備份它
alter database disable block change tracking;
恢復資料庫
RMAN> recover database;
啟動 recover 於 2018-05-03 17:21:18
使用通道 ORA_DISK_1
正在開始介質的恢復
執行緒 1 序列 7 的歸檔日誌已作為檔案 D:\ORADATA\MES\REDO01.LOG 存在於磁碟上
執行緒 1 序列 8 的歸檔日誌已作為檔案 D:\ORADATA\MES\REDO02.LOG 存在於磁碟上
歸檔日誌檔名=D:\ORADATA\MES\REDO01.LOG 執行緒=1 序列=7
歸檔日誌檔名=D:\ORADATA\MES\REDO02.LOG 執行緒=1 序列=8
介質恢復完成, 用時: 00:00:01
完成 recover 於 2018-05-03 17:21:23
開啟資料庫,重置聯機日誌序列
RMAN> alter database open resetlogs;
資料庫已開啟
7、驗證資料的恢復
檢視測試用表,驗證資料是否完整恢復
17:18:45 SYS @ mes AS SYSDBA>select * from rmes.r_rmantest_t;
A
------------------------------
Before rman backup
After rman backup
至此,完成了mes資料庫的重新建立和恢復。
8、RMAN異地恢復需要注意的問題
根據備份檔案存放的目錄位置,修改指向後再還原
catalog start with 'e:\rman_bak\mes';
restore database;
從10g恢復到11g環境時需注意:
1)恢復前執行預升級工具指令碼utlirp.sql
2)恢復資料庫
3)以startup upgrade方式開啟資料庫
4)執行升級指令碼catupgrd.sql
如果事先沒有執行預升級指令碼,則執行以上指令碼時會報錯,因為表registry$database缺少TZ_VERSION欄位。解決方法是修改表registry$database,增加tz_version欄位,number型別,並重新插入記錄
truncate table registry$database;
insert into registry$database
(platform_id,platform_name,edition,tz_version)
values
((select platform_id from v$database),
(select platform_name from v$database),
null,
(select version from v$timezone_file));
之後再執行升級指令碼catupgrd.sql就沒有問題了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2153785/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【RMAN】利用備份片還原資料庫資料庫
- 【RMAN】利用備份片還原資料庫(上)資料庫
- 【RMAN】利用備份片還原資料庫(中)資料庫
- 【RMAN】利用備份片還原資料庫(下)資料庫
- 如何利用Rman對Oracle資料庫進行備份Oracle資料庫
- 【RMAN】利用備份片還原資料庫(中)-附加資料庫
- 使用RMAN備份資料庫資料庫
- 利用RMAN建立備用資料庫資料庫
- 【RMAN】使用增量備份更新資料庫備份映象資料庫
- 【原】Oracle學習系列—資料庫備份—RMAN備份Oracle資料庫
- RMAN備份 建立catalog資料庫資料庫
- 非歸檔資料庫RMAN備份資料庫
- rman資料庫全庫備份與恢復資料庫
- 使用RMAN建立資料庫備份庫(筆記)資料庫筆記
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- Backup And Recovery User's Guide-備份資料庫-RMAN備份概覽-RMAN備份的目的GUIIDE資料庫
- Rman-ORACLE資料庫RMAN實現自動備份Oracle資料庫
- 利用rman生成備用資料庫操作文件資料庫
- RMAN備份恢復——RAC環境資料庫的備份(zt)資料庫
- RMAN備份恢復--RAC環境資料庫的備份(十)資料庫
- RMAN備份恢復——RAC環境資料庫的備份(一)資料庫
- 透過rman全庫備份遷移資料庫資料庫
- Backup And Recovery User's Guide-備份資料庫-RMAN備份概覽-為RMAN備份指定TAGGUIIDE資料庫
- Backup And Recovery User's Guide-備份資料庫-使用RMAN備份資料庫檔案GUIIDE資料庫
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案
- ORACLE利用STANDBY端RMAN備份進行資料恢復Oracle資料恢復
- RMAN備份恢復典型案例——資料庫卡頓資料庫
- 非RMAN熱備份資料庫和恢復資料庫
- linux下自動備份oracle資料庫-rmanLinuxOracle資料庫
- Oracle資料庫備份與恢復之RMANOracle資料庫
- 使用RMAN增量備份前滾STANDBY資料庫資料庫
- Oracle資料庫RMAN小結之備份部分Oracle資料庫
- Backup And Recovery User's Guide-備份資料庫-RMAN備份概覽-為RMAN備份指定格式GUIIDE資料庫
- 利用rman全備恢復刪除的資料庫資料庫
- rman 備份 全庫
- Aix下使用rman備份Oracle RAC資料庫(轉)AIOracle資料庫
- rman全備資料庫資料庫
- 利用RMAN建立STANDBY資料庫資料庫