基于Linux下 Oracle 备份策略(RMAN)

系统 1869 0

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

-- 基于 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 10 g

        标数       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

       

三、 总结

    1 .backup controlfile in each scripts tail ( 在脚本的尾部 备份 控制文件 )

    2 .Delete obsolete backupset in each scripts threshold ( 备份 )

    3 .Switch logfile before backup database ; ( 库备份 以前切 志, 备份联 机重做日志 )

    4 .Chmod u+x*.sh

 

    本文根据德哥 RMAN:Oracle 一周 备份 方案的 设计 整理完成

四、 快捷参考

性能 请参

    Oracle 硬解析 与软 解析

    共享池的 与优 (Shared pool Tuning)

    Buffer cache 与优 ( 一)

    Oracle (caching table) 的使用

 

ORACLE 体系 结构请参

    Oracle 表空 间与数 据文件

    Oracle 文件

    Oracle 参数 文件

    Oracle 机重做日志文件 (ONLINE LOG FILE)

     Oracle 控制文件(CONTROLFILE)

    Oracle 归档 日志

    Oracle (ROLLBACK) 和撤 (UNDO)

    Oracle 库实 启动关闭过

    Oracle 10g SGA 的自 化管理

    Oracle 例和 Oracle (Oracle 体系 结构 )

 

关闪 回特性 请参

    Oracle 回特性 (FLASHBACK DATABASE)

    Oracle 回特性 (FLASHBACK DROP & RECYCLEBIN)

    Oracle 回特性 (Flashback Query 、Flashback Table)

    Oracle 回特性 (Flashback Version 、Flashback Transaction)

 

基于用 管理的 备份 备份 请参

    Oracle 备份

    Oracle 热备份

    Oracle 备份 复概

    Oracle 例恢

    Oracle 基于用 管理恢 ( 详细 描述了介 及其 )

    SYSTEM 表空 管理及 备份

    SYSAUX 表空 管理及恢

 

RMAN 备份 复与 管理 请参

    RMAN 述及其体系 结构

    RMAN 配置、 管理

    RMAN 备份详

    RMAN

    RMAN catalog 建和使用

    基于catalog RMAN 脚本

基于catalog 的RMAN 备份与

使用 RMAN 迁移文件系统数据库到 ASM

    RMAN 备份 困惑 ( 使用plus archivelog )

 

ORACLE 故障 请参

    ORA-32004 错误处

    ORA-01658 错误

    CRS-0215 错误处

    ORA-00119 ,ORA-00132 错误处

    又一例SPFILE 错误导 无法 启动

    对参数 FAST_START_MTTR_TARGET = 0 解及

    SPFILE 错误导 无法 启动 (ORA-01565)

 

ASM 请参

    ASM 例及 ASM

    ASM 、目 的管理

    使用 ASMCMD 工具管理ASM 及文件

 

SQL/PLSQL 请参

    SQLPlus 常用命令

    替代 SQL*Plus

    使用Uniread 实现 SQLplus 功能

    SQL -->SELECT 查询

    SQL --> NEW_VALUE 的使用

    SQL --> 集合 (UNION UNION ALL)

    SQL --> 常用函

    SQL --> 视图 (CREATE VIEW)

    SQL --> 建和管理表

    SQL --> 多表 查询

    SQL --> 过滤 和排序

    SQL --> 查询

    SQL --> 组与

    SQL --> 次化 查询 (START BY ... CONNECT BY PRIOR)

    SQL --> ROLLUP CUBE 算符 实现数 汇总

    PL/SQL -->

    PL/SQL --> (Exception)

    PL/SQL --> 言基

    PL/SQL --> 流程控制

    PL/SQL --> PL/SQL 记录

    PL/SQL --> 包的 管理

    PL/SQL --> 式游 (SQL%FOUND)

    PL/SQL --> 包重 、初始化

    PL/SQL --> DBMS_DDL 包的使用

    PL/SQL --> DML 触发

    PL/SQL --> INSTEAD OF 触发

    PL/SQL --> 储过

    PL/SQL -->

    PL/SQL --> 动态 SQL

    PL/SQL --> 动态 SQL 的常 见错误

 

ORACLE 特性

    Oracle 常用目 录结构 (10g)

    使用OEM,SQL*Plus,iSQL*Plus 管理Oracle

    日志 记录 模式 (LOGGING 、FORCE LOGGING 、NOLOGGING)

    表段、索引段上的LOGGING NOLOGGING

    Oralce OMF 功能

    Oracle 限、系 统权  

    Oracle 角色、配置文件

    Oracle

    Oracle 外部表

    使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)

    簇表及簇表管理(Index clustered tables)

    EXPDP 出工具的使用

    IMPDP 入工具的使用

    Oracle

    SQL*Loader 使用方法

    用用 户进 程跟踪

    配置非默 端口的 动态

    配置ORACLE 接到

    system sys ,sysoper sysdba 区别

    ORACLE_SID 、DB_NAME 、INSTANCE_NAME 、DB_DOMIAN 、GLOBAL_NAME

    Oracle 丁全集 (Oracle 9i 10g 11g Path)

    Oracle 10.2.0.1 10.2.0.4

Oracle kill session

手动删除oracle 数据库

基于Linux下 Oracle 备份策略(RMAN)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论