--**********************************

--基於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

文件內容包含調用 @@/

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信息指令,基於Linux下catalog方式的 Oracle 備份策略(RMAN)相关推荐

  1. ubuntu下复制文件到另一个文件夹下权限不够问题解决方法

    ubuntu下复制文件到另一个文件夹下权限不够问题解决方法 在需要被复制的文件夹下打开终端: sudo nautilus 然后选择到需要复制到的文件夹目录下,右击粘贴.

  2. mt7601的linux驱动下载,mt7601u,基於 Linux mac80211 MT7601U USB bgn無線dongle驅動程序,下載mt7601u的源碼_GitHub_開發99...

    這是一款用於 MT7601U USB dongle的Linux驅動程序. 它是基於供應商gpl驅動程序從頭開始編寫的. 供應商驅動程序不同,這個驅動程序使用現代的Linux WiFi基礎設施,並且應該 ...

  3. 在linux里复制文件命令_如何在Linux上使用“安装”命令复制文件

    在linux里复制文件命令 Fatmawati Achmad Zaenuri/Shutterstock.com Fatmawati Achmad Zaenuri / Shutterstock.com ...

  4. linux中检测用户信息的命令是,Linux中系统状态检测命令

    1.ifconfig用于获取网卡配置与网络状态等信息,格式为:ifconfig [网络设备] [参数] 2.uname命令用于查看系统内核版本等信息,格式为:uname [-a] 查看系统的内核名称. ...

  5. linux中php是什么指令,什么是linux命令

    linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命 ...

  6. Linux查看文件详细信息指令stat

    引入 我们知道在终端输入ll,就可以显示当前目录里的文件详细信息,或者使用ls加上另外的参数就可以显示其他的一些有用的信息,如下图所示.但是,另外还有一个指令可以显示更多有用的信息.那就是指令stat ...

  7. 關於基於WinCE下的聲音系統調試的一些經驗總結之驱动程式部分(二)

    / //Author:Mercury Xu //Date:2008-12-08 //Descrption:聲音作為WinCE系統中一個比較基礎的配置大家已經都不會陌生. //           本文 ...

  8. mysql下 复制文件命令行_命令行下Mysql数据库复制、备份

    命令行下Mysql数据库复制.备份 在Win10下如果安装了Mysql,那么我们可以把远程Mysql服务器上的数据库备份到本地,前提是远程Mysql服务器允许远程接入. 假设远程Mysql服务器的访问 ...

  9. linux查看内核打印信息,通过sysrq打印linux内核信息

    1. SysRq的启用与关闭 要想启用SysRq, 需要在配置内核时设置Magic SysRq key (CONFIG_MAGIC_SYSRQ)为Y. 对于支持SysRq的内核, /proc/sys/ ...

最新文章

  1. Android定制:修改开机启动画面
  2. Enterprise Library 2.0 Hands On Lab 翻译(1):数据访问程序块(一)
  3. fedora21 下解决IDEA中文无法输入、显示问题
  4. 用idea添加一个模块
  5. 什么是交互设计?交互设计是用来干什么的?
  6. ORA-01033 的解决
  7. building xxx gradle project info的解决办法
  8. Loadrunner -27225错误
  9. 可靠消息服务在支付领域的应用
  10. webpack 图像压缩_基于webpack的图片压缩最佳方案
  11. 大菠萝已经完全变味了
  12. 条码打印机无法正常打印该如何解决
  13. 区块链行业薪酬待遇,与事实相符吗?
  14. python股票策略_用Python编程彼得林奇PEG价值选股策略
  15. FPGA在深度学习应用中或将取代GPU
  16. JDBC简单连接查询MySQL数据库
  17. 企业数据中心“云化”转型解决方案
  18. win7和linux下的文件共享
  19. 计算机控制 根轨迹,五计算机实时控制系统的设计根轨迹法PPT课件
  20. 带符号整数中负数采用什么编码_在个人计算机中,带符号整数中负数是采用________编码方法表示的。...

热门文章

  1. c语言mpi矩阵乘法,【MPI并行程序】矩阵乘法
  2. 超级计算机能算数学题吗,圆周率到底能不能算尽?人类拿超级计算机算了一下,结果不敢相信...
  3. 线上阿里云mysql慢_MySQL · 案例分析 · RDS MySQL线上实例insert慢常见原因分析-阿里云开发者社区...
  4. 【Spring笔记】依赖注入
  5. 【离散数学笔记】计数原理:解决计数问题的基本方法
  6. 3d怎么把两个面拼接在一起_视频拼接怎么做?如何将多段视频拼接在一起?
  7. mysql连接外部数据库名字错误_数据库连接出错! 可能出错原因:数据库位置或名称不对、数据库损坏!...
  8. Java执行jar总结
  9. 【ZJCPC2019 第16届 浙江省赛】The 16th Zhejiang Provincial Collegiate Programming Contest(GFHIJ 5题)
  10. 【2021牛客暑期多校训练营4】Average (二分答案,区间/子数组最大平均值,)