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

查询字符集

SQL> select * from nls_database_parameters;

NLS_CHARACTERSET
AL32UTF8

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

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

[[email protected] 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级运行脚本

[[email protected] 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级备份(增量)

[[email protected] 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级运行脚本

[[email protected] 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级追加到现在的备份)

[[email protected] 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 obsolete;

2级运行脚本

[[email protected] script]$ cat exec_2_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_bak2.rman log /home/oracle/rmanbak/script/log/rman_$DATE.log append

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

[[email protected] script]$ crontab -l
* 23 * *  0 /home/oracle/rmanbak/script/exec_0_level.sh
* 23 * *  1 /home/oracle/rmanbak/script/exec_1_level.sh
* 23 * *  2 /home/oracle/rmanbak/script/exec_1_level.sh
* 23 * *  3 /home/oracle/rmanbak/script/exec_2_level.sh
* 23 * *  4 /home/oracle/rmanbak/script/exec_1_level.sh
* 23 * *  5 /home/oracle/rmanbak/script/exec_1_level.sh
* 23 * *  6 /home/oracle/rmanbak/script/exec_1_level.sh

时间: 2024-10-09 07:05:01

oracle数据库中rman备份脚本非常实用的相关文章

Windows环境下Oracle数据库的自动备份脚本

批处理文件(.bat) @echo off echo ================================================ echo  Windows环境下Oracle数据库的自动备份脚本 echo  1. 使用当前日期命名备份文件. echo  2. 自动删除7天前的备份. echo ================================================ ::以“YYYYMMDD”格式取出当前时间. set BACKUPDATE=%date

Oracle数据库从RMAN备份集片段还原指定单个归档日志进行日志挖掘分析

起因:业务已知在之前某个时间点范围内发生了可疑异常操作,希望通过日志挖掘来审查SQL动作 现状:生产库在线归档已备份后删除,RMAN归档备份已经刷出超期的备份集文件 需求:通过RMAN还原归档到线上以进行日志挖掘 定位归档日志涉及范围: select * from v$archived_log l where to_date('2018-11-12 16:18:51','yyyy-mm-dd hh24:mi:ss') between L.FIRST_TIME and L.NEXT_TIME; 假

Oracle 11g R2 RAC RMAN备份脚本示例

一.将RAC切换成归档模式 1. 修改数据库的归档模式,通常在安装RAC的时候都会配置归档并且使用闪回区,已经配置过归档下面的方式可以略过. SQL> alter system set cluster_database=false scope=spfile sid='*'; 2. 关闭所有实例(两边都要shutdown) SQL> shutdown immediate 或直接关闭所有实例   $ srvctl stop database -d orcl 3. 在任意一个实例上将数据库启动到mo

Java代码实现向Oracle数据库中导入已备份的数据库文件

今天将很早就实现的一个Oracle数据库备份功能粘贴出来,这个功能是在大学做阶段设计时写的: import java.io.IOException; /** * Java代码实现向Oracle数据库中导入已备份的数据库文件 * * @author:Gaohuanjie */ public class OracleImportDatabase { /** * 向Oracle数据库中导入已备份的数据库文件 * * @author:Gaohuanjie * @param userName 进入数据库所

搭建ORACLE DataGuard(使用RMAN备份)

搭建ORACLE DataGuard(使用RMAN备份) 操作系统:windows 2008 数据库:11.1.0.6 一.信息收集 1.配置信息收集 说明  主机名   IP地址      db_name   sid   DB_UNIQUE_NAME  Service_name 主库   dg1  192.168.0.11     orcl    orcl    orcldg1       orcldg1 备库   dg2  192.168.0.22     orcl    orcl    o

rman备份脚本

在数据库中启用块跟踪 alter database enable block change tracking: alter database enable block change tracking using file '/u01/app/oracle/track/blockchange.trc': 取消块跟踪 alter database disable block change tracking 查看是否启动块跟踪 SQL> select * from v$block_change_tra

如何处理Oracle数据库中的坏块问题

本文主要介绍如何去处理在Oracle数据库中出现坏块的问题,对于坏块产生在不同的对象上,处理的方法会有所不同,本文将大致对这些方法做一些介绍.因为数据库运行时间长了,由于硬件设备的老化,出现坏块的几率会越来越大,因此,做为一个DBA,怎么去解决数据库出现的坏块问题就成了一个重要的议题了. 一:什么是数据库的坏块   首先我们来大概看一下数据库块的格式和结构 数据库的数据块有固定的格式和结构,分三层:cache layer,transaction layer,data layer.在我们对数据块进

监控Oracle数据库的常用shell脚本-转

8个DBA最常用的监控Oracle数据库的常用shell脚本--转 分类: Linux 一.8个重要的脚本来监控Oracle数据库: 1.检查实例的可用性 2.检查监听器的可用性 3.检查alert日志文件中的错误信息 4.在存放log文件的地方满以前清空旧的log文件 5.分析table和index以获得更好的性能 6.检查表空间的使用情况 7.找出无效的对象 8.监控用户和事务 二.DBA需要的Unix基本知识 基本的UNIX命令,以下是一些常用的Unix命令: ps--显示进程 grep-

oracle数据库中exp/imp之初次使用

最近使用oracle9i时,遇到了数据库备份和恢复的问题,很多时候与exp和imp的命令使用有关.针对遇到的问题,简单的总结. 问题的背景,就是需要对某张表导入和导出.数据库database1,dateabase2在数据库中涉及的用户主要是 user1,user2,备份的对象主要是表table1. 对于exp和Imp命令的内容网上较多的解说,这里主要解决具体的问题,使用的只是常用的命令项. 1.从database2中导出表 table1 exp userid=system/[email prot