定时任务应用场景:

某一个生产系统上面,临时表不断变多,占了不少磁盘空间。由于这套软件是直接买的,不方便修改源代码。所以考虑使用Oracle定时任务直接从数据库层删除临时表。

定时任务业务:

首先写好一个存储过程。读当前用户所有以tempXXXXX开头的临时表,然后依次删除所有的临时表。然后在建立Oracle Job每天晚上定时调用这个存储过程。

存储过程代码:

create or replace PROCEDURE KDDROPTEMPTABLE AS

BEGIN

declare

cursor c_usertable is

select table_name from user_tables t where t.TABLE_NAME like 'TEMPTABLE0000%' and status = 'VALID';

my_tablename user_tables.table_name%TYPE;

v_sql varchar2(200);

v_count integer := 0;

begin

--DBMS_OUTPUT.ENABLE(buffer_size => null);

open c_usertable;

loop

--提取一行数据到c_usertable

fetch c_usertable into my_tablename;

exit when c_usertable%notfound;

v_sql := 'drop table '||my_tablename;

execute immediate v_sql;

v_count := v_count+1;

-- dbms_output.put_line(v_sql);

end loop;

--关闭游标

close c_usertable;

dbms_output.put_line('总工删除的临时表数量:'||v_count);

end;

END KDDROPTEMPTABLE;

Oracle定时任务建立步骤

Oracle有两种语法可以建定时任务,Oracle10g以后就开始推荐使用下面这种。老的方式本文不涉及。

如果你有Oracle SQL developer可以用界面新建

以下是通过SQL直接建Job:

BEGIN

DBMS_SCHEDULER.CREATE_JOB (

job_name => '"ZSNC57"."autoDeleteTemp"',

job_type => 'STORED_PROCEDURE',

job_action => 'ZSNC57.KDDROPTEMPTABLE',

number_of_arguments => 0,

start_date => TO_TIMESTAMP_TZ('2018-09-12 14:41:09.000000000 ASIA/SHANGHAI','YYYY-MM-DD HH24:MI:SS.FF TZR'),

repeat_interval => 'FREQ=DAILY;BYHOUR=14;BYMINUTE=45;BYSECOND=0',

end_date => NULL,

enabled => FALSE,

auto_drop => TRUE,

comments => '自动删除临时表');

DBMS_SCHEDULER.SET_ATTRIBUTE(

name => '"ZSNC57"."autoDeleteTemp"',

attribute => 'restartable', value => TRUE);

DBMS_SCHEDULER.SET_ATTRIBUTE(

name => '"ZSNC57"."autoDeleteTemp"',

attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_FULL);

DBMS_SCHEDULER.enable(

name => '"ZSNC57"."autoDeleteTemp"');

END;

直接手动运行定时任务的方式(目前还没研究出来为啥一直报错):

begin

dbms_scheduler.run_job('autoDeleteTemp',TRUE); -- true代表同步执行

end;

注:如果直接执行存储过程可以执行,但定时任务却始终执行不了,执行以下步骤:

select * from dba_sys_privs where grantee='oracle_user_name';

查询一下当前用户被直接赋予的权限有哪些.如果没有的话执行下列赋权语句.

grant create job to oracle_user_name;

grant MANAGE SCHEDULER  to oracle_user_name;

show parameter job;  --显示当前job参数,如果job_queue_processes = 0则执行下面语句修改.

alter system set job_queue_processes = 1;

如果你的Job正常运行了,通过如下几张表可以查询到运行记录:

--Oracle定时任务

-- job信息

select * from user_scheduler_jobs;

--  job日志

select * from User_Scheduler_Job_Log;

-- job运行日志

select * from user_scheduler_job_run_details;

--正在运行的job

select * from user_scheduler_running_jobs;

在Oracle SQL developer中也有集成界面

