1. 程式人生 > >rman備份恢復例項(經典)

rman備份恢復例項(經典)

1.通過rman備份檔案恢復spfile
2.通過rman備份檔案恢復controlfile
3.通過rman備份檔案恢復datafile
4.利用恢復回來的controlfile和datafile生成redolog
5.測試交易是否存在,並全備

我係統環境所有的檔案如下:

[[email protected] dbs]$ pwd
/opt/oracle/10g/dbs
[[email protected] dbs]$ ls
initdw.ora
init.ora
[[email protected] dbs]$ls /opt/oracle/oradata
已沒有任何資料
[[email protected] dbs]$ls /opt/oracle/admin
已沒有任何資料
[

[email protected] dbs] ls /opt/oracle/flash_recovery_area/
ORCL
[[email protected] dbs]ls /opt/oracle/flash_recovery_area/ORCL/backupset/
2008_07_18
[[email protected] dbs]ls /opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_18/
o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp
o1_mf_nnndf_TAG20080718T203240_482fkb0k_.bkp

在我這臺電腦上, ,系統中所有的ORCL相關的資料檔案,引數檔案,日誌檔案,控制檔案全部不在了, 沒有其他可用的備份檔案了,只有rman備份的檔案在,這可怎麼辦呢?

沒辦法只能恢復了,可怎麼恢復呢?

要恢復資料檔案用rman備份? 能嗎? 當然不能了,因為restore必須在mount or open狀態下.
引數檔案,控制檔案都沒有怎麼mount?

要mount必須有引數檔案,控制檔案,為此我們必須解決這2個難題了.
在解決難題前先準備ORCL的必須的目錄:

[[email protected] dbs]mkdir /opt/oracle/oradata/orcl
[[email protected] dbs]mkdir /opt/oracle/admin/orcl/adump –p
[[email protected] dbs]mkdir /opt/oracle/admin/orcl/cdump
[

[email protected] dbs]mkdir /opt/oracle/admin/orcl/bdump
[[email protected] dbs]mkdir /opt/oracle/admin/orcl/udump
[[email protected] dbs]mkdir /opt/oracle/admin/orcl/dpdump
[[email protected] dbs]mkdir /opt/oracle/admin/orcl/pfile


難題1:spfile

有人說沒引數檔案我新建立一個pfile,當然這個辦法是可行的,不過在10g中rman備份是自動備份了spfile的,所以我們可以利用rman來恢復spfile了.

[[email protected] dbs]rman target / nocatalog
Recovery Manager: Release 10.2.0.4.0 - Production on Fri Jul 18 21:21:47 2008

Copyright (c) 1982, 2005, Oracle.
All rights reserved.

connected to target database (not started)

RMAN> list backup;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of list command at 07/18/2008 21:24:37
RMAN-06403: could not obtain a fully authorized session
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directorylist copy;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of list command at 07/18/2008 21:24:51
RMAN-06403: could not obtain a fully authorized session
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory

看到上面的是正常的,因為資料庫沒有啟動呢.
於是我們先啟動資料庫到nomout下
RMAN>startup nomount

startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/10g/dbs/initorcl.ora'

starting Oracle instance without parameter file for retrival of spfile
Oracle instance started

Total System Global Area
159383552 bytes

Fixed Size
1218268 bytes
Variable Size
54528292 bytes
Database Buffers
100663296 bytes
Redo Buffers

2973696 bytes

RMAN>list backup;
RMAN>list copy;

將與上次執行看到的一樣,此時也是正常的,不必擔心,下面就是利用rman備份檔案來解決難題1了.

RMAN> restore spfile
from '/opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_18/o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp';
Starting restore at 18-JUL-08
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=36 devtype=DISK

channel ORA_DISK_1: autobackup found: /opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_18/o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp
channel ORA_DISK_1: SPFILE restore from autobackup complete
Finished restore at 18-JUL-08

下面是來驗證spfileorcl.ora檔案是否已存在:

[[email protected] dbs]$ pwd
/opt/oracle/10g/dbs
[[email protected] dbs]$ ls
initdw.ora
init.ora
spfileorcl.ora

