job的创建更改及删除
Genesis菜单

三、Graphic Editor 图形编辑窗口 EDIT :编辑菜单
回复上次动作 移动
修改尺寸 连接
修改形狀 新增 属性
删除 复制 变形 暂存区 极性 修改
Reshape:修改形状
更改符号 打散 打散成岛/空洞 还原成表面对象 弧转成线 线转成 Pad 表面对象转成 Pad Pad 转成线 表面化 线涂的资料转成表面对象 清除空洞 清理表面对象 填满 设计转为成型 替代 封闭区域 改变弧的方向
输入(Input)流程说明
一、创建一个 job
1.1 File---Create Entity name :料号名
Database : u60
1.2 OK
二、创建一个 step
2.1 双击 job 名,进入 job 2.2 双击 step 名,进入 step
2.3 File---Create
Entity name :org
STEP:进阶
设置参考点 联片资料优化 排版 菲林资料优化
设置属性 设编辑及建立 Profile
设置开料尺寸 设置排版区域 排版 排版编辑 套用板边 板边制作 套用工具孔
ROUT:铣边
尺寸标注 自动连接 制作铣边
输入(Input)流程图 创建一个 job 创建一个 step 输入(Input) 定义层的属性 对齐
三、确定孔径孔位对照打带和客户资料
优先级别:DWG---DD---DRL
步骤: ① 打开 DD 和 DRL 查看钻孔是否在打带上
② 右击层名
选择 Features Histogram
查看钻孔尺寸及个数是否正
确, 正 确 下制程,用光标选中数值,点击 Select
看左下角的 selected 数值
oracle-job详解

oracle job 应用1.beginsys.dbms_job.submit(job => :job,what => 'job_stat_cooperate;',next_date =>to_date('01-07-2008 05:00:00', 'dd-mm-yyyy hh24:mi:ss'),interval => 'TRUNC(SYSDATE+30)+5/24');commit;end;/每个月1号早晨5点执行的JOB,上周尝试写的,这周过来,看到执行效果还OK.纪录下.TRUNC(SYSDATE+30)+5/24表示循环时间,现在时间加上30天后的日期,再加上具体的时间.2.Oracle定时器(Job)各时间段写法汇总原作者:博客园一条辉原文:链接对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作。
但是,Oracle定时器Job时间的处理上,千变万化,今天我把比较常用写法汇总如下:在总结之前,先把Job的参数一一说明一下:job参数是由Submit()过程返回的binary_ineger。
这个值用来唯一标识一个工作;what参数是将被执行的PL/SQL代码块;next_date参数指识何时将运行这个工作。
写Job的时候可以不指定该值;interval参数何时这个工作将被重执行。
其中Interval这个值是决定Job何时,被重新执行的关键。
例如:有存储过程p_dosomethings,需要被不同的时间间隔执行。
1declare2 jobno number;3begin4 dbms_job.submit(5 jobno,6 'p_dosomething;', --what7 to_date('20090101020000','yyyy-mm-dd hh24:mi:ss'),--next_date,可以不填8 'Interval时间字符串'--interval,关键设置9 );10 commit;11end;121、每分钟执行Interval =>TRUNC(sysdate,’mi’) + 1 / (24*60)2、每天定时执行例如:每天的凌晨2点执行Interval =>TRUNC(sysdate) + 1 +2 / (24)3、每周定时执行例如:每周一凌晨2点执行Interval =>TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天4、每月定时执行例如:每月1日凌晨2点执行Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/245、每季度定时执行例如每季度的第一天凌晨2点执行Interval =>TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/246、每半年定时执行例如:每年7月1日和1月1日凌晨2点Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/247、每年定时执行例如:每年1月1日凌晨2点执行Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24当然上面罗列不可能照顾到方方面面,但是稍微变化一下,就能衍生出无数的例子,聪明的你一定会的吧,我这里就不多罗嗦了。
oracle 中创建作业的一般步骤

