`

oracle 10g使用RMAN和flash_recovery_area进行自动备份恢复

阅读更多

本文摘自互联网,经过自己实际检测应用,并做了详细修改。

1.配置控制文件自动备份

从9i开始,可以用rman来配置控制文件的自动备份,默认备份到$ORACLE_HOME/dbs目录下,如果是10g且使用了闪回区(flash_recovery_area),则备份到闪回区。
使用rman配置控制文件自动备份,前提是一定要设置数据库为归档模式,否则不生效。

1.1环境用下面的命令查看
SQL> select * from v$version;
SQL> archive log list
SQL> show parameter recovery;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /oracle10/flash_recovery_area
db_recovery_file_dest_size           big integer 1048M
recovery_parallelism                 integer     0

1.2配置控制文件自动备份
$ rman target /
RMAN> configure controlfile autobackup on;
old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
RMAN>
RMAN> show controlfile autobackup;
RMAN configuration parameters are:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN>

1.3 测试

1.3.1 创建1个新的表空间(在数据库结构发生变化时,就会自动备份控制文件)
$ sqlplus / as sysdba
SQL> create tablespace tbs_test datafile '/oracle10/oradata/ora10g/tbs_test_01.dbf' size 10M;
Tablespace created.

1.3.2观察alert_ora10g($ORACLE_BASE/admin/$ORACLE_SID/bdump)日志文件,发现发生了控制文件的自动备份
Tue Jan  8 20:52:15 2008
create tablespace tbs_test datafile '/oracle10/oradata/ora10g/tbs_test_01.dbf' size 10M
Tue Jan  8 20:52:19 2008
Starting control autobackup
Control autobackup written to DISK device
        handle '/oracle10/flash_recovery_area/ORA10G/autobackup/2008_01_08/o1_mf_s_643495940_3r6wj9j1_.bkp'
Completed: create tablespace tbs_test datafile '/oracle10/oradata/ora10g/tbs_test_01.dbf' size 10M

PS:其实控制文件和spfile同时被自动备份了

1.3.3观察闪回区的文件
cd[oracle10@seagull ~]$ cd /oracle10/flash_recovery_area/ORA10G/autobackup/2008_01_08/
[oracle10@seagull 2008_01_08]$ ls -l
total 6988
-rw-r-----  1 oracle10 oinstall 7143424 Jan  8 20:52 o1_mf_s_643495940_3r6wj9j1_.bkp

1.4恢复控制文件和spfile

1.4.1恢复控制文件到一个临时目录下
RMAN> restore controlfile to '/tmp/control01.ctl' from autobackup;
文件默认从最近的一个备份进行回复,可以把生成的文件copy到原始的控制文件存放目录

/$ORACLE_BASE/product/oradata/[instance]/control01.ctl

PS:如果数据库没有mount,则此操作会报错,可以采用set dbid命令或者恢复时指定自动备份集(restore controlfile to 'xx' from 'xxxx')。

1.4.2恢复spfile到一个临时目录下
RMAN> restore spfile to '/tmp/spfile.ora' from autobackup;
文件默认从最近的一个备份进行回复,可以把生成的文件copy到原始的spfile文件存放目录

/$ORACLE_BASE/product/10.2.0/db_1/dbs/spfile[instance].ora


ps:如果实例无法nomount,则此操作会报错,此时可以先手工编辑1个pfile启动实例,然后用上面的命令来恢复spfile;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics