溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何利用RMAN備份重建數據庫

發布時間:2021-11-09 14:30:24 來源:億速云 閱讀:168 作者:小新 欄目:關系型數據庫

這篇文章主要介紹了如何利用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就沒有問題了。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何利用RMAN備份重建數據庫”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女