ORACLE之不完全恢复:基于SCN的恢复
- 基于SCN的恢复,做不完全恢复,只需要恢复到某个时间点的SCN,恢复hr用户的表t1,只有两条数据。
一、确定恢复到的SCN号
设置时间格式
查看当前SCN号
下面命令定位到我们需要的SCN号,在这个实验中,我们需要的是2的归档 SCN:2239349,我们恢复到这个SCN,hr的t1表恢复到只有1和2,两行数据。
SQL> select recid, stamp, thread#, sequence#, resetlogs_id, first_change#, first_time, next_change# from v$archived_log
2 where resetlogs_change# = (select resetlogs_change# from v$database_incarnation where status = 'CURRENT');
RECID STAMP THREAD# SEQUENCE# RESETLOGS_ID FIRST_CHANGE# FIRST_TIME NEXT_CHANGE#
---------- ---------- ---------- ---------- ------------ ------------- ----------------- ------------
41 1064464456 1 1 1064464371 2238697 20210214 04:32:51 2239349
42 1064464456 1 1 1064464371 2238697 20210214 04:32:51 2239349
43 1064464734 1 2 1064464371 2239349 20210214 04:34:16 2239457
44 1064464734 1 2 1064464371 2239349 20210214 04:34:16 2239457
45 1064465735 1 3 1064464371 2239457 20210214 04:38:54 2240089
46 1064465735 1 3 1064464371 2239457 20210214 04:38:54 2240089
6 rows selected.
SQL> select * from hr.t1;
ID
----------
1
2
3
4
可以将SCN号转换为时间格式:
二、执行恢复
SQL> recover database until change 2239349