当前位置:  数据库>oracle

通过Oracle任务计划定期备份数据库

    来源: 互联网  发布时间:2017-05-31

    本文导语: 之前涉及到Oracle定期备份的问题走的都是操作系统层面的任务计划,下面用oracle的task scheduler 定期执行oracle的备份,详细步骤见下:   1 备份语句/oracle/bak/fullbk.txt如下: [oracle@dest ~]$ cat /oracle/bak/fullbk.txt run{ delete noprompt obsolete; ...

之前涉及到Oracle定期备份的问题走的都是操作系统层面的任务计划,下面用oracle的task scheduler 定期执行oracle的备份,详细步骤见下:

 

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

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

run{

delete noprompt obsolete;

crosscheck backup;

delete noprompt expired backup;

crosscheck archivelog all;

delete noprompt expired archivelog all;

backup incremental level=0 database format '/backup/crm/full-%T-%U.bak';

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';

}

 

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"

 

 

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

 

 

 

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

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-r--r-- 1 oracle oinstall 9680 Jan 22 17:57 crm201401221756.log

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

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

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



相关阅读:

Oracle datapump expdp/impdp 导入导出数据库时hang住


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 现在java开发中流行通过什么方式实现对数据库操作?就好像Visual Stadio通过ADO访问数据库。
  • java中的数据库结果集可以被赋值吗,可以通过结果集的方法来更新数据库字段吗?
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • 怎样通过表单将输入的日期取出,并保存到数据库中
  • 大家有多少web application是直接连接数据库的?又有多少是通过weblogic或websphere之类连接的?
  • 不想通过jdbc-odbc桥,连接数据库,该怎么做?
  • 通过jdbc-odbc bridge连结数据库问题
  • 如何通过jdbc将文件放到数据库里?
  • 怎样通过Ip地址连接Sql server 数据库?
  • 通过JDBC连接数据库,执行抄作后,关闭了连接,数据服务器端的进程还在,怎麽处理?
  • Window客户端通过ADO是否能够连接和操作Unix平台下的Oracle数据库?
  • jsp怎么通过jdbc连接db2数据库?
  • 通过JDBC如何与SYBASE数据库的连接?
  • Linux/UNIX下,C++程序通过那些步骤访问Oracle或者Sybase SQL数据库?
  • 通过dbi使用perl连接mysql数据库的方法
  • 通过JDBC存取数据库,该怎样得到结果集的总数?
  • 怎么样才能不通过jdbc-odbc直接连到数据库,以sql7为例。
  • 请问applet如何通过javabean访问数据库?给个例子,谢谢
  • 为什么我通过jdbc-odbc桥连接到access数据库的时候resultset只能向后移不能前移或作其它移动???
  • 请有经验的朋友给个思路,关于通过ejb修改数据库记录。100分送上!bow
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • php通过socket_bind()设置IP地址代码示例
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 通过javascript库JQuery实现页面跳转功能代码
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • linux下通过crond实现自动执行程序
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • 通过docker commit命令保存对docker容器的修改


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,