首页 > Linux操作系统 > Linux操作系统 > 双重加密模式下的备份恢复
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、 打开数据库
要想恢复数据库,首先需要启动数据库,而没有参数文件就无法启动数据库。所以,我们要先手动创建一个临时参数文件。这样我们就可以把数据库启动到nomount状态了。手动创建参数文件最少只需要一个db_name参数。
[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
由于我们的备份时在双重模式下的加密所以我们要想恢复参数文件,就要先打开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.
现在已经将数据库打开到了nomount状态,并且wallet也已经打开那么我们就可以从双重加密的全库备份片中恢复参数文件和控制文件了。
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
现在有了参数文件、控制文件那么我们是不是就可以恢复数据库了呢,确切的说还有一个需要考虑的问题就是:数据库中各个文件对应的存储目录。
这里有两种选择:
1)相同路径:按照参数文件和控制文件中的记录,创建相应的目录。
2)不同路径:也可以创建不同的目录。把恢复的文件存储到对应的目录中,然后修改参数文件和控制文件中相应的参数。这里我就按照参数文件中记录的将对应目录手动创建起来。
[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
[oracle@lzc01 ~]$ cp spfiletestdb.ora /u01/app/oracle/product/10.2.0.1/db_1/dbs/
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
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
有了控制文件我们就可以将数据库启动到mount状态并进行恢复了。把备份拷贝到相应的flash_recover_dest 参数的目录下。
SQL> alter system set encryption wallet open identified by "oracle.com";
System altered.
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
RMAN> alter database open RESETLOGS;
database opened
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26723566/viewspace-753747/ ,如需转载,请注明出处,否则将追究法律责任。