在测试服务器恢复RMAN 0级备份步骤
一、准备工作
1、检索备份集信息
在备份服务器上,列出数据库的备份信息:
[root@localhost rman_backup]# ls -lrt
-rwxr-xr-x. 1 oracle oinstall 215895552 6月 11 02:05 arch_HISDB_20260611_40710_1
-rwxr-xr-x. 1 oracle oinstall 255378432 6月 11 02:05 arch_HISDB_20260611_40711_1
-rwxr-xr-x. 1 oracle oinstall 256543744 6月 11 02:05 arch_HISDB_20260611_40712_1
-rwxr-xr-x. 1 oracle oinstall 255606272 6月 11 02:05 arch_HISDB_20260611_40713_1
-rwxr-xr-x. 1 oracle oinstall 8626688 6月 11 02:05 arch_HISDB_20260611_40714_1
-rwxr-xr-x. 1 oracle oinstall 3043840 6月 11 02:05 arch_HISDB_20260611_40721_1
-rwxr-xr-x. 1 oracle oinstall 3408896 6月 11 02:05 arch_HISDB_20260611_40722_1
-rwxr-xr-x. 1 oracle oinstall 28835840 6月 11 02:05 controlfile_HISDB_20260611_40723_1.ora
-rwxr-xr-x. 1 oracle oinstall 37243330560 6月 11 02:11 db_full_bak_HISDB_20260611_40715_1
-rwxr-xr-x. 1 oracle oinstall 41880100864 6月 11 02:18 db_full_bak_HISDB_20260611_40716_1
-rwxr-xr-x. 1 oracle oinstall 32023756800 6月 11 02:25 db_full_bak_HISDB_20260611_40717_1
-rwxr-xr-x. 1 oracle oinstall 38307815424 6月 11 02:32 db_full_bak_HISDB_20260611_40718_1
-rwxr-xr-x. 1 oracle oinstall 2293760 6月 11 02:32 db_full_bak_HISDB_20260611_40719_1
-rwxr-xr-x. 1 oracle oinstall 98304 6月 11 02:32 db_full_bak_HISDB_20260611_40720_1
-rwxr-xr-x. 1 oracle oinstall 98304 6月 11 02:32 spfile_HISDB_20260611_40724_1.ora
[root@localhost rman_backup]#
其中spfile开头的备份文件为参数文件的备份,controlfile开头的备份文件为控制文件的备份文件;
arch开头的备份文件为归档日志的备份文件,db开头的备份文件为数据文件的备份文件。
2、在测试服务器上,创建相关目录并赋予相关权限:
$ mkdir –p /u01/app/oracle/admin/hisdb/adump
$ mkdir –p /oradata/arch
$ mkdir –p /oradata/back
$ mkdir –p /oradata/data/hisdb
$ mkdir –p /oradata/fra
如果使用oracle用户创建以上目录,不需要修改权限,如果使用root用户创建目录,则需要修改目录的属组关系。
3、拷贝备份文件:
将备份文件传输到测试服务器/oradata/back目录下。
4、创建参数文件:
在测试服务器上,利用Oracle自带的init.ora文件创建参数文件,以便使用RMAN恢复参数文件。
cd $ORACLE_HOME/dbs
$ cp init.ora inithisdb.ora
$ vi inithisdb.ora
- -修改以下参数
db_name=hisdb
audit_file_dest=/u01/app/oracle/admin/hisdb/adump
diagnostic_dest=/u01/app/oracle
5、将数据库启动到nomount状态:
先声明ORACLE_SID环境变量,指定要操作的数据库实例名为hisdb。
export ORACLE_SID=hisdb
启动数据库到nomount状态,由于上文已经设置了ORACKE_SID环境变量值为hisdb,Oracle就会自动去找参数文件,默认先选择$ORACLE_HOME/dbs/spfilehisdb.ora,当前这个文件并不存在,Oracle回去寻址$ORACLE_HOME/dbs/inithisdb.ora文件,也就是上文创建的参数文件。
$ sqlplus / as sysdba
SQL> startup nomount
6、恢复参数文件:
通过RMAN,使用spfile_HISDB_20260611_40724_1.ora文件来恢复参数文件。
$ rman target /
RMAN> run {
allocate channel ch00 type 'sbt_tape';
restore spfile to pfile '/backup/inithisdb.ora' from '/oradata/back/spfile_HISDB_20260611_40724_1.ora';
release channel ch00;
}
7、关闭数据库:
由于之前数据库使用的是临时的参数文件启动,现在已经通过NBU备份恢复了参数文件,因此需要使用恢复后的参数文件启动数据库,所以需要先关闭之前启动的数据库。
$ sqlplus / as sysdba
SQL > shutdown abort
8、修改参数文件
由于通过备份恢复的参数文件是生产环境的参数文件,需要调整以下参数,可根据测试环境的需求进行调整。
例如:
$ vi inithisdb.ora
*.archive_lag_target=0
*.audit_file_dest='/u01/app/oracle/admin/hisdb/adump'
*.compatible='11.2.0'
*.control_files='/oradata/fra/histest/controlfile/control01.ctl'#Restore Controlfile
*.db_block_size=8192
*.DB_CREATE_FILE_DEST='/oradata/data/hisdb/'
*.db_domain=''
*.db_name='hisdb'
*.db_recovery_file_dest='/oradata/fra'
*.db_recovery_file_dest_size=200G
*.db_unique_name='hisdb'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oracleXDB)'
*.log_archive_dest_1='LOCATION=/oradata/arch'
*.log_archive_max_processes=4
*.log_archive_min_succeed_dest=1
*.open_cursors=300
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.sec_case_sensitive_logon=FALSE
*.sessions=665
*.undo_tablespace='UNDOTBS1'
*.service_names='HISTEST','oracle10'
*.pga_aggregate_target=16G
*.sga_target=64G
9、创建SPFILE文件
通过上面修改的参数文件inithisdb.ora创建spfile参数文件。
SQL> create spfile from pfile='/backup/inithisdb.ora';
10、使用SPfile启动数据库到nomount状态
$ sqlplus / as sysdba
SQL> startup nomount
二、恢复数据库:
1、恢复控制文件:
使用上文提到的controlfile_HISDB_20260611_40723_1.ora备份文件,恢复控制文件。
$ rman target /
RMAN> restore controlfile from '/oradata/back/controlfile_HISDB_20260611_40723_1.ora';
2、MOUNT数据库:
将数据库启动到MOUNT状态。
$ sqlplus / as sysdba
SQL> alter database mount;
3、编辑恢复数据库脚本:
编辑恢复数据文件脚本restore.sh。
$ vi restore.sh
!/bin/bash
rman target / log='/backup/rman20260611.log' append<<EOF
run {
allocate channel ch00;
allocate channel ch01;
set newname for database to '/backup/hisdb/%b';
RESTORE DATABASE;
switch datafile all;
RECOVER DATABASE;
release channel ch00;
release channel ch01;
}
EOF
Exit
4、修改脚本权限
赋予restore.sh脚本可执行权限。
$ chmod u+x restore.sh
5、恢复数据库
在后台执行restore.sh脚本,恢复数据库。
$ nohup ./restore.sh &
查看恢复日志:
$ tail -f /backup/rman20260611.log
6、修改redo日志路径:
将之前的redo日志调整到本地文件系统,修改redo日志文件的路径:
例如:
SQL> select member from v$logfile;
MEMBER
+DATA/hisdb/datafile/redo03.log
+DATA/hisdb/datafile/redo02.log
+DATA/hisdb/datafile/redo01.log
+DATA/hisdb/datafile/redo4.log
+DATA/hisdb/datafile/redo05.log
+DATA/hisdb/datafile/redo06.log
+DATA/hisdb/datafile/redo07.log
+DATA/hisdb/datafile/redo08.log
将redo日志文件路径调整到本地文件系统:
alter database rename file '+DATA/hisdb/datafile/redo03.log' to '/oradata/data/hisdb/redo03.log';
alter database rename file '+DATA/hisdb/datafile/redo02.log' to '/oradata/data/hisdb/redo02.log';
alter database rename file '+DATA/hisdb/datafile/redo01.log' to '/oradata/data/hisdb/redo01.log';
alter database rename file '+DATA/hisdb/datafile/redo4.log' to '/oradata/data/hisdb/redo04.log';
alter database rename file '+DATA/hisdb/datafile/redo05.log' to '/oradata/data/hisdb/redo05.log';
alter database rename file '+DATA/hisdb/datafile/redo06.log' to '/oradata/data/hisdb/redo06.log';
alter database rename file '+DATA/hisdb/datafile/redo07.log' to '/oradata/data/hisdb/redo07.log';
alter database rename file '+DATA/hisdb/datafile/redo08.log' to '/oradata/data/hisdb/redo08.log';
7、调整临时文件路径:
由于RMAN并不会备份临时文件,在数据库OPEN过程中,如果临时文件的路径正确,Oracle会自动创建临时文件,如果临时文件的路径不正确或者权限不足,将不会创建出临时文件,因此需要调整临时文件的存放路径:
SQL> select name from v$tempfile;
NAME
+DATA/hisdb/datafile/temp01.dbf
将临时文件调整到本地文件系统:
SQL> alter database rename file '+DATA/hisdb/datafile/temp01.dbf' to '/oradata/data/hisdb/temp01.dbf';
8、查看数据库状态:
SQL> select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE
MOUNTED PRIMARY
数据库当前为MOUNT状态。
9、打开数据文件:
SQL> alter database open resetlogs;
10、后续操作:
在新恢复的测试环境中,取消定时任务,DBLINK等;以免影响生产环境。
三、业务验证
浙公网安备 33010602011771号