雙重加密模式下的備份恢復

蘭在晨發表於2013-02-01

第一部分 .       概述

一、        實驗環境

Os information:

[oracle@lzc 2012_09_30]$ lsb_release -a

LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch

Distributor ID: RedHatEnterpriseServer

Description:    Red Hat Enterprise Linux Server release 5.4 (Tikanga)

 

Database information:

 BANNER

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

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

二、        實驗目標

使用在雙重加密模式下的全庫備份,在遠端主機上進行上恢復。使資料庫正常啟動,並且執行。

三、        實驗設計

1、  手動建立引數檔案

2、  恢復引數檔案、控制檔案

3、  恢復資料庫

4、  開啟資料庫

第二部分 .       技術概述

一、        實驗步驟

1.       手動建立引數檔案

要想恢復資料庫,首先需要啟動資料庫,而沒有引數檔案就無法啟動資料庫。所以,我們要先手動建立一個臨時引數檔案。這樣我們就可以把資料庫啟動到nomount狀態了。手動建立引數檔案最少只需要一個db_name引數。

a)        將資料庫啟動到mount狀態

[oracle@lzc01 ~]$ cat inittestdb.ora

db_name=testdb

SQL> startup pfile='/home/oracle/inittestdb.ora' nomount;

ORACLE instance started.

Total System Global Area  113246208 bytes

Fixed Size                  1218004 bytes

Variable Size              58722860 bytes

Database Buffers           50331648 bytes

Redo Buffers                2973696 bytes

b)        開啟錢包

由於我們的備份時在雙重模式下的加密所以我們要想恢復引數檔案,就要先開啟wallet

把從源資料庫中備份的wallet拷貝到相應的目錄下,並將路徑新增到sqlnet.ora檔案中。

ENCRYPTION_WALLET_LOCATION =

 (SOURCE=(METHOD=FILE)(METHOD_DATA=

 (DIRECTORY=/u01/app/oracle/product/10.2.0.1/db_1/network/admin/wallets/)))

 

SQL> alter system set encryption wallet open identified by "oracle.com";

System altered.

2.       恢復引數檔案

現在已經將資料庫開啟到了nomount狀態,並且wallet也已經開啟那麼我們就可以從雙重加密的全庫備份片中恢復引數檔案和控制檔案了。

a)        恢復引數檔案

RMAN> restore spfile to '/home/oracle/inittestdb.ora' from '/home/oracle/exercise/o1_mf_s_795383881_86jdyb61_.bkp';

Starting restore at 01-OCT-12

using channel ORA_DISK_1

channel ORA_DISK_1: autobackup found: /home/oracle/exercise/o1_mf_s_795383881_86jdyb61_.bkp

channel ORA_DISK_1: SPFILE restore from autobackup complete

Finished restore at 01-OCT-12

3.       重建資料庫環境

現在有了引數檔案、控制檔案那麼我們是不是就可以恢復資料庫了呢,確切的說還有一個需要考慮的問題就是:資料庫中各個檔案對應的儲存目錄。

這裡有兩種選擇:

1)相同路徑:按照引數檔案和控制檔案中的記錄,建立相應的目錄。

2)不同路徑:也可以建立不同的目錄。把恢復的檔案儲存到對應的目錄中,然後修改引數檔案和控制檔案中相應的引數。這裡我就按照引數檔案中記錄的將對應目錄手動建立起來。

a)        建立目錄

[oracle@lzc01 ~]$ mkdir -p /u01/app/oracle/admin/testdb/adump

[oracle@lzc01 ~]$ mkdir -p /u01/app/oracle/admin/testdb/bdump

[oracle@lzc01 ~]$ mkdir -p /u01/app/oracle/admin/testdb/udump

[oracle@lzc01 ~]$ mkdir -p /u01/app/oracle/admin/testdb/cdump

[oracle@lzc01 ~]$ mkdir -p /u01/app/oracle/oradata/testdb/

[oracle@lzc01 ~]$ mkdir -p /u01/app/oracle/flash_recovery_area

b)        將恢復的引數檔案拷貝到對應的目錄下

[oracle@lzc01 ~]$ cp spfiletestdb.ora /u01/app/oracle/product/10.2.0.1/db_1/dbs/

c)         啟動資料庫到nomount狀態

RMAN> shutdown immediate;

 

database dismounted

Oracle instance shut down

RMAN> startup nomount

connected to target database (not started)

Oracle instance started

 

Total System Global Area     285212672 bytes

 

Fixed Size                     1218992 bytes

Variable Size                100664912 bytes

Database Buffers             180355072 bytes

Redo Buffers                   2973696 bytes

 

d)        恢復控制檔案

RMAN> restore controlfile from '/home/oracle/exercise/o1_mf_s_795383881_86jdyb61_.bkp';

 

Starting restore at 01-OCT-12

using channel ORA_DISK_1

 

channel ORA_DISK_1: restoring control file

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

output filename=/u01/app/oracle/oradata/testdb/control01.ctl

output filename=/u01/app/oracle/oradata/testdb/control02.ctl

output filename=/u01/app/oracle/oradata/testdb/control03.ctl

Finished restore at 01-OCT-12

4.       恢復資料庫

有了控制檔案我們就可以將資料庫啟動到mount狀態並進行恢復了。把備份拷貝到相應的flash_recover_dest     引數的目錄下。

a)        開啟錢包

SQL> alter system set encryption wallet open identified by "oracle.com";

System altered.

b)        恢復資料庫

RMAN> restore database;

 

Starting restore at 01-OCT-12

Starting implicit crosscheck backup at 01-OCT-12

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=156 devtype=DISK

Crosschecked 3 objects

Finished implicit crosscheck backup at 01-OCT-12

 

Starting implicit crosscheck copy at 01-OCT-12

using channel ORA_DISK_1

Finished implicit crosscheck copy at 01-OCT-12

 

searching for all files in the recovery area

cataloging files...

no files cataloged

 

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 /u01/app/oracle/oradata/testdb/system01.dbf

restoring datafile 00002 to /u01/app/oracle/oradata/testdb/undotbs01.dbf

restoring datafile 00003 to /u01/app/oracle/oradata/testdb/sysaux01.dbf

restoring datafile 00004 to /u01/app/oracle/oradata/testdb/users01.dbf

restoring datafile 00005 to /u01/app/oracle/oradata/testdb/redef01.dbf

channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/TESTDB/backupset/2012_09_30/o1_mf_nnndf_TAG20120930T195638_86jdvrb1_.bkp

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/app/oracle/flash_recovery_area/TESTDB/backupset/2012_09_30/o1_mf_nnndf_TAG20120930T195638_86jdvrb1_.bkp tag=TAG20120930T195638

channel ORA_DISK_1: restore complete, elapsed time: 00:01:09

Finished restore at 01-OCT-12

c)         開啟資料庫

RMAN> alter database open RESETLOGS;

database opened

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26723566/viewspace-753747/,如需轉載,請註明出處,否則將追究法律責任。

相關文章