oracle job定时报错,Oracle定时任务Job笔记相关推荐

  1. oracle job定时报错,Oracle Job定时任务的使用详解

    Oracle中的job能为你做的就是在你规定的时间格式里执行存储过程,定时执行一个任务 . 下面是一个小案例,定时每15分钟向一张表插入一条数据 一.步骤1 1. 创建一张测试表 -- Create ...

  2. Excel 通过plsql 向oracle导入数据时报错:variant conversion error for variable:V8

    Excel 通过plsql 向oracle导入数据时报错:variant conversion error for variable : V8 原因-:Excel中的某列字段类型与数据库表中字段数据类 ...

  3. oracle安装时EM,EM 安装时报错 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...

    一下是日志文件,求帮助哦 2013-12-30 14:38:18 oracle.sysman.emcp.EMConfig perform 信息: 正在将此操作记录到 D:\oracle\product ...

  4. oracle插入时间报错,Oracle 插入时间时 报错:ORA-01861: 文字与格式字符串不匹配 的解决办法...

    一.写sql的方式插入到Oracle中 往oracle中插入时间  '2007-12-28 10:07:24' 如果直接按照字符串方式,或者,直接使用to_date('2007-12-28 10:07 ...

  5. oracle em配置报错,oracle em 启动报错OC4J Configuration issue

    oracle em 启动报错OC4J Configuration issue 今天在测试服务器上,启动emctl start dbconsole的时候,报如下错误: [oracle@test ~]$ ...

  6. oracle进入rman报错,Oracle 11g单实例RMAN恢复到Oracle 11g RAC

    一.环境说明 操作系统版本: RHEL 6.5 x64 1. 源数据库服务器 Oracle版本: Oracle 11g 11.2.0.4 64位(单机) Oracle_SID: orcl db_nam ...

  7. oracle 监听报错,Oracle EBS系统数据库监听报错TNS-12547、TNS-12560和TNS-00517解决方法...

    记得有一次Oracle EBS系统中止运行3小时,实在比较一次惨痛的教训,让我至今记忆犹新. 问题症状:用户反映提交的请求全部是红色错误 开始意为是并发管理"标准管理器"的问题,在 ...

  8. oracle升级补丁报错,oracle rac升级补丁及中间的错误提示

    tail -f /var/log/messages /u01/app/oracle/product/10.2.0/db_1/OPatch/opatch /u01/app/oracle/product/ ...

  9. oracle not exist报错,oracle连接异常shared memory realm does not exist

    1. 先描述一个连接Oracle 10g的错误:"shared memory realm does not exist" 如图所示Sqlplus连接时出现这个错误: 2. Orac ...

  10. Oracle导入数据时报错解决方法

    目录 同花顺 对症下药,药到病除 立起沉疴,效如桴鼓 同花顺 Oracle的dmp文件导入不进去,怎么办? 吃口药,不要慌. 对症下药,药到病除 都知道,看到报错,就看日志,它我们的指路明灯. 但是有 ...

最新文章

  1. 8个方法解决90%的NLP问题
  2. 蓝桥杯日期计算java_日期类的使用(java)-蓝桥杯
  3. lpk.dll病毒的现象和手工处理
  4. matlab 2017 ubuntu,ubuntu安装matlab R2017,
  5. 2019\Province_C_C++_B\试题A-组队
  6. Snmp学习总结系列——开篇
  7. 查看IIS日志 各大搜索引擎是否访问网站
  8. KVM中断虚拟化(一)
  9. HTML做一个简单漂亮的宠物网页(纯html代码)
  10. 06-JavaWEB_Git
  11. 第6章 DataNode
  12. Juniper SRX密码恢复
  13. 2021总结2022规划
  14. vue中控制台报错[WDS] Disconnected的解决办法
  15. 什么是 Holdout Set?
  16. Simulink 电机控制:单电阻采样三相电流重构算法仿真总结
  17. Artifact xxx:war exploded: Error during artifact deployment.
  18. 先电IAAS V2.2(2017版)平台搭建手册---脚本搭建
  19. acrobat 打印PDF时错误:Error: typecheck; OffendingCommand: show
  20. 学员感言html效果图,学员感言:陪伴,是最长情的告白

热门文章

  1. 南京大学2022年计算机考研复试分数线多少
  2. 饿了吗!来点营养的-华为USG6000V防火墙超详细配置
  3. 正则表达式之断言及常用正则表达式
  4. Java List retainAll踩坑记录
  5. 数学建模之数据包络分析(评价投入产出比的模型)
  6. 去哪儿APP设计总结
  7. python自动生成字幕脚本_自动生成字幕软件?
  8. 自动将视频文件生成字幕的软件autosub的替代工具字幕酱(支持英文、日语和法语、德语、韩语)
  9. HTML CSS参考文档,css离线手册
  10. 2016年大学计算机期末笔试题目,2017年计算机基础大一考试题「附答案」