存储脚本是命令文件的一种替方法用来管理频繁使用的一系列RMAN命令。存储脚本相比命令文件来说它的优点就是对于任何连接到目标数据库和恢复目录的RMAN客户端都能够使用它。而命令文件只有能够访问它的RMAN客户端能够使用。
存储脚本可以是全局或者局部脚本。一个局存储脚本与创建该脚本时RMAN所连接的目标数据库相关,只能当连接到该目标数据库时才能执行存储脚本。一个全局的存储脚本能在恢复目录中所注册的所有数据库中执行。注意执行存储脚本,即使是全局存储脚本,也必须连接到恢复目录和目标实例才能执行。
创建存储脚本
确保RMAN连接到正确的目标数据库和恢复目录,然后执行create script命令来创建局部存储脚本。例如:
create script full_backup { backup as backupset database plus archivelog; delete obsolete; } RMAN> create script full_backup 2> { 3> backup as backupset database plus archivelog; 4> delete obsolete; 5> } created script full_backup
执行创建命令如果没有输出错误信息,那么该存储脚本full_backup就创建成功并存储在恢复目录中。
下面创建一个全局存储脚本,如下所示:
create global script global_full_backup { backup as backupset database plus archivelog; delete obsolete; } RMAN> create global script global_full_backup 2> { 3> backup as backupset database plus archivelog; 4> delete obsolete; 5> } created global script global_full_backup
还可以提供了comment来描述全局存储脚本:
create global script global_full_backup comment 'use only with archivelog mode database' { backup as backupset database plus archivelog; delete obsolete; } RMAN> create global script global_full_backup 2> comment 'use only with archivelog mode database' 3> { 4> backup as backupset database plus archivelog; 5> delete obsolete; 6> } created global script global_full_backup
还可以读取文本文件来创建局部或全局存储脚本:
RMAN> create script test_script from file '/u01/app/oracle/test_script_file.txt'; script commands will be loaded from file /u01/app/oracle/test_script_file.txt created script test_script RMAN> create global script global_test_script from file '/u01/app/oracle/test_script_file.txt'; script commands will be loaded from file /u01/app/oracle/test_script_file.txt created global script global_test_script
文本文件内宾3必须以{开始,再接RUN块中的一系列有效的命令,最后以}结束。
执行存储脚本
为了执行存储脚本,连接到目标数据库和恢复目录,使用execute script命令,execute script命令要求使用RUN块:
RMAN> run 2> { 3> execute script full_backup; 4> } executing script: full_backup Starting backup at 18-MAR-15 current log archived allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=145 devtype=DISK channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=1 recid=9 stamp=871547115 input archive log thread=1 sequence=2 recid=10 stamp=872692777 input archive log thread=1 sequence=3 recid=11 stamp=873390010 input archive log thread=1 sequence=4 recid=12 stamp=873477689 input archive log thread=1 sequence=5 recid=13 stamp=873557205 input archive log thread=1 sequence=6 recid=14 stamp=873628154 input archive log thread=1 sequence=7 recid=15 stamp=873881476 input archive log thread=1 sequence=8 recid=16 stamp=873969596 input archive log thread=1 sequence=9 recid=17 stamp=874234871 input archive log thread=1 sequence=10 recid=18 stamp=874315436 input archive log thread=1 sequence=11 recid=19 stamp=874486364 input archive log thread=1 sequence=12 recid=20 stamp=874574023 input archive log thread=1 sequence=13 recid=21 stamp=874579545 input archive log thread=1 sequence=14 recid=22 stamp=874657043 input archive log thread=1 sequence=15 recid=23 stamp=874663015 channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T095657_bjkpvd26_.bkp tag=TAG20150318T095657 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:27 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=44 recid=6 stamp=870948358 input archive log thread=1 sequence=45 recid=7 stamp=870948359 input archive log thread=1 sequence=46 recid=8 stamp=870948359 channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T095657_bjkpw6cl_.bkp tag=TAG20150318T095657 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 18-MAR-15 Starting backup at 18-MAR-15 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00001 name=/u01/app/oracle/oradata/jy/system01.dbf input datafile fno=00002 name=/u01/app/oracle/oradata/jy/undotbs01.dbf input datafile fno=00003 name=/u01/app/oracle/oradata/jy/sysaux01.dbf input datafile fno=00005 name=/u01/app/oracle/oradata/jy/example01.dbf input datafile fno=00004 name=/u01/app/oracle/oradata/jy/users01.dbf channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_nnndf_TAG20150318T095727_bjkpw9xz_.bkp tag=TAG20150318T095727 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:15 Finished backup at 18-MAR-15 Starting backup at 18-MAR-15 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=16 recid=24 stamp=874663125 channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T095845_bjkpyqdc_.bkp tag=TAG20150318T095845 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 18-MAR-15 Starting Control File and SPFILE Autobackup at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/autobackup/2015_03_18/o1_mf_s_874663128_bjkpytxr_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 18-MAR-15 RMAN retention policy will be applied to the command RMAN retention policy is set to redundancy 1 using channel ORA_DISK_1 Deleting the following obsolete backups and copies: Type Key Completion Time Filename/Handle -------------------- ------ ------------------ -------------------- Archive Log 3769 06-FEB-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_06/o1_mf_1_44_bf88d537_.arc Archive Log 3770 06-FEB-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_06/o1_mf_1_45_bf88d73o_.arc Archive Log 3771 06-FEB-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_06/o1_mf_1_46_bf88d7cv_.arc Archive Log 3772 13-FEB-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_13/o1_mf_1_1_bftk375y_.arc Archive Log 3773 26-FEB-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_26/o1_mf_1_2_bgxhx2ww_.arc Archive Log 3774 03-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_03/o1_mf_1_3_bhbvorcp_.arc Archive Log 3775 04-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_04/o1_mf_1_4_bhfk9mdr_.arc Archive Log 3776 05-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_05/o1_mf_1_5_bhhyxwnp_.arc Archive Log 3777 06-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_06/o1_mf_1_6_bhl47mgr_.arc Archive Log 3778 09-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_09/o1_mf_1_7_bhsvmzby_.arc Archive Log 3779 10-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_10/o1_mf_1_8_bhwkos6m_.arc Archive Log 3780 13-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_13/o1_mf_1_9_bj4nqm2j_.arc Archive Log 3781 14-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_14/o1_mf_1_10_bj73f7y4_.arc Archive Log 3782 16-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_16/o1_mf_1_11_bjdbbrvm_.arc Archive Log 3783 17-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_17/o1_mf_1_12_bjgzxz92_.arc Archive Log 3784 17-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_17/o1_mf_1_13_bjh5bqyo_.arc Archive Log 3785 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_14_bjkk0h4p_.arc Backup Set 3786 06-FEB-15 Backup Piece 3788 06-FEB-15 /u01/app/oracle/flash_recovery_area/JY/autobackup/2015_02_06/o1_mf_s_870945982_bf861zo6_.bkp Datafile Copy 3794 03-MAR-15 /u01/app/oracle/users01.dbf Backup Set 3787 06-FEB-15 Backup Piece 3789 06-FEB-15 /u01/app/oracle/flash_recovery_area/JY/autobackup/2015_02_06/o1_mf_s_870948381_bf88dyom_.bkp Archive Log 3806 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_15_bjkpv6py_.arc Backup Set 3813 18-MAR-15 Backup Piece 3817 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T095657_bjkpvd26_.bkp Backup Set 3814 18-MAR-15 Backup Piece 3818 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T095657_bjkpw6cl_.bkp Do you really want to delete the above objects (enter YES or NO)? YES deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_06/o1_mf_1_44_bf88d537_.arc recid=6 stamp=870948358 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_06/o1_mf_1_45_bf88d73o_.arc recid=7 stamp=870948359 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_06/o1_mf_1_46_bf88d7cv_.arc recid=8 stamp=870948359 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_13/o1_mf_1_1_bftk375y_.arc recid=9 stamp=871547115 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_02_26/o1_mf_1_2_bgxhx2ww_.arc recid=10 stamp=872692777 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_03/o1_mf_1_3_bhbvorcp_.arc recid=11 stamp=873390010 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_04/o1_mf_1_4_bhfk9mdr_.arc recid=12 stamp=873477689 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_05/o1_mf_1_5_bhhyxwnp_.arc recid=13 stamp=873557205 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_06/o1_mf_1_6_bhl47mgr_.arc recid=14 stamp=873628154 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_09/o1_mf_1_7_bhsvmzby_.arc recid=15 stamp=873881476 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_10/o1_mf_1_8_bhwkos6m_.arc recid=16 stamp=873969596 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_13/o1_mf_1_9_bj4nqm2j_.arc recid=17 stamp=874234871 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_14/o1_mf_1_10_bj73f7y4_.arc recid=18 stamp=874315436 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_16/o1_mf_1_11_bjdbbrvm_.arc recid=19 stamp=874486364 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_17/o1_mf_1_12_bjgzxz92_.arc recid=20 stamp=874574023 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_17/o1_mf_1_13_bjh5bqyo_.arc recid=21 stamp=874579545 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_14_bjkk0h4p_.arc recid=22 stamp=874657043 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/autobackup/2015_02_06/o1_mf_s_870945982_bf861zo6_.bkp recid=4 stamp=870948272 deleted datafile copy datafile copy filename=/u01/app/oracle/users01.dbf recid=2 stamp=873392067 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/autobackup/2015_02_06/o1_mf_s_870948381_bf88dyom_.bkp recid=5 stamp=870948382 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_15_bjkpv6py_.arc recid=23 stamp=874663015 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T095657_bjkpvd26_.bkp recid=6 stamp=874663020 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T095657_bjkpw6cl_.bkp recid=7 stamp=874663046 Deleted 23 objects
上面的命令将调用指定名称的局部脚本full_script。如果没有找到局部脚本,但存在相同名称的全局脚本,RMAN将执行同名的全局存储脚本。如果存在同名的局部和全局脚本可以使用execute global script来控制只执行全局脚本。在恢复目录中没有名叫global_full_backup的局部脚本存在,那么执行下面两个命令的结果是一样的:
RMAN> run 2> { 3> execute global script global_full_backup; 4> } executing global script: global_full_backup Starting backup at 18-MAR-15 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=16 recid=24 stamp=874663125 input archive log thread=1 sequence=17 recid=25 stamp=874663571 channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T100613_bjkqdppq_.bkp tag=TAG20150318T100613 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 18-MAR-15 Starting backup at 18-MAR-15 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00001 name=/u01/app/oracle/oradata/jy/system01.dbf input datafile fno=00002 name=/u01/app/oracle/oradata/jy/undotbs01.dbf input datafile fno=00003 name=/u01/app/oracle/oradata/jy/sysaux01.dbf input datafile fno=00005 name=/u01/app/oracle/oradata/jy/example01.dbf input datafile fno=00004 name=/u01/app/oracle/oradata/jy/users01.dbf channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_nnndf_TAG20150318T100615_bjkqds89_.bkp tag=TAG20150318T100615 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:15 Finished backup at 18-MAR-15 Starting backup at 18-MAR-15 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=18 recid=26 stamp=874663651 channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T100732_bjkqh6cv_.bkp tag=TAG20150318T100732 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 18-MAR-15 Starting Control File and SPFILE Autobackup at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/autobackup/2015_03_18/o1_mf_s_874663655_bjkqh9db_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 18-MAR-15 RMAN retention policy will be applied to the command RMAN retention policy is set to redundancy 1 using channel ORA_DISK_1 Deleting the following obsolete backups and copies: Type Key Completion Time Filename/Handle -------------------- ------ ------------------ -------------------- Archive Log 3845 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_16_bjkpynv3_.arc Backup Set 3846 18-MAR-15 Backup Piece 3850 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_nnndf_TAG20150318T095727_bjkpw9xz_.bkp Backup Set 3864 18-MAR-15 Backup Piece 3870 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T095845_bjkpyqdc_.bkp Archive Log 3913 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_17_bjkqdmto_.arc Backup Set 3880 18-MAR-15 Backup Piece 3882 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/autobackup/2015_03_18/o1_mf_s_874663128_bjkpytxr_.bkp Backup Set 3925 18-MAR-15 Backup Piece 3928 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T100613_bjkqdppq_.bkp Do you really want to delete the above objects (enter YES or NO)? yes deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_16_bjkpynv3_.arc recid=24 stamp=874663125 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_nnndf_TAG20150318T095727_bjkpw9xz_.bkp recid=8 stamp=874663049 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T095845_bjkpyqdc_.bkp recid=9 stamp=874663127 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_17_bjkqdmto_.arc recid=25 stamp=874663571 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/autobackup/2015_03_18/o1_mf_s_874663128_bjkpytxr_.bkp recid=10 stamp=874663130 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T100613_bjkqdppq_.bkp recid=11 stamp=874663574 Deleted 6 objects RMAN> run 2> { 3> execute script global_full_backup; 4> } executing global script: global_full_backup Starting backup at 18-MAR-15 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=18 recid=26 stamp=874663651 input archive log thread=1 sequence=19 recid=27 stamp=874664008 channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T101329_bjkqtbtn_.bkp tag=TAG20150318T101329 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 18-MAR-15 Starting backup at 18-MAR-15 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00001 name=/u01/app/oracle/oradata/jy/system01.dbf input datafile fno=00002 name=/u01/app/oracle/oradata/jy/undotbs01.dbf input datafile fno=00003 name=/u01/app/oracle/oradata/jy/sysaux01.dbf input datafile fno=00005 name=/u01/app/oracle/oradata/jy/example01.dbf input datafile fno=00004 name=/u01/app/oracle/oradata/jy/users01.dbf channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_nnndf_TAG20150318T101331_bjkqtdoh_.bkp tag=TAG20150318T101331 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:05 Finished backup at 18-MAR-15 Starting backup at 18-MAR-15 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=20 recid=28 stamp=874664078 channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T101439_bjkqwjl4_.bkp tag=TAG20150318T101439 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 18-MAR-15 Starting Control File and SPFILE Autobackup at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/JY/autobackup/2015_03_18/o1_mf_s_874664082_bjkqwmhg_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 18-MAR-15 RMAN retention policy will be applied to the command RMAN retention policy is set to redundancy 1 using channel ORA_DISK_1 Deleting the following obsolete backups and copies: Type Key Completion Time Filename/Handle -------------------- ------ ------------------ -------------------- Archive Log 3944 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_18_bjkqh3ov_.arc Backup Set 3945 18-MAR-15 Backup Piece 3948 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_nnndf_TAG20150318T100615_bjkqds89_.bkp Backup Set 3967 18-MAR-15 Backup Piece 3973 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T100732_bjkqh6cv_.bkp Archive Log 4036 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_19_bjkqt8p5_.arc Backup Set 3988 18-MAR-15 Backup Piece 3990 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/autobackup/2015_03_18/o1_mf_s_874663655_bjkqh9db_.bkp Backup Set 4053 18-MAR-15 Backup Piece 4056 18-MAR-15 /u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T101329_bjkqtbtn_.bkp Do you really want to delete the above objects (enter YES or NO)? YES deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_18_bjkqh3ov_.arc recid=26 stamp=874663651 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_nnndf_TAG20150318T100615_bjkqds89_.bkp recid=12 stamp=874663576 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T100732_bjkqh6cv_.bkp recid=13 stamp=874663654 deleted archive log archive log filename=/u01/app/oracle/flash_recovery_area/JY/archivelog/2015_03_18/o1_mf_1_19_bjkqt8p5_.arc recid=27 stamp=874664008 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/autobackup/2015_03_18/o1_mf_s_874663655_bjkqh9db_.bkp recid=14 stamp=874663657 deleted backup piece backup piece handle=/u01/app/oracle/flash_recovery_area/JY/backupset/2015_03_18/o1_mf_annnn_TAG20150318T101329_bjkqtbtn_.bkp recid=15 stamp=874664010 Deleted 6 objects
在执行全局脚本只影响RMAN所连接到的目标数据库;为了跨多个数据库执行全局脚本,必须单独连接到每一个数据库并执行全局存储脚本。
在执行脚本时将会使用配置的自动通道来执行脚本。如果需要覆盖配置的自动通道可以在脚本中使用allocate channel命令来手动分配通道。注意因为使用的是RUN块,如果脚本中的一个RMAN命令失败,脚本中的后续命令将不会执行。
查看存储脚本内容
print script命令用来查看存储脚本或将脚本内容写入到新文件。使用RMAN连接到目标数据库和恢复目录。执行print script:
RMAN> print script full_backup; printing stored script: full_backup {backup as backupset database plus archivelog; delete obsolete; } 显示全局脚本内容: RMAN> print global script global_full_backup; printing stored global script: global_full_backup {backup as backupset database plus archivelog; delete obsolete; }
为将脚本内容写入到新文件中,执行以下命令:
RMAN> print script full_backup to file '/u01/app/oracle/full_backup.txt'; script full_backup written to file /u01/app/oracle/full_backup.txt
将全局脚本内容写入文件:
RMAN> print global script global_full_backup to file '/u01/app/oracle/global_full_backup.txt'; global script global_full_backup written to file /u01/app/oracle/global_full_backup.txt
查看恢复目录中的存储脚本:list script names
使用list script names命令来显示恢复目录中的存储脚本名。这个命令会显示所有存储脚本名。
RMAN> list script names; List of Stored Scripts in Recovery Catalog Scripts of Target Database JY Script Name Description ----------------------------------------------------------------------- full_backup Global Scripts Script Name Description ----------------------------------------------------------------------- global_full_backup use only with archivelog mode database
只显示全局存储脚本名:
RMAN> list global script names; List of Stored Scripts in Recovery Catalog Global Scripts Script Name Description ----------------------------------------------------------------------- global_full_backup use only with archivelog mode database
为了查看当前恢复目录中所有存储脚本的名称,包括在恢复目录中所有已经注册的目标数据库的全局和局部脚本,执行以下命令:
RMAN> list all script names; List of Stored Scripts in Recovery Catalog Global Scripts Script Name Description ----------------------------------------------------------------------- global_full_backup use only with archivelog mode database Scripts of Target Database JY Script Name Description ----------------------------------------------------------------------- full_backup Scripts of Target Database TEST Script Name Description ----------------------------------------------------------------------- test_full_backup
可以看到上面显示了两个目标数据库(jy,test)中的所有存储脚本
更新存储脚本
为了更新存储脚本,连接到目标数据库和恢复目录并使用replace script命令来执行更新。如果脚本不存在,那么RMAN将会创建一个新存储脚本。
下面的命令用来更新脚本full_backup的内容:
先来查看恢复目录中所有存储脚本名来检查是否存在full_backup脚本
RMAN> list all script names; List of Stored Scripts in Recovery Catalog Global Scripts Script Name Description ----------------------------------------------------------------------- global_full_backup use only with archivelog mode database Scripts of Target Database JY Script Name Description ----------------------------------------------------------------------- full_backup Scripts of Target Database TEST Script Name Description ----------------------------------------------------------------------- test_full_backup
查看脚本full_backup的内容
RMAN> print script full_backup; printing stored script: full_backup {backup as backupset database plus archivelog; delete obsolete; } 更新脚本full_backup RMAN> replace script full_backup 2> { 3> backup as backupset database plus archivelog; 4> } replaced script full_backup
检查脚本full_backup是否已经被更新
RMAN> print script full_backup; printing stored script: full_backup {backup as backupset database plus archivelog; }
从脚本内容可知full_backup内容确实已经被更新.
下面来更新一个不存在的脚本full_backup_bak
RMAN> replace script full_backup_update 2> { 3> backup as backupset database plus archivelog; 4> } replaced script full_backup_update
从下面的信息中可以看到当更新一个不存在的脚本,RMAN确实会创建这个脚本
RMAN> list all script names; List of Stored Scripts in Recovery Catalog Global Scripts Script Name Description ----------------------------------------------------------------------- global_full_backup use only with archivelog mode database Scripts of Target Database JY Script Name Description ----------------------------------------------------------------------- full_backup full_backup_update Scripts of Target Database TEST Script Name Description ----------------------------------------------------------------------- test_full_backup RMAN> print script full_backup_update; printing stored script: full_backup_update {backup as backupset database plus archivelog; }
全局存储脚本可以使用replace global script命令来进行更新:
查看更新前global_full_backup脚本的内容
RMAN> print script global_full_backup; printing stored global script: global_full_backup {backup as backupset database plus archivelog; delete obsolete; }
更新全局脚本global_full_backup
RMAN> replace global script global_full_backup 2> { 3> backup as backupset database plus archivelog; 4> } replaced global script global_full_backup
显示更新后全局脚本global_full_backup的内容
RMAN> print global script global_full_backup; printing stored global script: global_full_backup {backup as backupset database plus archivelog; }
与create script命令一样,可以使用文件来更新局部或全局存储脚本。
更新前查看全局脚本global_full_backup的内容
RMAN> print global script global_full_backup; printing stored global script: global_full_backup {backup as backupset database plus archivelog; }
使用global_full_backup.txt文件来更新全局脚本global_full_backup
RMAN> replace global script global_full_backup from file '/u01/app/oracle/global_full_backup.txt'; script commands will be loaded from file /u01/app/oracle/global_full_backup.txt replaced global script global_full_backup
查看更新后的脚本内容:
RMAN> print global script global_full_backup; printing stored global script: global_full_backup {backup as backupset database plus archivelog; delete obsolete; }
更新前查看局部脚本full_backup的内容
RMAN> print script full_backup; printing stored script: full_backup {backup as backupset database plus archivelog; }
使用full_backup.txt文件来更新局部脚本full_backup
RMAN> replace script full_backup from file '/u01/app/oracle/full_backup.txt'; script commands will be loaded from file /u01/app/oracle/full_backup.txt replaced script full_backup
查看更新后的脚本内容:
RMAN> print script full_backup; printing stored script: full_backup {backup as backupset database plus archivelog; delete obsolete; }
删除存储脚本
为了从恢复目录中删除存储脚本,连接恢复目录和目标数据库后执行delete script命令:
RMAN> list script names; List of Stored Scripts in Recovery Catalog Scripts of Target Database JY Script Name Description ----------------------------------------------------------------------- full_backup full_backup_update Global Scripts Script Name Description ----------------------------------------------------------------------- global_full_backup
为了从恢复目录中删除局部存储脚本full_backup
RMAN> delete script 'full_backup'; deleted script: full_backup
为了删除全局存储脚本global_full_backup,执行delete global script:
RMAN> delete global script 'global_full_backup'; deleted global script: global_full_backup
如果没有给delete script命令指定global参数,并且目标数据库中没有指定名称的存储脚本存在,RMAN将使用指定名称来查找全局存储脚本如果找到就将其删除。因此为了删除全局存储脚本也可以执行以下的命令:
RMAN> delete script 'global_full_backup'; deleted script: global_full_backup
对于delete script 'global_full_backup'命令,RMAN会在连接到的目标数据库中查找脚本'global_full_backup',如果没有找到,将会搜索名为'global_full_backup'的全局脚本,如果找到就将其删除。
启动RMAN客户端并执行存储脚本
为了运行RMAN客户端并执行存储在恢复目录中的存储脚本,可以使用script参数来启动RMAN客户端:
[oracle@oracle11g ~]$ rman target sys/zzh_2046@test catalog rman/rman@jy script 'global_full_backup' Recovery Manager: Release 10.2.0.5.0 - Production on Wed Mar 18 11:22:04 2015 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: TEST (DBID=2168949517) connected to recovery catalog database executing global script: global_full_backup Starting backup at 18-MAR-15 current log archived allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=141 devtype=DISK skipping archive log file /u02/1_49_870806981.dbf; already backed up 1 time(s) skipping archive log file /u02/1_50_870806981.dbf; already backed up 1 time(s) skipping archive log file /u02/1_51_870806981.dbf; already backed up 1 time(s) skipping archive log file /u02/1_52_870806981.dbf; already backed up 1 time(s) skipping archive log file /u02/1_53_870806981.dbf; already backed up 1 time(s) skipping archive log file /u02/1_54_870806981.dbf; already backed up 1 time(s) skipping archive log file /u02/1_55_870806981.dbf; already backed up 1 time(s) skipping archive log file /u02/1_56_870806981.dbf; already backed up 1 time(s) channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=57 recid=64 stamp=874668125 channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u02/ora_test874668127_671 tag=TAG20150318T112206 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 18-MAR-15 Starting backup at 18-MAR-15 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00001 name=/u01/app/oracle/oradata/test/system01.dbf input datafile fno=00003 name=/u01/app/oracle/oradata/test/sysaux01.dbf input datafile fno=00005 name=/u01/app/oracle/oradata/test/example01.dbf input datafile fno=00006 name=/u01/app/oracle/oradata/test/tspitr01.dbf input datafile fno=00002 name=/u01/app/oracle/oradata/test/undotbs01.dbf input datafile fno=00004 name=/u01/app/oracle/oradata/test/users01.dbf channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u02/ora_test874668130_681 tag=TAG20150318T112209 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:15 Finished backup at 18-MAR-15 Starting backup at 18-MAR-15 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=58 recid=65 stamp=874668205 channel ORA_DISK_1: starting piece 1 at 18-MAR-15 channel ORA_DISK_1: finished piece 1 at 18-MAR-15 piece handle=/u02/ora_test874668206_691 tag=TAG20150318T112326 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 18-MAR-15 Starting Control File and SPFILE Autobackup at 18-MAR-15 piece handle=/u01/app/oracle/flash_recovery_area/TEST/autobackup/2015_03_18/o1_mf_s_874668209_bjkvxl3b_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 18-MAR-15 Recovery Manager complete.
在启动RMAN客户端时必须要连接到恢复目录(存储脚本存储在恢复目录中)和目标数据库。
存储脚本命名限制
RMAN是如何解决脚本名称,尤其是在局部和全局脚本共享相同名称时存在的一些问题:
.RMAN允许但一般不要求将存储脚本名使用引号括起来。然而,存储脚本名以数字或RMAN的保留关键开头就需要将存储脚本名称使用引号括起来。对于存储脚本名称要考虑避免使用A-Z之外的字符或RMAN的保留关键字作为名称的开始字符。
.当在命令行中使用script参数来启动RMAN客户端,如果存在相同名称的局部和全局存储脚本,那么RMAN将总是执行局部脚本。
.对于execute script,delete script和print script命令,如果脚本名称作为一个参数被传递并且在连接到的目标数据库中没有该相同名称的脚本存在,RMAN将执行,删除或显示相同名称的全局脚本。例如,如果在恢复目录中存在一个名叫global_full_backup的全局存储脚本,但在目标数据库中没有名叫global_full_backup的局部存储脚本,下面的命令将会删除全局脚本:
DELETE SCRIPT global_full_backup;