oracle 中创建作业的一般步骤
在Oracle数据库中创建作业的一般步骤如下:
1. 确保用户有足够的权限:用户需要有CREATE JOB和CREATE EXTERNAL JOB系统权限,以及CREATE SESSION权限。
2. 使用CREATE_JOB存储过程创建作业:使用
CREATE_JOB存储过程可以创建计划执行的作业。
存储过程接受一些参数,如作业名称、作业类型、作业所属的模式等。
3. 指定作业的计划:使用DBMS_SCHEDULER包中的
ADD_JOB_EMAIL_NOTIFICATION存储过程,可以指定作业的计划,如作业的重复间隔、起始时间等。
4. 定义作业的动作:使用DBMS_SCHEDULER包中的
SET_JOB_ARGUMENT_VALUE存储过程,可以为作业定义需要的参数值。
使用ADD_JOB_EMAIL_NOTIFICATION存储过程,可以为作业指定动作,如执行PL/SQL程序、执行操作系统命令等。
5. 启动作业:使用DBMS_SCHEDULER包中的ENABLE存储过程来启动作业。
数据库job的启用及参数设置

数据库job的启用及参数设置2010-07-06 20:20:36| 分类:oracle | 标签: |举报 |字号大中小订阅众所周知,一般操作系统会提供定时执行任务的方法,例如:Unix平台上提供了让系统定时执行任务的命令Crontab。
但是,对于某些需求,例如:一些对数据库表的操作,最为典型的是证券交易所每日收盘后的结算,它涉及大量的数据库表操作,如果仍然利用操作系统去定时执行,不仅需要大量的编程工作,而且还会出现用户不一致等运行错误,甚至导致程序无法执行。
一、分析问题事实上,对于以上需求,我们可以利用数据库本身拥有的功能Job Queue(任务队列管理器)去实现。
任务队列管理器允许用户提前调度和安排某一任务,使其能在指定的时间点或时间段内自动执行一次或多次,由于任务在数据库中被执行,所以执行效率很高。
任务队列管理器允许我们定制任务的执行时间,并提供了灵活的处理方式,还可以通过配置,安排任务在系统用户访问量少的时段内执行,极大地提高了工作效率。
例如,对于数据库日常的备份、更新、删除和复制等耗时长、重复性强的工作,我们就可以利用任务队列管理器去自动执行以减少工作量。
目前,拥有此项功能的数据库有许多,最有代表性的是SQL Server 7.0、Oracle 8.0.5等。
但是,要让任务队列管理器工作,还需要我们加以配置才能实现。
SQL Server的功能配置是在一个图形化界面(GUI)中实现的,非常简单。
利用OEM客户端管理工具,Oracle的配置也可以在一个图形界面中完成。
然而大多数的用户更习惯于命令行的方式去操纵数据库。
本文介绍如何通过命令行实现这种配置。
二、实现步骤1.确保Oracle的工作模式允许启动任务队列管理器Oracle定时执行“Job Queue”的后台程序是SNP进程,而要启动SNP进程,首先要确保整个系统的模式是可以启动SNP进程的,这需要以DBA的身份去执行如下命令:svrmgrl> alter system enable restricted session;或sql> alter system disenable restricted session;利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件。
jdbc数据库增、删、改、查语句

jdbc数据库增、删、改、查语句一、增加数据1. 插入单行数据在JDBC中,我们可以使用INSERT INTO语句来向数据库中插入单行数据。
例如,我们要向student表中插入一条新的学生记录,可以使用以下语句:INSERT INTO student (id, name, age) VALUES (1, '张三', 18);2. 批量插入数据如果我们要向数据库中插入多行数据,可以使用批量插入的方式,以提高效率。
例如,我们要向student表中插入多条新的学生记录,可以使用以下语句:INSERT INTO student (id, name, age) VALUES (1, '张三', 18), (2, '李四', 20), (3, '王五', 22);二、删除数据1. 删除指定行数据在JDBC中,我们可以使用DELETE FROM语句来删除数据库中的指定行数据。
例如,我们要删除student表中id为1的学生记录,可以使用以下语句:DELETE FROM student WHERE id = 1;2. 删除所有数据如果我们要删除数据库中的所有数据,可以使用DELETE FROM语句,并不指定任何条件。
例如,我们要删除student表中的所有学生记录,可以使用以下语句:DELETE FROM student;三、修改数据1. 更新指定行数据在JDBC中,我们可以使用UPDATE语句来更新数据库中的指定行数据。
例如,我们要将student表中id为1的学生记录的年龄修改为20岁,可以使用以下语句:UPDATE student SET age = 20 WHERE id = 1;2. 批量更新数据如果我们要更新数据库中的多行数据,可以使用批量更新的方式,以提高效率。
例如,我们要将student表中id为1和2的学生记录的年龄都修改为20岁,可以使用以下语句:UPDATE student SET age = 20 WHERE id IN (1, 2);四、查询数据1. 查询所有数据在JDBC中,我们可以使用SELECT语句来查询数据库中的数据。
JOB用法(定时更新)