恭喜你:spfile已恢復了
有了引數檔案,就需要解決控制檔案恢復了

難題2. 控制檔案恢復

這個又怎麼恢復呢? 用rman的自動備份控制檔案的rman備份嗎? 是的沒錯,只有從rman備份檔案中提取出來的controlfile才能使用rman備份檔案恢復datafile的.

那麼這裡有來種辦法來實現從rman備份檔案中提取出controlfie了.

方法1.

RMAN>restore controlfile from ‘/…備份檔案..’;

恢復的控制檔案將放在$ORACLE_HOME/dbs/cncontrl.dbf不過這個方法有時恢復的控制檔案中記錄的dbname與實際不一致.

方法2: 利用dbms_backup_restore提取controlfile

步驟:

[[email protected] dbs]$sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 18 21:38:21 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn /as sysdba

Connected.

由於在剛才使用rman時執行了startup nomount,所以這裡是connected,下面我們到nomount狀態

SQL> startup force nomount

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes

Variable Size 62916852 bytes

Database Buffers 100663296 bytes

Redo Buffers 2973696 bytes

SQL>DECLARE

2devtype varchar2(256);

3done boolean;

4BEGIN

5devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');

6sys.dbms_backup_restore.restoreSetDatafile;

7sys.dbms_backup_restore.restoreControlfileTo(cfname=>'/opt/oracle/oradata/orcl/control01.ctl');

8sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_18/o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp',params=>null);

9 sys.dbms_backup_restore.deviceDeallocate;

10 end;

11/

PL/SQL procedure successfully completed.

下面驗證control01.ctl是否恢復:

[[email protected] dbs]$ ls /opt/oracle/oradata/orcl/

control01.ctl

[[email protected] dbs]$

看到了control01.ctl 恭喜你:難題2 解決了.

於是我們可以啟動資料庫到mount狀態了.

[[email protected] dbs]$sqlplus /nolog

SQL*Plus: Release 10.2.0.4 - Production on Fri Jul 18 21:45:32 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn /as sysdba

Connected.

SQL> startup force mount

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes

Variable Size 62916852 bytes

Database Buffers 100663296 bytes

Redo Buffers 2973696 bytes

ORA-00205: error in identifying control file, check alert log for more info

我們已經恢復了控制檔案了,怎麼還是有錯誤呢,其實不用擔心,看看spfile中的記錄先

SQL> show parameter control_files

 NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

control_files string /opt/oracle/oradata/orcl/contr

ol01.ctl, /opt/oracle/oradata/

orcl/control02.ctl, /opt/oracl

e/oradata/orcl/control03.ctl

SQL>

既然如此,我們就把控制檔案同步下好了.

SQL> ho cp /opt/oracle/oradata/orcl/control01.ctl /opt/oracle/oradata/orcl/control02.ctl

SQL> ho cp /opt/oracle/oradata/orcl/control01.ctl /opt/oracle/oradata/orcl/control03.ctl

SQL> alter database mount;

Database altered.

SQL> ho ls /opt/oracle/oradata/orcl/

control01.ctl control02.ctl control03.ctl

好了到這裡我們已經成功解決了難題2了.

有了恢復後的控制檔案,我們就可以使用rman檢視與使用以前的rman備份了.

恢復datafile 步驟:

rman target / nocatalog

Recovery Manager: Release 10.2.0.4 - Production on Fri Jul 18 21:49:10 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

connected to target database: ORCL (DBID=1188209463, not open)

using target database control file instead of recovery catalog

RMAN>

看到了 紅色部分了嗎,太好了終於看到了正常的rman登陸資訊了.

那就list copy|backup 看看能找到我們的

o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp

o1_mf_nnndf_TAG20080718T203240_482fkb0k_.bkp

檔案嗎.

RMAN> list copy;

specification does not match any archive log in the recovery catalog

RMAN> list backup;

List of Backup Sets

===================

 BS Key Type LV Size Device Type Elapsed Time Completion Time

------- ---- -- ---------- ----------- ------------ ---------------

1 Full 495.41M DISK 00:00:41 18-JUL-08

BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20080718T203240

