一.把数据库恢复到某个时间点
恢复到数据库的某个时间点属于数据库的不完全恢复。确认存在rman的备份,并且备份可以使用。模拟操作
sql>alter session set nls_date_format='yyymmdd hh24:mi:ss';
select sysdate from dual;
执行删除或者修改操作,过了10多天,已经不能使用数据库的flashback特性进行恢复,只能使用rman的备份恢复数据库
sql>conn sys/sys as sysdba
sql>shutdown immediate
export ORACLE_SID=orcl
rman target/
rman>startup mount
rman>restore database;
rman>sql 'alter session set nls_data_format="yyyymmdd hh24:mi:ss''';
rman>recover database until time '201703012 11:53:34';
rman>sql 'alter database open resetlogs';属于不完全恢复,数据库的重做日志将重新生成。>?
rman>exit
$sqlplus / as sysdba
sql>archive log list;
数据库恢复完成,立即重新全库备份数据库,执行相应的脚本
二.把数据库恢复到某个SCN(系统改变号) 模拟相关操作 oracle数据库的内部时间
查看当前数据库的SCN号
sql>conn / as sysdba
sql>select dbms_flashback.get_system_change_number from dual;
通过SCN号查看对应的时间
sql>select to_char(scn_to_timestamp(963959),'YYYY-MM-DD HH34:MI:SS') from dual;
通过时间找到对应的SCN号
sql>select timestamp_to_scn(to_date('2016-02-23 12:34:19','YYYY-MM-DD HH24:MI:SS')) from dual;
执行删除或者修改操作,过去10天无法用flashback恢复,只能用rman的备份恢复。恢复之前确定时间对应的SCN
sql>conn sys/sys as sysdba
sql>alter session set nls_date_format='yyyymmdd hh24:mi:ss';
sql>select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where rownum<10;确认时间对应的SCN
开始恢复
sql>conn sys/sys as sysdba
sql>shutdowm immediate
$export ORACLE_SID=orcl
$rman target/
rman>startup mount
rman>restore database;
rman>recover database until scn 963915;属于不完全恢复
rman>sql 'slter database open resetlogs';
exit
恢复完成之后需要立即备份 ./backupfull.sh