Oracle数据库中rman备份脚本非常实用(一)

2015-01-21 12:31:46 · 作者: · 浏览: 5

查询字符集


SQL> select * from nls_database_parameters;?


NLS_CHARACTERSET
AL32UTF8?


备份时字符集很重要,不然会出乱码


一、0级备份(全备)红色是要修改的,根据个人的存放位置。


[oracle@oracle122 script]$ cat db_bak0.rman
run
{
? ? configure retention policy to recovery window of 8 days;
? ? configure controlfile autobackup on;
? ? configure controlfile autobackup format for device type disk to '/home/oracle/rmanbak/%F';
? ? allocate channel ch1 device type disk format '/home/oracle/rmanbak/inc0_%d_%s_%p_%u_%T';
? ? backup incremental level 0 tag='level 0' database skip inaccessible filesperset 10 plus archivelog filesperset 20;
? ? release channel ch1;
}
allocate channel for maintenance device type disk;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt archivelog until time 'sysdate-30';


0级运行脚本


[oracle@oracle122 script]$ cat exec_0_level.sh
ORACLE_HOSTNAME=oracle122; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1; export ORACLE_HOME

ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
export DATE=$(date +%Y_%m_%d)
export NLS_LANG="Simplified Chinese_china".AL32UTF8


/u01/app/oracle/product/11.2.0/dbhome_1/bin/rman target sys/sys_admin cmdfile /home/oracle/rmanbak/script/db_bak0.rman log /home/oracle/rmanbak/script/log/rman_$DATE.log append


二、1级备份(增量)


[oracle@oracle122 script]$ cat db_bak1.rman
run
{
? ? configure retention policy to recovery window of 8 days;
? ? configure controlfile autobackup on;
? ? configure controlfile autobackup format for device type disk to '/home/oracle/rmanbak/%F';
? ? allocate channel ch1 device type disk format '/home/oracle/rmanbak/inc1_%d_%s_%p_%u_%T';
? ? backup incremental level 1 tag='level 1' database skip inaccessible filesperset 10 plus archivelog filesperset 20;
? ? release channel ch1;
}
allocate channel for maintenance device type disk;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt archivelog until time 'sysdate-30';


1级运行脚本


[oracle@oracle122 script]$ cat exec_1_level.sh
ORACLE_HOSTNAME=oracle122; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
export DATE=$(date +%Y_%m_%d)
export NLS_LANG="Simplified Chinese_china".AL32UTF8


/u01/app/oracle/product/11.2.0/dbhome_1/bin/rman target sys/sys_admin cmdfile /home/oracle/rmanbak/script/db_bak1.rman log /home/oracle/rmanbak/script/log/rman_$DATE.log append


?


三、2级备份(从0级追加到现在的备份)


[oracle@oracle122 script]$ cat db_bak2.rman
run
{
? ? configure retention policy to recovery window of 8 days;
? ? configure controlfile autobackup on;
? ? configure controlfile autobackup format for device type disk to '/home/oracle/rmanbak/%F';
? ? allocate channel ch1 device type disk format '/home/oracle/rmanbak/inc2_%d_%s_%p_%u_%T';
? ? backup incremental level 2 tag='level 2' database skip inaccessible filesperset 10 plus archivelog filesperset 20 delete all input;
? ? release channel ch1;
}
allocate channel for maintenance device type disk;
crosscheck backup;
delete noprompt expired backup;
delete noprompt o