查看服务器磁盘空间使用率,确保磁盘有足够的测试空间。
创建测试所需目录。
#mkdir –p /u02/oradata/prod
#mkdir –p /u02/admin/adump
#mkdir
/u02/admin/bdump
#mkdir
/u02/admin/cdump
#mkdir
/u02/admin/dpdump
#mkdir
/u02/admin/udump
#mkdir /u02/arc
#mkdir
/u02/redolog
#chown –R oracle:oinstall /u02
#chmod –R 775 /u02
创建恢复测试的pfile文件。
$vi
/u02/inittest.ora
*.audit_file_dest='/u02/admin/adump'
*.background_dump_dest='/u02/admin/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u02/control01.ctl'
*.core_dump_dest='/u02/admin/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='prod'
*.db_unique_name='test'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP)
(SERVICE=prodXDB)'
*.job_queue_processes=10
*.log_archive_dest_1='location=/u02/arc'
*.log_archive_format='%t_%s_%r.arc'
*.nls_date_format='YYYY-MM-DD
HH24:MI:SS'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u02/admin/udump'
使用生产库的RMAN 转储备份的控制文件到指定位置。
RMAN>restore
controlfile to '/u02/control01.ctl';
使用指定的pfile启动测试数据库到mount状态。
$export
ORACLE_SID=prod1
$sqlplus / as
sysdba
SQL>startup
mount pfile='/u02/initprod1.ora';
关闭测试库BLOCK CHANGE TRACKING。
SQL> ALTER
DATABASE DISABLE BLOCK CHANGE TRACKING;
关闭测试库Oracle Flashback Database。
SQL> ALTER
DATABASE FLASHBACK OFF;
查询测试库控制文件记录的数据文件名。
SQL>select
file#,name from v$datafile;
FILE# NAME
----------
--------------------------------------------------
1
+DATA/prod/datafile/system.273.819024757
2
+DATA/prod/datafile/undotbs1.271.819024105
3
+DATA/prod/datafile/sysaux.274.819024871
4
+DATA/prod/datafile/users.272.819024611
5
+DATA/prod/datafile/example.275.819024937
使用测试库的RMAN转储备份的数据文件到指定位置。
RMAN>
run {
set newname for
datafile 1 to '/u02/oradata/prod/system01.dbf';
set newname for
datafile 2 to '/u02/oradata/prod/undotbs1.dbf';
set newname for
datafile 3 to '/u02/oradata/prod/sysaux.dbf';
set newname for
datafile 4 to '/u02/oradata/prod/users.dbf';
set newname for
datafile 5 to '/u02/oradata/prod/example.dbf';
restore datafile
1;
restore datafile
2;
restore datafile
3;
restore datafile
4;
restore datafile
5;
}
重命名数据文件名。
RMAN>switch
database to copy;
使用测试库的RMAN恢复测试库。
$export
ORACLE_SID=prod1
$rman target /
RMAN>recover
database;
重命名测试库在线日志组。
SQL>
alter database
rename file '+DATA/prod/onlinelog/group_1.260.819054405' to
'/u02/redolog/redo01a.log';
alter database
rename file '+FRA/prod/onlinelog/group_1.256.819054423' to '/u02/redolog/redo01b.log';
alter database
rename file '+DATA/prod/onlinelog/group_2.257.819054443' to
'/u02/redolog/redo02b.log';
alter database
rename file '+FRA/prod/onlinelog/group_2.261.819054463' to
'/u02/redolog/redo02a.log';
alter database
rename file '+DATA/prod/onlinelog/group_3.275.819054553' to
'/u02/redolog/redo03a.log';
alter database
rename file '+FRA/prod/onlinelog/group_3.258.819054571' to
'/u02/redolog/redo03b.log';
重建测试库tempfile。
SQL>select
file#,name from v$tempfile;
FILE# NAME
----------
--------------------------------------------------
1
+DATA/prod/datafile/temp01.275.819024937
SQL> ALTER
DATABASE TEMPFILE '+DATA/prod/datafile/temp01.275.819024937' DROP;
SQL> ALTER
TABLESPACE temp ADD TEMPFILE;
开启测试库。
SQL>alter
database open resetlogs;