不完全备份系列

来源:互联网 发布:淘宝怎样用图片搜索 编辑:程序博客网 时间:2024/06/04 18:40

用rman方式基于日志序列的不完全恢复

sql> select * from test;a-----123456sql>hostramn target/
rman>run{allocate channel c1 type disk;bakup full tag 'dbful' format 'd:\backup\full_%u_%s_%p' databaseinclude current controlfile;sql' alter system archive log current';release channel c1;}rman>exit;sql>insert into test values(16); sql>commit;sql>alter system switch logfile;sql>insert into test values(17);sql>alter system switch logfile;
sql>archive log list;....oldest onlie log sequence 14next log sequence to archive 16current log sequence 16
sql>select group#,sequence#,archived,status from v$loggroup# sequence# archived status-----------------------------------1       16         yes     active2       17         no      current3       15         yes     active

从这里看出备份的数据文件包含了第14个归档日志. 在线日志v$log里正在使用的是17序列的日志,15和16已经完成了归档.
当我们没有备份15和16日志.15和16包含了表test新数据16和17.
实现不完全恢复就是只恢复归档日志下面的日志数据. 不能进行实例恢复,也就是说在线日志被看成没了!
在线日志17里的数据不能被恢复, 15和16日志已经被归档,当没备份,如果没有被删除是可以被恢复的.

sql> shutdown immediate;sql>startup nomount;sql>alter database monut;sql>hostrman target/rman> run{allocate channel c1 type disk;set until logseq 14 thread 1;restore database;recover database;sql'alter database open resetlogs';}

用rman方式基于时间的不完全恢复

sql> insert into test values(100);commit;sql> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';sql> select sysdate from dual;sysdate----------2012-06-15 10:36:14sql> hostrman target /rman>run{allocate channel c1 type disk;bakup full tag 'dbful' format 'd:\backup\full_%u_%s_%p' databaseinclude current controlfile;sql' alter system archive log current';release channel c1;}rman> exitsql> insert into test values(150);sql>commit;sql> select sysdate from dual;sysdate----------2012-06-15 10:46:14sql>alter system switch logfile;sql> insert into test values(250);sql> commit;sql> select sysdate from dual;sysdate----------2012-06-15 10:50:14
sql> shutdown immediate;sql> startup mount;sql> exit;set nls_date_format=yyyy-mm-dd hh24:mi:ssrman target/rman>run{allocate channel c1 type disk;set until time '2012-06-15 10:46:14';restore database;recover database;sql 'alter database open resetlogs';release channel c1;}

--recover database until time '2008-04-10 10:36:14';  可以不用set until 直接在recover database跟
--set until time "to_date('2008042115:00:00','yyyymmdd hh24:mi:ss')"  可以不用操作系统设置时间格式


用rman方式基于scn的不完全恢复

sqlplus "/as sysda"sql>select dbms_flashback.get_system_change_number from dual;xxxxx345sql>insert into test values(400);sql>commit;sql>select dbms_flashback.get_system_change_number from dual;xxxxx356;sql> host;rman target/rman>run{allocate channel c1 type disk;bakup full tag 'dbful' format 'd:\backup\full_%u_%s_%p' databaseinclude current controlfile;sql' alter system archive log current';release channel c1;}rman>exit;sql>insert into test values(450);sql>commit;sql>select dbms_flashback.get_system_change_number from dual;xxxxx368sql>shutdown immediate;sql>startup mount;sql>exit;rman target/rman> run{allocate channel c1 type disk;restore database;recover database until scn xxxx356;sql 'alter database open resetlogs';release channel c1;}

 

 

原创粉丝点击