Piece Name: /opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_18/o1_mf_nnndf_TAG20080718T203240_482fkb0k_.bkp

List of Datafiles in backup set 1

File LV Type Ckp SCN Ckp Time Name

---- -- ---- ---------- --------- ----

1 Full 453304 18-JUL-08 /opt/oracle/oradata/orcl/system01.dbf

2 Full 453304 18-JUL-08 /opt/oracle/oradata/orcl/undotbs01.dbf

3 Full 453304 18-JUL-08 /opt/oracle/oradata/orcl/sysaux01.dbf

4 Full 453304 18-JUL-08 /opt/oracle/oradata/orcl/users01.dbf

RMAN>

太好了,總於可以使用restore,recover來恢復datafile了.

RMAN> restore database;

Starting restore at 18-JUL-08

Starting implicit crosscheck backup at 18-JUL-08

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=156 devtype=DISK

Crosschecked 1 objects

Finished implicit crosscheck backup at 18-JUL-08

Starting implicit crosscheck copy at 18-JUL-08

using channel ORA_DISK_1

Finished implicit crosscheck copy at 18-JUL-08

searching for all files in the recovery area

cataloging files...

cataloging done

List of Cataloged Files

=======================

File Name: /opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_18/o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backupset restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /opt/oracle/oradata/orcl/system01.dbf

restoring datafile 00002 to /opt/oracle/oradata/orcl/undotbs01.dbf

restoring datafile 00003 to /opt/oracle/oradata/orcl/sysaux01.dbf

restoring datafile 00004 to /opt/oracle/oradata/orcl/users01.dbf

channel ORA_DISK_1: reading from backup piece /opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_18/o1_mf_nnndf_TAG20080718T203240_482fkb0k_.bkp

channel ORA_DISK_1: restored backup piece 1

piece handle=/opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_18/o1_mf_nnndf_TAG20080718T203240_482fkb0k_.bkp tag=TAG20080718T203240

channel ORA_DISK_1: restore complete, elapsed time: 00:00:56

Finished restore at 18-JUL-08

RMAN>

此時可以在$ORACLE_BASE/oradata/orcl/下看到期望已久的datafile了.

[[email protected] dbs] ls /opt/oracle/oradata/orcl/

control01.ctl control02.ctl control03.ctl sysaux01.dbf system01.dbf undotbs01.dbf users01.dbf

[[email protected] dbs]

不過此時還沒有完哈,需要在接在勵.

由於沒有redo log日誌檔案所以我們不應用日誌恢復:

RMAN> recover database noredo;

Starting recover at 18-JUL-08

using channel ORA_DISK_1

Finished recover at 18-JUL-08

RMAN>

到目前我們已經擁有了引數檔案,控制檔案,資料檔案了:

[[email protected] dbs] ls /opt/oracle/oradata/orcl/

ls /opt/oracle/oradata/orcl/

control01.ctl control02.ctl control03.ctl sysaux01.dbf system01.dbf

undotbs01.dbf users01.dbf

[[email protected] dbs] ls /opt/oracle/10g/dbs/

alert_orcl.log hc_orcl.dat initdw.ora init.ora lkORCL spfileorcl.ora

還差一個密碼檔案,以及相關的日誌檔案了.

先解決密碼檔案:

[[email protected] dbs] orapwd file=/opt/oracle/10g/dbs/orapworcl password=uplooking entries=5

[[email protected] dbs] ls /opt/oracle/10g/dbs/

ls /opt/oracle/10g/dbs/

alert_orcl.log initdw.ora lkORCL spfileorcl.ora

hc_orcl.dat init.ora orapworcl

下面需要大家堅持不懈的完成最後一個工作了.

通過已經恢復的controlfile and datafile 來演算出redo log file了.

步驟:

[[email protected] dbs]sqlplus /nolog

SQL*Plus: Release 10.2.0.4 - Production on Fri Jul 18 21:58:05 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn /as sysdba

Connected.

SQL> startup force mount

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes

Variable Size 62916852 bytes

Database Buffers 100663296 bytes

Redo Buffers 2973696 bytes

Database mounted.

SQL>alter system set "_allow_resetlogs_corruption"=TRUE;

