oracle怎么用rman脚本进行备份

oracle怎么用rman脚本进行备份,第1张

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

查询字符集

SQL> select from nls_database_parameters;

NLS_CHARACTERSET

AL32UTF8

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

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

[oracle@oracle122 script]$ cat db_bak0rman

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_levelsh

ORACLE_HOSTNAME=oracle122; export ORACLE_HOSTNAME

ORACLE_BASE=/u01/app; export ORACLE_BASE

ORACLE_HOME=/u01/app/oracle/product/1120/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/1120/dbhome_1/bin/rman target sys/sys_admin cmdfile /home/oracle/rmanbak/script/db_bak0rman log /home/oracle/rmanbak/script/log/rman_$DATElog append

二、1级备份(增量)

[oracle@oracle122 script]$ cat db_bak1rman

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_levelsh

ORACLE_HOSTNAME=oracle122; export ORACLE_HOSTNAME

ORACLE_BASE=/u01/app; export ORACLE_BASE

ORACLE_HOME=/u01/app/oracle/product/1120/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/1120/dbhome_1/bin/rman target sys/sys_admin cmdfile /home/oracle/rmanbak/script/db_bak1rman log /home/oracle/rmanbak/script/log/rman_$DATElog append

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

[oracle@oracle122 script]$ cat db_bak2rman

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 obsolete;

2级运行脚本

[oracle@oracle122 script]$ cat exec_2_levelsh

ORACLE_HOSTNAME=oracle122; export ORACLE_HOSTNAME

ORACLE_BASE=/u01/app; export ORACLE_BASE

ORACLE_HOME=/u01/app/oracle/product/1120/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/1120/dbhome_1/bin/rman target sys/sys_admin cmdfile /home/oracle/rmanbak/script/db_bak2rman log /home/oracle/rmanbak/script/log/rman_$DATElog append

定时备份星期天为0级全备,星期三为2级备份,星期一,星期二,星期四,星期五,星期六为1级增量备份晚上11点开始备份

[oracle@oracle122 script]$ crontab -l

23 0 /home/oracle/rmanbak/script/exec_0_levelsh

23 1 /home/oracle/rmanbak/script/exec_1_levelsh

23 2 /home/oracle/rmanbak/script/exec_1_levelsh

23 3 /home/oracle/rmanbak/script/exec_2_levelsh

23 4 /home/oracle/rmanbak/script/exec_1_levelsh

23 5 /home/oracle/rmanbak/script/exec_1_levelsh

23 6 /home/oracle/rmanbak/script/exec_1_levelsh

是的,rman在noarchivelog模式下是不能backup的。进行rman备份之前要将数据库至于archivelog模式下。下面两种方法仅供参考:

1在数据库运行期间可以用:alter system archive log start

2重启数据库进入mont状态,然后:alter database archivelog

exp备份和rman备份的区别有:

1、rman是物理备份,expdp是逻辑备份,我觉得做了rman就没必要做expdp备份了。优缺点见下图:

2、exp类似冷备份, 你只能够恢复到某一点。而rman的话,需要开启归档,那样就可以进行无数据丢失的恢复。

详细点说就是:

在不开归档日志的情况下,Oracle数据库的备份只能依赖exp命令(逻辑备份)导出数据文件(注意:不包括日志文件以及控制文件等),导出的所有数据仅仅以一个大文件的方式来存放,但是这种备份容易导致丢失数据。举个例子:如果5号晚上进行了exp数据导出,但是在6号的运行过程中发生宕机,数据丢失,这个时候从5号备份后一直到6号宕机前的数据将全部丢失。所以采用exp方式备份数据还是存在很大风险的。

另一种方式就是使用Oracle自带的备份工具rman。一次rman备份(物理备份)的全过程如下:

因为使用rman备份不会产生数据丢失的情况,所以必须有一个全备份的文件,使用rman需要先进行一次全备份,相当于将当前数据库里面的所有文件以及日志都全盘拷贝一份到备份介质中,然后通过归档日志(实时更新的)的记录看每个进程都对数据库做了哪些修改,只要保留了一份物理备份以及物理备份之后的所有归档日志,就能够将数据库恢复到宕机前一刻的状态,将数据丢失降到最低。

一、归档是redo日志的归档,如果没有对redo进行归档,则数据库redo日志文件极有可能会因为轮替写入而被覆盖,从而造成数据在时间上的不连续。从而造成备份数据时缺失在某个时间上的redo文件,那么恢复时就会有丢失。

二、rman进行恢复时,只有应用了归档文件,才有可能在数据文件的start scn上连续衔接。三、否则rman只能备份mount状态的数据文件。

以上就是关于oracle怎么用rman脚本进行备份全部的内容,包括:oracle怎么用rman脚本进行备份、数据库处于NOARCHIVELOG模式是不是不能用rman备份、exp备份和rman备份的区别是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9431930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存