经过oracle使命方案定时备份数据库51CTO博客 - 凯发娱乐

经过oracle使命方案定时备份数据库51CTO博客

2019年04月26日11时54分27秒 | 作者: 凌旋 | 标签: 备份,如下,创立 | 浏览: 949

之前涉及到oracle定时备份的问题走的都是操作系统层面的使命方案,下面用oracle的task scheduler 定时履行oracle的备份,具体进程见下:


1 备份句子/oracle/bak/fullbk.txt如下:

[oracle@dest ~]$ cat /oracle/bak/fullbk.txt

run{

delete noprompt obsolete;       # 以不提示的方法删去状况为obsolete的备份(留意备份是否obsolete和备份保存战略有关)

crosscheck backup;              # 校验rman资料库中记载的备份是否存在于磁盘或物理设备上,假如不存在,则更改rman资料库中该备份记载为expired状况

delete noprompt expired backup; # 以不提示的方法删去rman资料库中一切标记为expired状况的记载

crosscheck archivelog all;      # 校验rman资料库中一切归档记载,对在物理设备上不存在的归档,在rman资料库中更新其标记为expired

delete noprompt expired archivelog all; #以不提示的方法删去rman资料库中一切标记为expired状况的归档记载

backup incremental level=0  database format /backup/crm/full-%T-%U.bak; #做一个0级其他数据库全备份

backup archivelog all  format /backup/crm/arch-%T-%U.bak; #备份一切归档

backup current controlfile format /backup/crm/ctl-%T-%U.bak; #备份当时操控文件

backup spfile format /backup/crm/spf-%T-%U.bak;              # 备份参数文件  

delete noprompt archivelog all completed before SYSDATE - 7; # 以不提示的方法删去7天之前的一切归档

}

留意 以上脚本仅仅是为测验,该脚本关于从上一次全备份到数据库当时状况丢掉了一部分归档,或许归档损坏的状况,是无法进行彻底康复的。


2 备份脚本/oracle/bak/rman.sh如下:


[oracle@dest ~]$ cat /oracle/bak/rman.sh 

#!/bin/bash

export today=`date +%Y%m%d%H%M`

export ORACLE_HOME=/oracle/app/db1

export ORACLE_SID=CRM

$ORACLE_HOME/bin/rman target sys/DHHZDHHZ log=/oracle/bak/crm.log cmdfile=/oracle/bak/fullbk.txt

mv /oracle/bak/crm.log  "/oracle/bak/crm${today}.log"


此脚本让rman调用/oracle/bak/fullbk.txt文本中的备份句子,记载当时备份进程于日志文件,并更改生成的日志文件名为当时日期。


3 在oracle中创立program

begin

  dbms_scheduler.create_program (

   program_name           =>oracle_bk_program,

   program_action         =>/oracle/bak/rman.sh,

   program_type           =>EXECUTABLE,

   enabled                =>true,

   comments               =>oracle.sh);

end;

查询咱们刚刚创立的program如下

select program_name,program_type,program_action,number_of_arguments,enabled from user_scheduler_programs where program_name=ORACLE_BK_PROGRAM;

PROGRAM_NAME           PROGRAM_TYPE     PROGRAM_ACTION      NUMBER_OF_ARGUMENTS ENABL

-   - -

ORACLE_BK_PROGRAM     EXECUTABLE       /oracle/bak/rman.sh              0        TRUE


留意假如要修正程序,job或许shceduler则可用如下句子

BEGIN

  DBMS_SCHEDULER.SET_ATTRIBUTE (

   name           => ,

   attribute      => ,

   value          => );

END;

/

如下:

BEGIN

  DBMS_SCHEDULER.SET_ATTRIBUTE (

   name           => oracle_bk_schedule,

   attribute      => repeat_interval,

   value          => FREQ=DAILY;BYHOUR=15,16,17);

END;

/



4 创立一个scheduler

begin

dbms_scheduler.create_schedule(

 schedule_name    =>oracle_bk_schedule,

 repeat_interval  =>FREQ=DAILY;BYHOUR=15,16,17,

 comments         =>backup start 3pm);

end;

/

查选咱们刚刚创立的scheduler如下:

SQL> select schedule_name,repeat_interval from user_scheduler_schedules where schedule_name=ORACLE_BK_SCHEDULE;


SCHEDULE_NAME                  REPEAT_INTERVAL

 

ORACLE_BK_SCHEDULE             FREQ=DAILY;BYHOUR=17


5 创立一个job,在job中引证创立的程序和scheduler

留意 After you create a job and enable it, the Scheduler automatically runs the job according to its schedule or when the specified event is detected

begin

dbms_scheduler.create_job(

job_name       =>oracle_bk,

program_name   =>oracle_bk_program,

schedule_name  =>oracle_bk_schedule,

enabled        =>true);

end;

/

查询咱们刚刚创立的job如下:


SQL> select job_name,job_type,job_action, REPEAT_INTERVAL,enabled,state from user_scheduler_jobs where job_name=ORACLE_BK;


JOB_NAME         JOB_TYPE      JOB_ACTION     REPEAT_INTERVAL  ENABL STATE

 - - - - -

ORACLE_BK                                                      TRUE  SCHEDULED                                                                                                           


SQL> 



6 查询创立job的运行状况如下:

select log_id,log_date,status,additional_info from user_scheduler_job_run_details where job_name=ORACLE_BK;


    LOG_ID LOG_DATE                             STATUS               ADDITIONAL_INFO

 -  

       511 22-JAN-14 03.54.43.650305 PM +08:00 SUCCEEDED

       514 22-JAN-14 03.58.51.953108 PM +08:00 SUCCEEDED

       519 22-JAN-14 04.58.10.062466 PM +08:00 SUCCEEDED

       522 22-JAN-14 05.57.50.288474 PM +08:00 SUCCEEDED


7 查询生成的备份日志文件记载如下:

[oracle@dest bak]$ ls -lt

total 304

-rw-rr 1 oracle oinstall  9680 Jan 22 17:57 crm201401221756.log

-rw-rr 1 oracle oinstall 10595 Jan 22 16:58 crm201401221656.log

-rw-rr 1 oracle oinstall 13155 Jan 22 15:58 crm201401221556.log

-rw-rr 1 oracle oinstall 12681 Jan 22 15:54 crm201401221551.log



留意 1 删去program和scheduler前应先删去调用program和schedule的job

     2 之前rman.sh脚本短少#!/bin/bash 以及rman未输入全途径导致使命方案不能履行提示脚本不能履行

     3 关于oracle scheduler的具体介绍请参阅官方文档



版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章