目录
图灵小队—2个rman的备份集(1个数据备份集,1个控制文件和参数文件备份集)的恢复过程
1、获取2个备份集位置
[oracle@qdmes241:/oracle/restore4]$ll total 1108620 -rw-r----- 1 oracle oinstall 10928128 Aug 27 08:35 control01.ctl -rw-r----- 1 oracle oinstall 1113268224 Aug 27 08:27 o1_mf_nnndf_TAG20220824T112512_kjc6jrmz_.bkp
2、先还原参数文件和控制文件
(1)还原参数文件
RMAN>空实例下 RMAN> restore spfile to '/oracle/restore4/spfile.ora' from '/oracle/restore4/o1_mf_s_1113564315_kjc6jvpx_.bkp';
或者直接strings /oracle/restore4/o1_mf_s_1113564315_kjc6jvpx_.bkp 找到参数文件和控制文件内容。
(2)还原控制文件
RMAN> restore controlfile to '/oracle/restore4/control01.ctl' from '/oracle/restore4/o1_mf_s_1113564315_kjc6jvpx_.bkp';
3、查看参数文件并启动
(1)查看spfile文件并转换为pfile文件
*._log_deletion_policy='ALL' *.audit_file_dest='/oracle/app/oracle/admin/mesorcl/adump' *.audit_trail='db' *.compatible='12.2.0' *.control_files='/oracle/app/oracle/oradata/mesorcl/control01.ctl','/oracle/app/oracle/oradata/mesorcl/control02.ctl' *.db_block_size=8192 *.db_name='mesorcl' *.db_recovery_file_dest_size=53687091200 *.db_recovery_file_dest='/oracle/archivelog' *.db_unique_name='mesorcl' *.diagnostic_dest='/oracle/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=mesorclXDB)' *.local_listener='' *.nls_language='AMERICAN' *.nls_territory='AMERICA' *.open_cursors=300 *.pga_aggregate_target=1265m *.processes=640 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=3794m *.undo_tablespace='UNDOTBS1'
(2)从pfile启动数据库到nomount
SQL> startup pfile='/oracle/restore4/pfile.ora' nomount;
4、将数据库启动到mount状态
(1)先将控制文件拷贝到上述参数文件指定位置
[oracle@qdmes241:/oracle/restore4]$cp control01.ctl /oracle/app/oracle/oradata/mesorcl/control01.ctl [oracle@qdmes241:/oracle/restore4]$cp control01.ctl /oracle/app/oracle/oradata/mesorcl/control02.ctl
(2)启动到mount状态
启动过程会读取控制文件
SQL> alter database mount; Database altered.
5、进入rman查看
list backup列出了控制文件记录的备份的目录,我们可以把上述文件放到这个目录中
RMAN> list backup; using target database control file instead of recovery catalog
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ ------------------- 2 Full 1.04G DISK 00:00:01 2022-08-24 11:25:13 BP Key: 2 Status: AVAILABLE Compressed: NO Tag: TAG20220824T112512 Piece Name: /oracle/archivelog/MESORCL/backupset/2022_08_24/o1_mf_nnndf_TAG20220824T112512_kjc6jrmz_.bkp List of Datafiles in backup set 2 File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name ---- -- ---- ---------- ------------------- ----------- ------ ---- 1 Full 1742899 2022-08-24 11:25:12 NO /oracle/app/oracle/oradata/mesorcl/system01.dbf 3 Full 1742899 2022-08-24 11:25:12 NO /oracle/app/oracle/oradata/mesorcl/sysaux01.dbf 4 Full 1742899 2022-08-24 11:25:12 NO /oracle/app/oracle/oradata/mesorcl/undotbs01.dbf 5 Full 1742899 2022-08-24 11:25:12 NO /oracle/app/oracle/oradata/mesorcl/test01.dbf 7 Full 1742899 2022-08-24 11:25:12 NO /oracle/app/oracle/oradata/mesorcl/users01.dbf
6、还原数据文件
(1)方法1:直接利用上述的list backup内容
将备份文件拷贝到控制文件所记录的备份目录中
/oracle/archivelog/MESORCL/backupset/2022_08_24/o1_mf_nnndf_TAG20220824T112512_kjc6jrmz_.bkp
--如果我们有上述控制文件所记录的数据目录:/oracle/app/oracle/oradata/mesorcl/
可以直接进行RMAN>restore database;
--如果我们没有控制文件所记录的数据目录,可以创建其他目录,我们需要指定还原目标位置:
RMAN>run{ allocate channel d1 type disk; allocate channel d2 type disk; set newname for datafile 1 to '/oracle/restore4/system01.dbf'; set newname for datafile 3 to '/oracle/restore4/sysaux01.dbf'; set newname for datafile 4 to '/oracle/restore4/undotbs01.dbf'; set newname for datafile 5 to '/oracle/restore4/test01.dbf'; set newname for datafile 7 to '/oracle/restore4/users01.dbf'; restore database; switch datafile all; release channel d1; release channel d2; } 只还原(restore),不会恢复(recover),因为没有archivelog和redolog,后面需要手动recover
(2)方法2:如果没有这个备份目录,我们手动进行还原,可以手动指定备份目录。
注意这种restore database from ' ***'的模式貌似不能使用。所以我们使用方法1;
--如果我们有上述控制文件所记录的数据目录:/oracle/app/oracle/oradata/mesorcl/
RMAN> restore database from '/oracle/restore4/o1_mf_nnndf_TAG20220824T112512_kjc6jrmz_.bkp'
--如果我们没有控制文件所记录的数据目录,可以创建其他目录,我们需要指定还原目标位置,并更新到控制文件(switch datafile all):
RMAN>run
{
allocate channel d1 type disk;
allocate channel d2 type disk;
set newname for datafile 1 to '/oracle/restore4/system01.dbf';
set newname for datafile 3 to '/oracle/restore4/sysaux01.dbf';
set newname for datafile 4 to '/oracle/restore4/undotbs01.dbf';
set newname for datafile 5 to '/oracle/restore4/test01.dbf';
set newname for datafile 6 to '/oracle/restore4/users01.dbf';
restore database from '/oracle/restore4/o1_mf_nnndf_TAG20220824T112512_kjc6jrmz_.bkp';
switch datafile all;
release channel d1;
release channel d2;
}
只还原(restore),不会恢复(recover),因为没有archivelog和redolog,后面需要手动recover
7、恢复数据库
SQL> recover database using backup controlfile until cancel; ORA-00279: change 1742899 generated at 08/24/2022 11:25:12 needed for thread 1 ORA-00289: suggestion : /oracle/archivelog/MESORCL/archivelog2/2022_08_24/o1_mf_1_1_kjcggkyt_.arc ORA-00280: change 1742899 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled. SQL> alter database open resetlogs; Database altered.
8、数据查看
SQL> select count(*) from test.test01; COUNT(*) ---------- 888 SQL> select file#,name,status from v$datafile;
FILE# NAME STATUS ---------- ------------------------------------------------------------ ----------- 1 /oracle/restore4/system01.dbf SYSTEM 3 /oracle/restore4/sysaux01.dbf ONLINE 4 /oracle/restore4/undotbs01.dbf ONLINE 5 /oracle/restore4/test01.dbf ONLINE 7 /oracle/app/oracle/oradata/mesorcl/users01.dbf ONLINE
9、创建临时表空间
SQL> create temporary tablespace temp02 tempfile '/oracle/app/oracle/oradata/mesorcl/temp02.dbf' size 20m autoextend on; SQL> alter database default temporary tablespace temp02; SQL> drop tablespace temp including contents and datafiles; SQL> create temporary tablespace temp tempfile '/oracle/app/oracle/oradata/mesorcl/temp01.dbf' size 20m autoextend on; SQL> alter database default temporary tablespace temp; SQL> drop tablespace temp02 including contents and datafiles;