基于Linux下catalog方式的 Oracle 备份策略(RMAN)
--**********************************
-- 基于Linux下 Oracle 备份策略(RMAN)
--**********************************
对于 Oracle 数据库的备份与恢复,尽管存在热备,冷备以及逻辑备份之外,使用最多的莫过于使用RMAN进行备份与恢复。而制定RMAN备份策
略则是基于数据库丢失的容忍程度,即恢复策略来制定。在下面的备份策略中,给出的是一个通用的备份策略。在该备份策略中,使用了catalog方
式来保持备份脚本以及备份信息。在实际环境中应根据具体的情况对此进行相应的调整。
一、步骤
1.确认备份可用空间以及备份路径,根据需要创建相应文件夹
1.对于账户的连接创建一个connect.rcv,该文件包含连接到target 和catalog信息
2.创建通用的脚本用于删除过旧的备份和备份控制文件以及备份归档日志
global_del_obso --删除过旧的备份
global_bkctl --备份控制文件
global_arch --备份归档日志
3.创建0,1,2级增量备份
这三个脚本中均包含第2步的3个脚本,先调用global_del,然后做增量备份,最后备份归档日志global_arch和控制文件global_bkctl
4.创建inc0.rcv,inc1.rcv,inc2.rcv
文件内容包含调用 @@/<dir>/connect.rcv以及run{execute global script scriptname;}exit;
5.编辑第4步的三个文件分别为inc0.sh,inc1.sh,inc2.sh
nohup $ORACLE_HOME/bin/rman cmdfile=/u03/bk/scripts/inc1.rcv log=/u03/bk/scripts/inc0.log append &
6.使用crontab制定备份计划
二、具体实现
演示环境:
系统: CentOS release 4.6 (Final) + Oracle 10g
目标数据库: austin
恢复目录数据库: david
备份目录: /u03/bk
连接脚本所在路径:/u03/bk/scripts
注:监听需要配置好且已启动
1.连接脚本
connect.rcv文件内容
connect catalog rman/rman@david;
connect target sys/oracle@austin;
catalog的通用脚本
rman cmdfile=/u03/bk/scripts/connect.rcv --(在rman中使用外部脚本)
rman catalog rman/rman@david target sys/oracle@austin --使用该脚本连接后创建通用脚本
2.建立通用脚本
--删除不必要的备份
RMAN> create global script global_del_obso comment 'A script for obsolete backup and delete it' {
2> crosscheck archivelog all;
3> delete noprompt expired archivelog all;
4> allocate channel ch1 device type disk;
5> delete noprompt obsolete recovery window of 7 days;
6> release channel ch1;
7> }
--备份控制文件脚本
RMAN> create global script global_bkctl comment 'A script for backup control file'{
2> allocate channel ch1 device type disk;
3> backup as compressed backupset
4> current controlfile reuse
5> format='/u03/bk/backupctl.ctl'
6> tag='bkctl';
7> release channel ch1;
8> }
--备份归档日志脚本
RMAN> create global script global_arch comment "backup archivelog and then delete it" {
2> allocate channel ch1 device type disk;
3> allocate channel ch2 device type disk;
4> sql "alter system archive log current"; --归档当前的联机日志
5> set limit channel ch1 readrate=10240; --(读取速率10M)
6> set limit channel ch1 kbytes=4096000; --(备份片的大小)
7> backup as compressed backupset
8> format='/u03/bk/arch_%d_%U'
9> tag='bkarch'
10> archivelog all delete input;
11> release channel ch1;
12> release channel ch2;
13> }
--使用list查看所有的已建立的全局脚本
list global script names; --(列出所有的脚本)
delete globals script script_name; --(删除脚本)
RMAN> list global script names;
List of Stored Scripts in Recovery Catalog
Global Scripts
Script Name
Description
-----------------------------------------------------------------------
global_arch
backup archivelog and then delete it
global_bkctl
A script for backup control file
global_del_obso
A script for obsolete backup and delete it
3.创建0,1,2级增量备份脚本(注:每个脚本备份前会执行删除过旧的备份,脚本尾部会调用另外两个脚本来备份归档日志及控制文件)
--创建0级增量备份
RMAN> create global script global_inc0 comment "backup database as incrmental level 0"{
2> execute global script global_del_obso;
3> allocate channel ch1 device type disk;
4> allocate channel ch2 device type disk;
5> set limit channel ch1 readrate=10240;
6> set limit channel ch1 kbytes=4096000;
7> set limit channel ch2 readrate=10240;
8> set limit channel ch2 kbytes=4096000;
9> backup as compressed backupset
10> incremental level 0 database
11> format='/u03/bk/inc0_%d_%U'
12> tag='inc0';
13> release channel ch1;
14> release channel ch2;
15> execute global script global_arch;
16> execute global script global_bkctl;
17> }
--创建1级增量备份
RMAN> create global script global_inc1 comment "backup database as incrmental level 1"{
2> execute global script global_del_obso;
3> allocate channel ch1 device type disk;
4> allocate channel ch2 device type disk;
5> set limit channel ch1 readrate=10240;
6> set limit channel ch1 kbytes=4096000;
7> set limit channel ch2 readrate=10240;
8> set limit channel ch2 kbytes=4096000;
9> backup as compressed backupset
10> incremental level 1 database
11> format='/u03/bk/inc1_%d_%U'
12> tag='inc1';
13> release channel ch1;
14> release channel ch2;
15> execute global script global_arch;
16> execute global script global_bkctl;
17> }
--创建2级增量备份
RMAN> create global script global_inc2 comment "backup database as incrmental level 2"{
2> execute global script global_del_obso;
3> allocate channel ch1 device type disk;
4> allocate channel ch2 device type disk;
5> set limit channel ch1 readrate=10240;
6> set limit channel ch1 kbytes=4096000;
7> set limit channel ch2 readrate=10240;
8> set limit channel ch2 kbytes=4096000;
9> backup as compressed backupset
10> incremental level 2 database
11> format='/u03/bk/inc2_%d_%U'
12> tag='inc2';
13> release channel ch1;
14> release channel ch2;
15> execute global script global_arch;
16> execute global script global_bkctl;
17> }
--在rman中检验在rman中写的脚本global_inc0、global_inc1、global_inc2,因为RMAN不会自动检查,下面的语句用来执行脚本(检验)
RMAN> run{
2> execute global script global_inc0;
3> execute global script global_inc1;
4> execute global script global_inc2;
5> }
--查看备份完成情况
list backupset summary;
4.建立shell脚本,让linux自动执行脚本
a. vi inc0.rcv,inc1.rcv ,inc2.rcv --注意不同的文件执行不同的备份脚本
@@/u03/bk/scripts/connect.rcv --(rman下的脚本去调用其他脚本用@@符号)(调用脚本不需要分号)
run{
execute global script gloal_inc0;
}
exit;
b. 编辑shell文件
vi inc0.sh
nohup $ORACLE_HOME/bin/rman cmdfile=/u03/bk/scripts/inc0.rcv log=/u03/bk/scripts/inc0.log append &
vi inc1.sh
nohup $ORACLE_HOME/bin/rman cmdfile=/u03/bk/scripts/inc1.rcv log=/u03/bk/scripts/inc0.log append &
vi inc2.sh
nohup $ORACLE_HOME/bin/rman cmdfile=/u03/bk/scripts/inc2.rcv log=/u03/bk/scripts/inc0.log append &
--注意:nohup与&表示将脚本放入后台执行
c.使用crontab建立一个备份计划
crontab -e
#min hour date mon day(星期) command
30 1 * * 0 /u03/bk/scripts/inc0.sh
30 1 * * 1 /u03/bk/scripts/inc2.sh
30 1 * * 2 /u03/bk/scripts/inc2.sh
30 1 * * 3 /u03/bk/scripts/inc2.sh
30 1 * * 4 /u03/bk/scripts/inc1.sh
30 1 * * 5 /u03/bk/scripts/inc2.sh
30 1 * * 6 /u03/bk/scripts/inc2.sh
d.重启crontab服务(如果没有启动)
# /sbin/service crond status --用于检查crontab 服务状态
# /sbin/service crond stop //关闭服务
# /sbin/service crond restart //重启服务
# /sbin/service crond reload //重新载入配置
使crontab服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
e.从上面的备份策略来看,即
周日执行0级增量备份,相当于全备
周一,周二,周三执行2级增量备份
周四执行1级增量备份
周五,周六执行2级增量备份
f.编辑好的shell 脚本测试
chmod 755 *.sh --给shell脚本加权限
测试脚本 例如./inc0.sh
基于Linux下catalog方式的 Oracle 备份策略(RMAN)的更多相关文章
- LINUX学习笔记——LINUX下EXP命令全库备份数据库文件
LINUX下EXP命令全库备份数据库文件 1)建立备份目录,目录操作权限授权给Oracle用户 mkdir /backup --创建backup文件夹 cd / --进入cd语句 ls -l ...
- 基于Linux下Iptables限制BT下载的研究
基于Linux下Iptables限制BT下载的研究 摘要: 当前BT下载技术和软件飞速发展,给人们网上冲浪获取资源带来了极大的便利, 但同时BT占用大量的网络带宽等资源也给网络和网络管理员 ...
- 基于linux下的NIST数字测试包安装过程
基于linux下的NIST数字测试包安装过程 1. 首先解决windows文件不能粘贴到Ubuntu的问题 选择利用VMware Tools进行解决 打开虚拟机VMware Workstation,启 ...
- Linux下SVN的三种备份方式
原文链接:http://blog.csdn.net/windone0109/article/details/4040772 (本文例子基于FreeBSD/Linux实现,windows环境请自己做出相 ...
- Linux下对文件进行加密备份的操作记录
由于公司之前在阿里云上购买了一些机器,后续IDC建设好后,又将线上业务从阿里云上迁移到IDC机器上了,为了不浪费阿里云上的这几台机器资源,打算将这些机器做成IP SAN共享存储,然后作为IDC数据的一 ...
- Linux下php5.3编译oracle客户端
因项目需要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路. 1.下载Oracle客户端程序包,其中包含OCI.OCCI和JDBC-OCI等相关文件. 1.1下载文 ...
- Linux下通过JDBC连接Oracle,SqlServer和PostgreSQL
今天正好需要统计三个网站栏目信息更新情况,而这三个网站的后台采用了不同的数据库管理系统.初步想法是通过建立一个小的Tomcat webapp,进而通过JDBC访问这三个后台数据库,并根据返回的数据生成 ...
- linux下rsync和tar增量备份梳理
前面总结过一篇全量备份/增量备份/差异备份说明,下面介绍下linux下rsync和tar两种增量备份的操作记录: 1)rsync备份 rsync由于本身的特性,在第一次rsync备份后,以后每次都只是 ...
- Linux下的Mysql的主从备份
MySQL复制概述 MySQL数据库支持同步复制.单向.异步复制,在复制的过程中一个服务器充当主服务,而一个或多个服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循 ...
随机推荐
- Mysql8 安装过程及安装过程系列问题记录
前言: 今天,想装个高版本一点的mysql试试,于是下载了一个mysql8的zip版本. 地址:https://dev.mysql.com/downloads/file/?id=484900 没想到安 ...
- 关于微信企业付款到零钱X509Certificate2读取证书信息,发布到服务器访问不到的解决方案
前言: 最近做了一个通过调用微信企业付款到用户零钱的功能,真的挺奇怪的,在我本地调试的时候都没有问题,但是当我发布到服务上的时候却一直无法读取到我的证书信息.读取的代码如下,使用的是微信官方文档提供 ...
- Java~命名规范
下面总结以点java命名规范 虽然感觉这些规范比起C#来说有点怪,但还是应该尊重它的命名! 命名规范 项目名全部小写 包名全部小写 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写. ...
- 基于python脚本,实现Unity全平台的自动打包
转载请标明出处:http://www.cnblogs.com/zblade/ 0. 概述 本文主要针对项目中自动打包过程进行调研,实现用python脚本来打出win/android/ios三个平台下的 ...
- ASP.NET Core开发者指南
ASP.NET Core开发者指南 2019年ASP.NET Core开发者指南: 你可以在下面找到一张图,该图展示了你可以选取的路径及你想学习的库,从而成为一名 ASP.NET Core 开发者.“ ...
- RDIFramework.NET V3.3 Web框架主界面新增横向菜单功能
功能描述 响应重多客户的要求与心声,RDIFramework.NET框架Web版本主界面新增横向菜单功能.横向菜单更加直观,用户可操作与展示的空间更多,符合实际应用要求. 一.效果展示 最终界面效果: ...
- .NET知识体系(转载)
这篇文章为新手指明的学习方向: https://www.cnblogs.com/mcgrady/p/4725038.html 先生存后发展,先学会选择和使用知识和工具来做东西,然后在研究怎么做的再好一 ...
- thinkphp5路由心得
路由的作用:1. 简化URL地址,方便大家记忆2. 有利于搜索引擎的优化,比如可以被百度的爬虫抓取到 优化URl1. 前后端分离修改入口文件,在public下新建admin.php文件,将下面的代码添 ...
- ES6基础
一.新增命令let/const ①:let命令 1.let命令用来声明变量,它的用法类似于var,但是所声明的变量只在let命令所在的代码块内生效. 所以在for循环中,就很适合使用let命令. 上面 ...
- Dotnetcore 开发速记
1.System.InvalidOperationException:"Internal connection fatal error." 全球固定模式,坑爹 https://gi ...