正文
oracle如何自动执行 oracle自动执行sql
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
如何使用Python 自动执行连接ssh后并执行Oracle查询语句并返回查询结果?
可以使用paramiko模块,这个模块就是python实现oracle如何自动执行的高效ssh客户端,用它连接远程服务器后,就可以使用里面oracle如何自动执行的函数来执行Oracle语句,返回结果可以保存为列表,然后打印出来就可以oracle如何自动执行了,你可以尝试一下,这里就不给出具体oracle如何自动执行的代码oracle如何自动执行了。
oracle job不自动执行
oracle job不自动执行?Copyright © 1999-2020, CSDN.NET, All Rights Reserved

 登录
ORACLE JOB无法自动执行 原创
2019-06-28 15:57:22
 1点赞

江湖见 
码龄3年
关注
背景:本人项目中有几个调度程序,其中有个job是每月月底最后一天晚上12点过执行,一开始运行的好好的 ,过了几个月业务需求调整,改为每月28号晚上12点过执行,于是我把job的运行时间由原来的TRUNC(ADD_MONTHS(SYSDATE,1),'MM')+1/1440
改为了TRUNC(SYSDATE,'MM')+28+5/1440,验证运行时间写的对不对
select to_char(TRUNC(SYSDATE,'MM')+28+5/1440,'yyyy-MM-dd hh24:mi:ss') from dual;
运行结果为
2019-05-29 00:05:00
看似没问题,然后我就编译 运行一次, job执行完,没有报错,确保存储过程脚本写的没问题,查看下次执行时间也正常,ok下班回家。。。。。
第二天来一看,数据没生成,再去看调度任务,NEXT_DATE时间不对,FAILURES错误次数长达13次, 吓得我赶紧先修改执行时间(必须必当前时间大),手动执行这个job。。。执行完再broken。
期间尝试改过很多运行时间的表达式,但每次到月底都是第一次手动编译运行没问题(排除存储过程语句写的是否问题),其次再等他自动运行 就不行了。网上看过很多解决方案,很多说是权限问题。。。 差点把我带跑偏,如果是权限问题 不可能其他job都能执行成功,于是问题还是出在表达式这。
在一个偶然的机遇下,请教了一位高人,他说这个表达式 貌似不能直接trunc sysdate ,必须要套一层函数 ,可以是last_day,亦或是add_month等。于是我再一次抱着尝试的心态去改改。
我改成了TRUNC(ADD_MONTHS(SYSDATE,0),'MM')+28+5/1440 (每月28号晚12点05分执行job...就是29日凌晨)
先验证下
select to_char(TRUNC(ADD_MONTHS(SYSDATE,0),'MM')+28+5/1440,'yyyy-MM-dd hh24:mi:ss') from dual;
--运行结果是2019-06-29 00:05:00
ok没问题 再编译运行一次,ok也没问题,坐等晚上自动执行,由于是今天才改的,只能等今晚过了才能得知结果,如果成功了 我再回来 更新下。
各位大神们,我想在oracle后台执行多个存储过程,请问要怎么做呢?
你是需要定时执行吗?你说的后台执行应该就是存储过程自动执行吧:
1、定时执行你可以创建job,可以定时每个多久执行一次存储过程(job中可以执行多个存储过程,只需要使用‘;’隔开);
2、你可以将你所有的存储过程打包(pkg);
oracle的job怎么设置一个过程每5分钟执行一次
dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+5/1440');--每天1440分钟,即一分钟运行test过程一次,分子为5则为每分钟执行一次
具体可以参考我的百度云笔记:
一、设置初始化参数 job_queue_processes
sql alter system set job_queue_processes=n;(n0)
job_queue_processes最大值为1000
查看job queue 后台进程
sqlselect name,description from v$bgprocess;
二,dbms_job package 用法介绍
包含以下子过程:
Broken()过程。
change()过程。
Interval()过程。
Isubmit()过程。
Next_Date()过程。
Remove()过程。
Run()过程。
Submit()过程。
User_Export()过程。
What()过程。
1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。
这个过程有三个参数:job 、broken与next_date。
PROCEDURE Broken (job IN binary_integer,
BrokenIN boolean,
next_date IN date :=SYSDATE)
job参数是工作号,它在问题中唯一标识工作。
broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。 网管联盟
next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。
job如果由于某种原因未能成功之行,oracle将重试16次后,还未能成功执行,将被标记为broken重新启动状态为broken的job,有如下两种方式;
a、利用dbms_job.run()立即执行该job
sqlbegin
sqldbms_job.run(:jobno) 该jobno为submit过程提交时返回的job number
sqlend;
sql/
b、利用dbms_job.broken()重新将broken标记为false
sqlbegin
sqldbms_job.broken (:job,false,next_date)
sqlend;
sql/
2、Change()过程用来改变指定工作的设置。
这个过程有四个参数:job、what 、next_date与interval。
PROCEDURE Change (jobIN binary_integer,
What IN varchar2,
next_date IN date,
interval IN varchar2)
此job参数是一个整数值,它唯一标识此工作。
What参数是由此工作运行的一块PL/SQL代码块。
next_date参数指示何时此工作将被执行。
interval参数指示一个工作重执行的频度。 中国网管论坛bbs.bitsCN.com
3、Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。这个过程有两个参数:job与interval。
PROCEDURE Interval (job IN binary_integer,
Interval IN varchar2)
job参数标识一个特定的工作。interval参数指示一个工作重执行的频度。
4、ISubmit()过程用来用特定的工作号提交一个工作。这个过程有五个参数:job、what、next_date、interval与no_parse。
PROCEDURE ISubmit (job IN binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。
5、Next_Date()过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job与next_date。
PROCEDURE Next_Date(job IN binary_ineger,
next_date IN date) 54ne.com
job标识一个已存在的工作。next_date参数指示了此工作应被执行的日期与时间。
6、Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数:
PROCEDURE Remove(job IN binary_ineger);
job参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit()过程返回的job参数的值。已正在运行的工作不能由调用过程序删除。
7、Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:
PROCEDURE Run(job IN binary_ineger)
job参数标识将被立即执行的工作。
8、使用Submit()过程,工作被正常地计划好。
这个过程有五个参数:job、what、next_date、interval与no_parse。
PROCEDURE Submit ( job OUT binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
what参数是将被执行的PL/SQL代码块。 中国网管论坛bbs.bitsCN.com
next_date参数指识何时将运行这个工作。
interval参数何时这个工作将被重执行。
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。
9、User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。
此程序有两个参数:job与my_call。
PROCEDURE User_Export(jobIN binary_ineger,
my_callIN OUT varchar2)
job参数标识一个安排了的工作。my_call参数包含在它的当前状态重新提交此工作所需要的正文。
10、What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。
PROCEDURE What (job IN binary_ineger,
What IN OUT varchar2)
job参数标识一个存在的工作。what参数指示将被执行的新的PL/SQL代码。
三、查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行job相关信息
54com.cn
2、查看相关信息
SQLSELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN
SQLFROM DBA_JOBS;
JOB NEXT_DATE NEXT_SEC FAILURES B
------- --------- -------- -------- -
9125 01-JUN-01 00:00:00 4 N
14144 24-OCT-01 16:35:35 0 N
9127 01-JUN-01 00:00:00 16 Y
3 rows selected.
正在运行的JOB相关信息
SELECT SID, r.JOB, LOG_USER, r.THIS_DATE, r.THIS_SEC
FROM DBA_JOBS_RUNNING r, DBA_JOBS j
WHERE r.JOB = j.JOB;
SID JOB LOG_USER THIS_DATE THIS_SEC
----- ---------- ------------- --------- --------
12 14144 HR 24-OCT-94 17:21:24
25 8536 QS 24-OCT-94 16:45:12
2 rows selected.
JOB QUEUE LOCK相关信息
SELECT SID, TYPE, ID1, ID2
FROM V$LOCK
WHERE TYPE = 'JQ';
SID TY ID1 ID2
--------- -- --------- ---------
12 JQ 0 14144
1 row selected.
四、简单例子
一个简单例子: 网管网bitsCN.com
创建测试表
SQL create table TEST(a date);
表已创建。
创建一个自定义过程
SQL create or replace procedure MYPROC as
2 begin
3 insert into TEST values(sysdate);
4 end;
5 /
过程已创建。
创建JOB
SQL variable job1 number;
SQL
SQL begin
2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次
3 end;
4 /
PL/SQL 过程已成功完成。
运行JOB
SQL begin
2 dbms_job.run(:job1);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from TEST;
时间
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24
删除JOB
SQL begin
2 dbms_job.remove(:job1);
3 end;
4 / 网管网bitsCN.com
PL/SQL 过程已成功完成。
oracle触发器的概念是什么?有那些事件能引起触发器自动执行?
触发器是特殊的存储过程,但它的执行不是由手工调用,也不是由程序执行而是由某个事件来触发,比如insert, delete, update.
如何自动完成Oracle客户端的安装及其配置
1、共享ORACLE安装程序
可将ORACLE安装程序放置到一台应用服务器的光驱或拷贝到应用服务器的一个目录下并共享,在这里我们假定服务器名称为softserver,放置路径为oracle。
2、编写响应文件自动安装ORACLE客户端
ORACLE的缺省的安装模式为人机交互方式。即运行ORACLE安装盘上的setup.exe后,按照安装程序的提示一步一步的选择完成安装。ORACLE同时也提供了自动安装(非人机交互)方式。此种模式的前提是必须写一个响应文件。关于此种方式的说明可以在ORACLE安装盘中找到,文件名为doc\Output\advance.htm。在response目录下有一些响应文件的模板,可以根据需要将模板修改成适合自己的响应文件。
在这里我们举一个只安装Net8的例子,文件名定为\\softserver\oracle\net8.rsp,内容如下:
[General]
RESPONSEFILE_VERSION=1.7.0
[SESSION]
#products.jar文件所在的路径(在ORACLE安装盘中)
FROM_LOCATION="\\softserver\oracle\stage\products.jar"
#ORACLE安装目录
ORACLE_HOME="C:\oracle\ora81"
#ORACLE安装目录的别名
ORACLE_HOME_NAME="ora8"
#顶级安装方式,这里选择客户端
TOPLEVEL_COMPONENT={"oracle.client","8.1.7.0.0"}
#是否显示动画,缺省为false
SHOW_SPLASH_SCREEN=false
#是否显示欢迎界面,缺省为false
SHOW_WELCOME_PAGE=false
#是否显示安装过程界面,缺省为true
SHOW_INSTALL_PROGRESS_PAGE=false
#是否显示需求信息,缺省为true
SHOW_REQUIRED_CONFIG_TOOL_PAGE=false
#
#ORACLE客户端选项
#
[oracle.client_8.1.7.0.0]
#语言,这里用英语,简体中文
COMPONENT_LANGUAGES={"en","zh_CN"}
#安装方式(缺省、定制、最小),这里用定制
INSTALL_TYPE="Custom"
#要安装的产品列表,这里选择Net8
DEPENDENCY_LIST={ "oracle.networking.netcltprod","8.1.7.0.0"}
#
#Net8产品
#
[oracle.networking.netcltprod_8.1.7.0.0]
DEPENDENCY_LIST={ "oracle.networking.netclt","8.1.7.0.0"}
#
# Net8配置助手
#
[oracle.networking.netca_8.1.7.0.0]
#是否在安装后启动Net8配置助手,缺省为true
b_launchNETCA=false
此时,如果我们在命令行执行命令:
\\softserver\oracle\setup –responsefile
\\softserver\oracle\net8.rsp –silent
关于oracle如何自动执行和oracle自动执行sql的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。