ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle实验记录 (恢复-不完全恢复)

oracle实验记录 (恢复-不完全恢复)

原创 Linux操作系统 作者:fufuh2o 时间:2009-08-21 16:14:12 0 删除 编辑

不完全恢复 就是要恢复到某一个时间点 日志不应用完 要resetlogs open database(日志序号重新为0)
需要restore所有datafile 将所有datafile 恢复到一个时间点


恢复过程也很简单

 

 d:\backupscript.sql


host copy E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF   d:\backup\SYSTEM01.DBF
host copy E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF   d:\backup\UNDOTBS01.DBF
host copy E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF   d:\backup\SYSAUX01.DBF
host copy E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF   d:\backup\USERS01.DBF
host copy E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF  d:\backup\EXAMPLE01.DBF
host copy D:\TEST.DBF  d:\backup\test.dbf

 

 


SQL> alter database begin backup;(会产生N多 redo record  记录整个块,防止块分裂)

SQL> @ d:\backupscript.sql
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。
SQL> alter database end backup;
SQL>
SQL> select count(*) from t2;

  COUNT(*)
----------
    200000

1 row selected.

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    7653502

1 row selected.

SQL> delete from t2;

200000 rows deleted.

SQL> commit;

Commit complete.

SQL> alter system switch logfile;

System altered.

~现在执行恢复 恢复到INSERT 前
restore.txt
host copy   d:\backup\SYSTEM01.DBF E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF
host copy   d:\backup\UNDOTBS01.DBF  E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF
host copy   d:\backup\SYSAUX01.DBF E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF
host copy   d:\backup\USERS01.DBF E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF
host copy   d:\backup\EXAMPLE01.DBF E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF
host copy   d:\backup\test.dbf D:\TEST.DBF

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145488364 bytes
Database Buffers           25165824 bytes
Redo Buffers                 524288 bytes
Database mounted.

SQL> @d:\restore.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL>
SQL> recover database until change 7653502;还可以until  change 到指定SCN
until time 到指定时间(NLS_DATE_FORMAT)  UNTIL cancle 日志到哪用到哪

 

ORA-00279: change 7653004 generated at 08/20/2009 17:17:45 needed for thread 1
ORA-00289: suggestion :
E:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\XHTEST\ARCHIVELOG\2009_08_20\O1_MF_

1_91_%U_.ARC
ORA-00280: change 7653004 for thread 1 is in sequence #91


Specify log: {=suggested | filename | AUTO | CANCEL}
auto~
Log applied.
Media recovery complete.

SQL> alter database open resetlogs;~~~~~~~~~~~`

Database altered.

SQL> select count(*) from t2;

  COUNT(*)
----------
    200000

1 row selected.

 

 

~~~~~~~~~~~~~~~~~~~~~RMAN进行不完全恢复
SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------

E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF
E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF
D:\TEST.DBF

6 rows selected.

 

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    7687698

SQL> select * from t1;

         A
----------
         1

 


SQL> truncate table t1;

Table truncated.

SQL> show user;
USER is "XH"
SQL> select * from t1;

no rows selected
SQL> conn / as sysdba
Connected.
SQL> startup force mount;
Database mounted.

RMAN> run{set until scn=7687698;
2> restore database;
3> recover database;
4> }

starting media recovery
media recovery complete

Finished recover at 21-8月 -09


SQL> alter database open resetlogs;

Database altered.

SQL> select sequence# from v$log;(resetlog重置 序号)

 SEQUENCE#
----------
         0
         0
         0
         1
SQL> conn xh/a831115
Connected.
SQL> select * from t1;

         A
----------
         1


可以 until sequence,  until time 没有until cancel
resetlogs后 之前备份无法使用了(当然还是有办法使用的,会专门实验),需要重新备份
del 后重新备份

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12020513/viewspace-612849/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-06-26

  • 博文量
    182
  • 访问量
    471643