alter system set "_allow_resetlogs_corruption"=TRUE

*

ERROR at line 1:

ORA-02095: specified initialization parameter cannot be modified

SQL> alter system set "_allow_resetlogs_corruption"=TRUE scope=spfile;

System altered.

SQL>ho ls /opt/oracle/oradata/orcl/

control01.ctl control03.ctl sysaux01.dbf undotbs01.dbf

control02.ctl orapworcl system01.dbf users01.dbf

下面沒有redo log file ,下面我將演算出redo log

SQL>startup force

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes

Variable Size 62916852 bytes

Database Buffers 100663296 bytes

Redo Buffers 2973696 bytes

Database mounted.

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL>alter database open resetlogs;

Database altered.

SQL> ho ls /opt/oracle/oradata/orcl/

control01.ctl orapworcl redo03.log temp01.dbf

control02.ctl redo01.log sysaux01.dbf undotbs01.dbf

control03.ctl redo02.log system01.dbf users01.dbf

SQL>

好了到這裡,非常高興了,你已經成功的從只有rman備份檔案中恢復了引數檔案,控制檔案,所有資料檔案,日誌檔案了. 

相關推薦

rman備份恢復例項經典

1.通過rman備份檔案恢復spfile2.通過rman備份檔案恢復controlfile3.通過rman備份檔案恢復datafile4.利用恢復回來的controlfile和datafile生成redolog5.測試交易是否存在,並全備 我係統環境所有的檔案如下: [[email protecte

在遠端伺服器上備份/恢復資料庫Oracle資料庫

備份用exp命令: exp 使用者名稱/密碼@遠端伺服器ip:埠號/使用者名稱 file=儲存的路徑 其中使用者名稱是在遠端伺服器中你要備份的庫的使用者名稱 案列:exp fund02/[email protected]遠端伺服器ip(略):1523/

RMAN備份恢復系列1: Oracle 10g rac asm資料庫恢復到10g單例項資料庫

RMAN> recover database; Starting recover at 11-MAR-13 using channel ORA_DISK_1 starting media recovery channel ORA_DISK_1: starting archive log restore

創建RMAN備份 恢復目錄數據庫

efault 只讀表空間 table oracl files 最好 本地 let rac 這是前段時間給客戶做的RMAN備份策略,今天有時間整理出來,希望對大家有些幫助,如有不對的地方歡迎大家給予指點,謝謝! 創建成恢復目錄數據庫 如果不是在本地配置RMAN 恢復目錄,

CO-PRIME初探 莫比烏斯NYOJ1066經典gcda,b=1

put size 兩個 test hat ott == clas otto CO-PRIME 時間限制:1000 ms | 內存限制:65535 KB 難度:3 描寫敘述 This problem is so easy! Can you solve it

mysql大數據備份與還原

mysql備份 還原 備份工具使用xtrabackup mysql大數據備份和增量備份及還原Xtrabackup實現是物理備份,而且是物理熱備目前主流的有兩個工具可以實現物理熱備:ibbackup和xtrabackup ;ibbackup是需要授權價格昂貴

POJ3728The merchant (倍增)LCADP經典||並查集壓縮路徑?

城市 contain 分析 之間 pat rst .com span 題解 There are N cities in a country, and there is one and only one simple path between each pair of c

WinHex數據恢復筆記

刷新 偏移 操作 操作數 數據恢復 .com 記錄 分區 地址 WinHex數據恢復功能強大,可以從硬件簇上扇區進行數據掃描恢復。首先對winhex的各個功能介紹。之後對實例記錄一個Word文檔刪除後進行恢復。 1、WinHex數據恢復軟件的編輯區輸入與其他普通文本輸

28.將 VMware 服務器上的虛擬機備份到 Azure

雲計算 雲平臺 接下來在 vCenter 服務器上創建角色和用戶帳戶,登錄到管理WEB界面 選擇系統管理 選擇角色,點擊+號,創建一個角色名稱為BackupAdminRole,並勾選賦予哪些權限,然後確定。 勾選哪些權限可以參考下圖 接下來創建 vCenter 服務器用戶帳戶和權限,設置Bac

25.Azure備份服務器

雲計算 雲平臺 接下來需要添加備份存儲(自己本地該服務器的備份磁盤),第一個備份副本保存在已附加到 Azure 備份服務器計算機的存儲中(即使你打算將數據發送到 Azure,也需要添加備份存儲。 在當前的 Azure 備份服務器體系結構中,Azure 備份保管庫將保存數據的第二個副本,而本地存儲將保存

29.將 VMware 服務器上的虛擬機備份到 Azure

雲計算 雲平臺 接下來就是按照以前DPM的備份方式創建保護組了,也就是我們常規理解的創建備份任務 下一步 在這裏就可以正確讀取到VMware環境中的虛擬機列表信息,並選擇需要備份的虛擬機了 訂閱保護組名稱 定義保護周期以及備份時間點(在“指定短期目標”頁上,為“保留期”指定磁盤中存儲的恢復點的

27.將 VMware 服務器上的虛擬機備份到 Azure

雲計算 雲平臺 配置 Azure 備份服務器來保護 VMware 服務器工作負荷。 上一篇文章中我已經安裝好Azure備份服務器了,Azure 備份服務器可以備份或幫助保護 VMware vCenter Server 版本 6.5、6.0 和 5.5。 這篇文章為了給大家演示出可感知工作負載類型的備份

26.Azure備份服務器

雲計算 雲平臺 最後有人好奇說目前只掛在了1個SAS盤和1個SATA盤,容量那麽小,隨著業務的增大,我需要備份的空間也隨著增大,那麽我該怎麽加大容量呢?這裏我以加一個SATA盤為例,目前該服務器只掛載了1個70G的SATA盤,接著我再給這個服務器新添加掛載1塊70G的SATA磁盤 接著重新打開服務器

24.Azure備份服務器

雲計算 雲平臺 除了之前介紹的幾種備份方式以外,Azure還有一種備份方式就是構建Azure備份服務器來進行備份,這種方式就必須要要求您的訂閱一直可用,否則無法備份。 使用 Azure 備份服務器,可以通過一個控制臺保護應用程序工作負載,如 Hyper-V VM、Microsoft SQL Serve

經典TCP粘包分析

分配 網絡通訊 有一種 解析 全部 簡單 進程 影響 大小 一 .兩個簡單概念長連接與短連接:1.長連接 Client方與Server方先建立通訊連接,連接建立後不斷開, 然後再進行報文發送和接收。 2.短連接 Client方與Server每進行一次報文收發

hdu 2126 Buy the souvenirs 【輸出方案數】【01背包】經典

continue with election i++ targe ref https contest col 題目鏈接:https://vjudge.net/contest/103424#problem/K 題目大意: 給n個物品,和m塊錢,輸出能夠購買最多物品的個數和購買

配置熱備份路由協議HSRP

0ms standby color watermark end 自動 出口 evel 網絡拓撲圖 案例:HSRP配置1.1 問題 在企業網絡到外部的連接方案中,要求不高的條件下可以是單出口。一旦該出口線路出現問題,整個企業網絡就不能連接到外網了。為了使得企業網絡到外網連接的

Poj - 3254 Corn Fields 【狀壓DP】經典

初始化 include str 結果 沖突 += poj ota scanf 題目鏈接:https://vjudge.net/contest/224636#problem/G 轉載於:https://blog.csdn.net/harrypoirot/article/det

hdu 2167 方格取數 【狀壓dp】經典

取出 fff ack 分析 題目 經典 gets bsp ets <題目鏈接> 題目大意: 給出一些數字組成的n*n階矩陣,這些數字都在[10,99]內,並且這個矩陣的 3<=n<=15,從這個矩陣中隨機取出一些數字,在取完某個數字後,該數字周圍8

網路程式設計基礎【day08】:簡單socket例項

本節內容 1、概述 2、socket例項 3、總結 一、概述   之前我們只是介紹了soket的概念和一些邏輯圖表,下面我們來看看,socket的客戶端和服務端到底是怎麼用的? 二、socket例項 2.1 客戶端 2.1.1 客戶端程式碼邏輯圖 2.1.2 客戶端程式碼