ORACLE之RMAN不完全恢复-基于备份控制文件恢复到全新的主机(test)
前提条件准备
- 恢复到5提交之后的时间点(2021-02-16 02:41:10)
SQL> select * from hr.t1;
ID
----------
4
1
2
3
SQL>
SQL>
SQL>
SQL> select sysdate from dual;
SYSDATE
-------------------
2021-02-16 02:37:27
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/archive/
Oldest online log sequence 7
Next log sequence to archive 9
Current log sequence 9
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/archive/
Oldest online log sequence 7
Next log sequence to archive 9
Current log sequence 9
SQL> insert into hr.t1 values(5);
1 row created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/archive/
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence 10
SQL> insert into hr.t1 values(6);
1 row created.
SQL> select sysdate from dual;
SYSDATE
-------------------
2021-02-16 02:41:10
SQL> commit;
Commit complete.
SQL> select sysdate from dual;
SYSDATE
-------------------
2021-02-16 02:41:18
SQL> alter system switch logfile;
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/archive/
Oldest online log sequence 9
Next log sequence to archive 11
Current log sequence 11
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/archive/
Oldest online log sequence 10
Next log sequence to archive 12
Current log sequence 12
SQL>
执行恢复
在新主机test上创建1.ora,以启动到nomount状态。新主机上有和原主机一样的文件结构
从备份中恢复spfile文件
//指定spfile备份的路径
RMAN> run {
2> restore spfile from '/u01/app/oracle/product/12.2.0/db_1/dbs/c-1591640445-20210216-00';
3> }
Starting restore at 2021-02-16 03:10:12
using channel ORA_DISK_1
channel ORA_DISK_1: restoring spfile from AUTOBACKUP /u01/app/oracle/product/12.2.0/db_1/dbs/c-1591640445-20210216-00
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 2021-02-16 03:10:13
RMAN>
重启数据库到nomount(使用的是恢复的spfile),然后从备份恢复控制文件:(默认恢复到spfile指定的路径下)
SQL> startup nomount force;
ORACLE instance started.
Total System Global Area 838860800 bytes
Fixed Size 8626240 bytes
Variable Size 348131264 bytes
Database Buffers 473956352 bytes
Redo Buffers 8146944 bytes
SQL>
rman target / <<!
run{
startup force nomount;
restore controlfile from '/u01/app/oracle/product/12.2.0/db_1/dbs/c-1591640445-20210216-00';
alter database mount;
}
!
恢复成功:
执行恢复:
RMAN>
run{
startup force mount;
set until time "to_date('2021-02-16 02:06:50', 'yyyy-mm-dd hh24:mi:ss')";
restore database;
recover database;
sql 'alter database open resetlogs';
}
run{
allocate channel c1 type disk;
set until time "to_date('2021-02-16 02:41:10', 'yyyy-mm-dd hh24:mi:ss')";
restore database;
switch datafile all;
recover database;
alter database open resetlogs;
release channel c1;
}
!