初始化相关参数job_queue_processesalter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000 ;job_queue_interval = 10 //调度作业刷新频率秒为单位job_queue_process 表示oracle能够并发的job的数量,可以通过语句show parameter job_queue_process;来查看oracle中job_queue_process的值。
当job_queue_process值为0时表示全部停止oracle的job,可以通过语句ALTER SYSTEM SET job_queue_processes = 10;来调整启动oracle的job。
相关视图:dba_jobsall_jobsuser_jobsdba_jobs_running 包含正在运行job相关信息-------------------------提交job语法:beginsys.dbms_job.submit(job => :job,what => 'P_CLEAR_PACKBAL;',next_date => to_date('04-08-2008 05:44:09', 'dd-mm-yyyy hh24:mi:ss'),interval => 'sysdate+ 1/360');commit;end;/-------------------------创建JOBvariable jobno number;begindbms_job.submit(:jobno, 'P_CRED_PLAN;',SYSDATE,'SYSDATE+1/2880',TRUE);commit;运行JOBSQL> begindbms_job.run(:job1);end;/删除JOBSQL> begindbms_job.remove(:job1);end;/DBA_JOBS===========================================字段(列)类型描述JOB NUMBER 任务的唯一标示号LOG_USER VARCHAR2(30) 提交任务的用户PRIV_USER VARCHAR2(30) 赋予任务权限的用户SCHEMA_USER VARCHAR2(30) 对任务作语法分析的用户模式LAST_DATE DATE 最后一次成功运行任务的时间LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小时,分钟和秒THIS_DATE DATE 正在运行任务的开始时间,如果没有运行任务则为nullTHIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小时,分钟和秒NEXT_DATE DATE 下一次定时运行任务的时间NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小时,分钟和秒TOTAL_TIME NUMBER 该任务运行所需要的总时间,单位为秒BROKEN VARCHAR2(1) 标志参数,Y标示任务中断,以后不会运行INTERVAL VARCHAR2(200) 用于计算下一运行时间的表达式FAILURES NUMBER 任务运行连续没有成功的次数WHAT VARCHAR2(2000) 执行任务的PL/SQL块CURRENT_SESSION_LABEL RAW MLSLABEL 该任务的信任Oracle会话符CLEARANCE_HI RAW MLSLABEL 该任务可信任的Oracle最大间隙CLEARANCE_LO RAW MLSLABEL 该任务可信任的Oracle最小间隙NLS_ENV VARCHAR2(2000) 任务运行的NLS会话设置MISC_ENV RAW(32) 任务运行的其他一些会话参数--------------------------描述INTERVAL参数值每天午夜12点'TRUNC(SYSDATE + 1)'每天早上8点30分'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'每星期二中午12点'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'每个月第一天的午夜12点'TRUNC(LAST_DAY(SYSDATE ) + 1)'每个季度最后一天的晚上11点'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24' 每星期六和日早上6点10分'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'--------------------------1:每分钟执行Interval => TRUNC(sysdate,'mi') + 1/ (24*60)2:每天定时执行例如:每天的凌晨1点执行Interval => TRUNC(sysdate) + 1 +1/ (24)3:每周定时执行例如:每周一凌晨1点执行Interval => TRUNC(next_day(sysdate,'星期一'))+1/244:每月定时执行例如:每月1日凌晨1点执行Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/245:每季度定时执行例如每季度的第一天凌晨1点执行Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/246:每半年定时执行例如:每年7月1日和1月1日凌晨1点Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/247:每年定时执行例如:每年1月1日凌晨1点执行Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24以下的文章主要是介绍 Oracle job的用法的实际操作步骤,本文主要告诉你在在进行Oracle job中,如何设置初始化的参数job_queue_processes,以及相关重要步骤的详细解析,以下就是文章的详细介绍。
【干货分享】DM数据库创建JOB的三种方式(二)
【干货分享】DM数据库创建JOB的三种方式(二)上周我们讲解了使用DBMS_JOB和DBMS_SCHEDULER系统包来创建定时任务的方法,本次讲解使用DM作业系统创建定时任务的方法。
DBMS_JOB、DBMS_SCHEDULER只支持调用DM SQL块和存储过程,DM作业系统除了支持定时执行SQL脚本之外,也支持定时备份数据库、重组数据库,更新统计信息等功能,并支持管理操作员和警报的功能。
本章介绍DM作业系统的功能和创建作业的方法。
本章的测试环境:①操作系统: Window 10 (64位)②数据库版本:达梦8.1相关关键字:DM作业系统,定时任务DM作业系统DM的作业系统为用户提供了创建作业,并对作业进行调度执行以完成相应任务的功能。
作业系统大致包含作业、警报和操作员三部分。
用户需要为作业配置步骤和调度。
还可以创建警报,当发生警报时,将警报信息通知操作员,以便操作员能够及时做出响应。
用户通过作业可以实现对数据库的操作,并将作业执行结果以通知的形式反馈到操作员。
本章仅介绍DM作业系统创建JOB作业的方法。
创建DM作业系统创建DM作业系统可以通过两种方式来实现。
一是通过系统过程SP_INIT_JOB_SYS来实现;二是通过图形化客户端MANAGER管理工具实现。
两者选其一。
看过上周文章会发现,创建DM作业系统与创建DBMS_JOB系统包是同一个方法。
也就是说,创建DM作业系统的同时就创建了DBMS_JOB系统包,或者说如果要使用DBMS_JOB系统包,就需要创建DM作业系统。
DM作业系统使用方法下面我们使用客户端工具介绍创建DM系统作业,创建JOB的方法。
假设我们需要创建一个JOB,每1小时运行一次,运行时调用存储过程p_test_job。
实现步骤参考如下:(1)创建DM作业系统用SYSDBA用户登录DM管理工具,左侧“对象导航”窗口右击“代理”选项,选择“创建代理环境”。
页面提示“创建代理环境成功”,打开模式选项,可以看到数据库模式下面多了SYSJOB 模式,该模式属于SYSDBA用户,SYSJOB模式拥有SYS开头的相关系统表,DBMS_JOB 系统包、视图等。
CL常用命令
12. INZTAP(InitializeTape)
DSPTAP(DisplayTape)
格式化磁带
显示磁带内容
13.WRKSBMJOB(WorkwithSubmittedJob)
查看批处理作业状态
14.WRKOUTQ(WorkWithOutQueue)
查看报表暂存区,报表暂存区须要指定至打印机,并激活该打印机(STRPRTWTR)才可印
25.STRRLU(StartReportLayoutUtility)
激活报表格式产生工具
26.STRSEU(StartSourceEntryUtility)
激活Source编辑工具
27.CRTDSPF(CreateDisplayFile)
使用画面格式(QDDSSRC),建立画面供程序使用
35.DSPSFWRSC
查看系统目前有那些软件资源
36 GOLICPGM管理软件的菜单,包括安装,查看,删除等.
GOMAJOR列出所有的命令
GOPOWER管理起机和关机安排表
37DSPLIBL显示库列表
CRTLIB创建库
ADDLIBLE把现有库填加到库列表去
38 DSPUSRPRF显示用户
33.DSPMSGQSYSOPR
查看系统是否有不正常讯息或响应讯息
34.WRKHDWSRC(WorkwithHardwareResource)
查看系统目前有那些硬件资源.
WRKHDWPRD(WorkwithHardwareProduct)
查看系统硬件资源,硬盘,通讯适配卡,Local控制器....
4.WRKSPLF(WorkwithSpooledFile)
oracle的job用法
oracle的job用法Oracle中的job用于计划和控制系统中的任务执行。
这个功能可以让用户自动化任务以及预定任务执行的时间。
在本篇文章中,我们将探讨Oracle的job用法。
1.创建job要创建一个job,首先需要创建一个job类,它必须实现job接口。
job接口有一个execute方法,该方法用于完成job执行时要执行的任务。
例如,以下类为一个实现job接口的示例:```javaimport org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class MyJob implements Job {public void execute(JobExecutionContext context) throws JobExecutionException {System.out.println("Hello Quartz!");}}```接下来,我们需要创建一个trigger,用于指定job的执行时间和频率。
在这里,我们将创建一个简单的trigger,该trigger将每5秒钟执行一次job。
```javaimport org.quartz.*;import org.quartz.impl.StdSchedulerFactory;public class QuartzTest {public static void main(String[] args) throws SchedulerException {JobDetail job = JobBuilder.newJob(MyJob.class).build(); Trigger trigger =TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeco nds(5).repeatForever()).b uild();Scheduler scheduler = newStdSchedulerFactory().getScheduler();scheduler.start();scheduler.scheduleJob(job, trigger);}}```在上面的示例中,我们首先创建了一个job,然后创建了一个trigger,其中定义了job的执行时间和频率。
jobs命令详解
jobs命令详解在⽤管理员执⾏⼀个命令后,⽤Ctrl+Z把命令转移到了后台。
导致⽆法退出root的。
输⼊命令:exit终端显⽰:There are stopped jobs.解决⽅法:⽅法⼀、输⼊命令:jobs终端显⽰:[1]+ Stopped vim /etc/network/interfaces > /home/leo/Desktop/ip.txt (wd: /)KILL %1⽅法⼆、输⼊命令:jobs -l终端显⽰:[1]+ 4664 停⽌ vim /etc/network/interfaces > /home/leo/Desktop/ip.txt (wd: /)看到4664,这个就是PID了现在开始杀掉它:输⼊命令:kill 4664终端没有显⽰。
ok。
再⽤jobs命令查看,确认已经杀掉了Linux Jobs等前后台运⾏命令解A,Shell⽀持作⽤控制,有以下命令:1. command& 让进程在后台运⾏2. jobs 查看后台运⾏的进程3. fg %n 让后台运⾏的进程n到前台来4. bg %n 让进程n到后台去;PS:"n"为jobs查看到的进程编号.fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要⽤到这些命令,但学会了也是很实⽤的⼀。
& 最经常被⽤到这个⽤在⼀个命令的最后,可以把这个命令放到后台执⾏⼆。
ctrl + z可以将⼀个正在前台执⾏的命令放到后台,并且暂停三。
jobs查看当前有多少在后台运⾏的命令四。
fg将后台中的命令调⾄前台继续运⾏如果后台中有多个命令,可以⽤ fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执⾏的命令的序号(不是pid)五。
bg将⼀个在后台暂停的命令,变成继续执⾏如果后台中有多个命令,可以⽤bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执⾏的命令的序号(不是pid)#Linux下使⽤Shell命令控制任务Jobs执⾏下列命令可以⽤来操纵进程任务:ps 列出系统中正在运⾏的进程;kill 发送信号给⼀个或多个进程(经常⽤来杀死⼀个进程);jobs 列出当前shell环境中已启动的任务状态,若未指定jobsid,则显⽰所有活动的任务状态信息;如果报告了⼀个任务的终⽌(即任务的状态被标记为Terminated),shell 从当前的shell环境已知的列表中删除任务的进程标识;bg 将进程搬到后台运⾏(Background);fg 将进程搬到前台运⾏(Foreground);将job转移到后台运⾏如果你经常在X图形下⼯作,你可能有这样的经历:通过终端命令运⾏⼀个GUI程序,GUI界⾯出来了,但是你的终端还停留在原地,你不能在shell中继续执⾏其他命令了,除⾮将GUI程序关掉。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、创建一个存储过程create or replace procedure MY_Procedureis--这里用到了游标cursor cur isselect * from users where length(name) > 10 ;beginfor user in curloopinsert into users_temp values(user.id,user.passwd);end loop;end;二、创建作业variable job_num number;begindbms_job.submit(:job_num,'MY_Procedure;',sysdate,'sysdate+1');commit;end;三、运行作业begindbms_job.run(:job_num);end;四、查询作业select priv_user,job,what from user_jobs;五、删除作业begindbms_job.remove(:job_num);end;六、时间Sysdate+1/1440每1分钟执行一次Sysdate+5/1440 每5分钟执行一次trunc(sysdate+1)+2/24下一天的2点(凌晨)执行一次'SYSDA TE + 7' 最后一次执行的7天之后执行'SYSDATE + 1/48' 每半个小时执行一次'NEXT_DAY(TRUNC(SYSDA TE), ''MONDAY'') + 15/24' 每个礼拜一的下午3点'NEXT_DAY(ADD_MONTHS(TRUNC(SYSDATE, ''Q''), 3),''THURSDAY'')'每个季度的第一个星期四Oracle数据库的Jobs创建语句如下:beginsys.dbms_job.submit(job => :job,what => 'proc_yw;',next_date => to_date('13-11-2007 14:00:00', 'dd-mm-yyyy hh24:mi:ss'),interval => 'trunc(sysdate)+1+14/24');commit;end;/间隔trunc(sysdate)+1+14/24 就是每天下午2点执行一次proc_yw存储过程;如间隔trunc(sysdate)+1+33/48就是每天下午4:30时执行一次oracle数据库的定时Jobs作业(工作) 的使用通过jobs的使用就能实现每天或每月的指定时间执行一个函数、过程与命令。
就如同Windows系统中的任务计划一样。
Java代码1.dbms_job.submit( job out binary_integer,2.what in archar2,3.next_date in date,4.interval in varchar2,5.no_parse in boolean)其中:●job:输出变量,是此任务在任务队列中的编号;●w hat:执行的任务的名称及其输入参数;●next_date:任务执行的时间;●interval:任务执行的时间间隔。
其中Interval这个值是决定Job何时,被重新执行的关键;当interval设置为null时,该job执行结束后,就被从队列中删除。
假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。
如何更好地确定执行时间的间隔需要我们掌握一个函数TRUNC。
1.TRUNC(for dates)TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:TRUNC(date[,fmt])其中:date 一个日期值fmt 日期格式,该日期将由指定的元素格式所截去。
忽略它则由最近的日期截去下面是该函数的使用情况:1)按年截尾select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-ddhh:mi'),'yyyy') from dual-----------------------------------------------------------2008-1-12)按月截尾select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-ddhh:mi'),'mm') from dual--------------------------------------------------------2008-3-13)按日截尾select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-ddhh:mi'),'dd') from dual----------------------------------------------------------------------2008-3-14)按时截尾select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-ddhh:mi'),'hh') from dual----------------------------------------------------------------------2008-3-1 8:00:005)按分截尾select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-ddhh:mi'),'mi') from dual----------------------------------------------------------------------2008-3-1 8:23:002.确定执行时间间隔1)、每分钟执行Interval => TRUNC(sysdate,'mi') + 1 / (24*60)2)、每天定时执行例如:每天的凌晨2点执行Interval => TRUNC(sysdate) + 1 +2 / (24)3)、每周定时执行例如:每周一凌晨2点执行Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天4)、每月定时执行例如:每月1日凌晨2点执行Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/245)、每季度定时执行例如每季度的第一天凌晨2点执行Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/246)、每半年定时执行例如:每年7月1日和1月1日凌晨2点Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/247)、每年定时执行例如:每年1月1日凌晨2点执行Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/243.实例这里提供了一个简单的例子,主要是完成在每一个时间间隔内向一个表中插入一条记录1)创建测试表Java代码1.2. SQL> create table test(id number,cur_time date);3.表已创建。
4.----建sequence5.CREATE SEQUENCE test_sequence6.INCREMENT BY 1 -- 每次加几个7. START WITH 1 -- 从1开始计数8. NOMAXVALUE -- 不设置最大值9. NOCYCLE -- 一直累加,不循环10. CACHE 10 ;--建触发器代码为:Java代码1.create or replace trigger tri_test_id2. before insert on test --test 是表名3. for each row4.declare5. nextid number;6.begin7. IF :new.id IS NULLor :new.id=0 THEN --id是列名8. select test_sequence.nextval --SEQ_ID正是刚才创建的9. into nextid10. from sys.dual;11. :new.id:=nextid;12. end if;13.end tri_test_id;14.2)创建一个自定义过程Java代码1.SQL> create or replace procedure proc_test as2. 2 begin3. 3 insert into test(cur_time) values(sysdate);4. 4 end;5. 5 /6.过程已创建。
3)创建JOBJava代码1.SQL> declare job1 number;2. begin3. dbms_job.submit(job1,'proc_test;',sysdate,'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次4. end;PL/SQL JOB已成功完成。
oracle作业例子oracle作业例子sql>variable jobno number;sql>beginsql>DBMS_JOB.submit(:jobno,'pro_name();',sysdate,'sysdate+1');dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次sql>commit;sql>end;在命令控制台中这样就可以建产一个作业了。
sysdate表示当前作业将来执行的时间,sysdate+1表示调用频率。
描述 INTERVAL参数值每天午夜12点'TRUNC(SYSDATE + 1)'每天早上8点30分'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'每星期二中午12点'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'每个月第一天的午夜12点'TRUNC(LAST_DAY(SYSDATE ) + 1)'每个季度最后一天的晚上11点'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'每星期六和日早上6点10分'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "S UNDAY"))) + (6×60+10)/(24×60)'select * from user_jobs查询作业记录1.确保Oracle的工作模式允许启动任务队列管理器Oracle定时执行“Job Queue”的后台程序是SNP进程,而要启动SNP进程,首先要确保整个系统的模式是可以启动SNP进程的,这需要以DBA的身份去执行如下命令:svrmgrl>; alter system enable restricted session;或sql>; alter system disenable restricted session;利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件。