oracle数据库备份详解及recovery catalog数据库的应用
一、数据库的物理组成:
1.参数文件:一般存放路径为:
$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ---二进制参数文件 或$ORACLE_HOME/dbs/init$ORACLE_SID.ora ---文本参数文件 主要用途:设置数据库实例启动的参数。
2.控制文件:一般存放路径为:
$ORACLE_BASE/oradata/$ORACLE_SID/control{01,02,03...}.ctl
主要用途是:存储数据库的元数据、把数据库实例挂起,能决定数据库能否恢复到最新的根本。
3.数据文件(datafiles):包括system表空间、sysaux表空间、undo表空间、temporary表空间对应的数据文件。 一般存放路径为:
$ORACLE_BASE/oradata/$ORACLE_SID/... 主要用途:存放数据
4.redo日志文件:一般存放路径为:
$ORACLE_BASE/oradata/$ORACLE_SID/redo{01,02,03...}.log 主要用途:存放重做日志,保证数据库可以实例恢复到最新。
5.归档日志文件(archive log):一般存放路径为:
参数log_archive_dest{1..10}所设定的值的位置,最多可设置10个。是redo日志的存盘归档,为数据库回复提供保障。
二、recovery catalog数据库:
1.recovery catalog数据库是记录需要备份的目标库的元数据(包括使用rman备份的元数据),可以通过rman从recovery catalog数据库中提取元数据信息,自动找到数据库的备份文件,自动化恢复数据库,保证了不会因为数据库的备份过多造成无法找到相应备份文件的问题。
2.recovery catalog数据库的创建:
可以在一个比较空闲的数据库上建立(前提是和需要使用recovery catalog的数据库是可以远程登陆的)。 SQL> create tablespace rcat datafile 'ORACLE_BASE/oradata/$ORACLE_SID/rcat.dbf' size 200M autoextend on; SQL> create user rman identified by rman default tablespace rcat temporary temp quota unlimited on rcat;
SQL> grant recovery_catalog_owner to rman; SQL> !rman catalog rman/rman@tnsname
rman> create catalog; rman>quit;
rman target sys/oracle@tnsname catalog rman/rman@tnsname rman> register database;
注册完数据库就可以正常使用了,如果想添加其他的数据库,执行倒数2步就可以了(把 target 端写上新的数据库连接,再注册即可)
以后再进行备份登录rman的时候就需要连同target端和catalog端一起登录(注意,这里target端需要使用sys用户)。
三、备份数据库:
首先,登录rman(这里以orcl数据库为例tnsname是orcl,密码是oracle,recovery catalog 数据库是rcat)
rman target sys/oracle@orcl catalog rman/rman@rcat rman > show all;(显示rman的配置参数)
rman > CONFIGURE BACKUP OPTIMIZATION ON;(启动备份优化)
rman > CONFIGURE CONTROLFILE AUTOBACKUP ON;(启动控制文件自动备份) rman > backup database plus archivelog delete input;(备份数据库加上归档日志并且清空归档目录)
这里之所以加上归档的备份是因为backup database plus archivelog delete input;这条语句会在备份数据库开始时先切换一下redo日志,在数据库备份完成后再切换一次redo日志,把当前日志归档下来进行备份,这样就保证了archive log 的最终scn与datafiles 的最终scn一致(保证了备份的有效性),而控制文件备份是在最后一次备份当前日志归档后自动备份的(连同二进制参数文件一起备份的),也就是控制文件记录的scn一直比所有数据文件新,
这样就保证了控制文件的有效性。从而使得数据库可以正常的进行完全恢复。

