听说过还原(restore)数据库,表空间及数据库文件,使用归档日志恢复(recover)数据库,表空间,数据库文件。
咦,还有还原归档日志这一说法呢?没错,可能我们忽略了还原归档日志这一个过程,原因是还原归档日志通常情况下是oracle在recover时自动完成的。
大多数情况下我们是先还原数据库,恢复数据库,打开数据库。实际上在恢复数据库之前有一个动作,那就是还原归档日志,也就是将日志文件还原到缺省的归档位置,
如果我们在备份归档日志时使用了delete[all]input子句的话。
本文对此给出了单独还原归档日志以及恢复归档日志的示例以及restore archivelog的一些用法,仅仅是为了更好来的理解还原与恢复的过程,
因为大多数情形下,数据文件被还原到缺省路径。如果是还原到非缺省路径,那就需要手动restore archivelog。1、理解还原与恢复
还原(restore): 还原指将数据文件(可能受损)用之前的备份来替代或者复制到新的路径,这个是大多数情形和通常的说法。
恢复(recover): 将备份之后的归档日志apply到数据库,也就根据归档日志的事务将数据库刷新到特定或最新状态(通常在还原之后操作)。对于归
档日志中那些已提交的事务进行前滚,未提交的事务进行回滚。
还原归档日志: 还原归档日志是位于还原数据库与恢复数据库之间的这么一个过程。它会将那些在备份归档日志时使用delete[all]input方式
删除的归档日志还原到缺省的归档位置。在还原数据库之后,如果要做recover,也就是作介质恢复那就需要用到归档日志。
那还原之后进行recover需要的归档日志在哪里呢?
归档日志在指定的归档路径那里,那到底有没有呢?如果有,还原时出现提示,归档日志已经在指定位置。
如果没有,但是备份的归档备份集那里有,也行啊。备份集里包含备份片,也就是打包了归档日志。那既然打包就要解包,解包到缺省路径
或指定路径。这就是还原归档日志。2、示例演示还原归档日志--演示环境--为了较好的模拟还原归档日志,我们仅仅使用了一个特定的数据文件进行copy方式备份,然后备份归档日志(备份时删除归档日志)--接下来破坏数据文件,还原数据文件,还原归档日志文件,恢复日志文件。
[oracle@linux3 ~]$ cat /etc/issue
Enterprise Linux Enterprise Linux Server release5.5(Carthage)
Kernel \ronan \m[oracle@linux3 ~]$ sqlplus -V
SQL*Plus: Release 11.2.0.1.0Production
a、备份数据文件及归档日志
RMAN> list backup of archivelog all; --->列出当前数据库已经备份的归档日志
specification doesnot match any backup inthe repository
RMAN> list backupset; --->列出当前数据库已存在的备份集
specification doesnot match any backup inthe repository
SQL> select username,default_tablespace from dba_users where username='SCOTT'; -->查看用户scott所在的表空间及数据文件
USERNAME DEFAULT_TABLESPACE------------------------------ ------------------------------
SCOTT USERS
SQL> select name,file# from v$datafile where tablespace_name='USERS';
NAMEFILE#------------------------------------------------------------ ----------
/u01/database/sybo3/oradata/users01.dbf 4SQL> conn scott/tiger;
Connected.
SQL> select name,sequence#,status,COMPLETION_TIME from v$archived_log where status='A'; -->当前系统无任何归档日志
no rows selected
SQL>host;
RMAN> copy datafile 4 to '/u01/database/sybo3/fra/SYBO3/backupset/2013_07_26/users01.dbf'; -->使用rman copy方式备份数据文件
RMAN>list copy;
using targetdatabase control file instead ofrecovery catalog
sp