千家信息网

Oracle调度Schedule特性中的program分析

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,本篇内容主要讲解"Oracle调度Schedule特性中的program分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle调度Schedule
千家信息网最后更新 2024年11月30日Oracle调度Schedule特性中的program分析

本篇内容主要讲解"Oracle调度Schedule特性中的program分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle调度Schedule特性中的program分析"吧!

program之于procedure的概念有点像操作系统层面的"程序"或者"应用"。但是program是由dba设定的,program是一个对象,一个可执行的对象。
program实际的操作可以分为三种类型:
PL/SQL BLOCK 标准的PL/SQL代码块
STORED PROCEDURE编译好的PL/SQL存储过程、JAVA存储过程或者外部子程序
EXECUTEABLEoracle数据库之外的应用,比如操作系统命令

1、创建Programs使用DBMS_SCHEDULER.CREATE_PROGRAM过程
举个例子:
begin
dbms_scheduler.create_program(program_name => 'myprogram1',
program_action => '/bin/date',
program_type => 'EXECUTABLE',
enabled => TRUE);
end;
/

program_name 指定一个program的名称
program_type 指定program的类型,前面交代的三种类型
program_action 实际执行的操作,应与前面PROGRAM_TYPE参数关联使用。比如说前面指定了PROGRAM_TYPE为"PLSQL_BLOCK",那么此处要执行的action就应当是一段标准的pl/sql代码。
如果前面指定PROGRAM_TYPE为"STORED_PROCEDURE",那么此处要执行的action就应当是ORACLE中定义好的存储过程(含Java存储过程),
如果前面指定PROGRAM_TYPE为"EXECUTABLE",那么此处就应该指定外部命令的命令行信息(含路径信息)
NUMBER_OF_ARGUMENTS 指定支持的参数个数,默认值为0即没有参数。每个program最多能够支持255个参数,注意如果PROGRAM_TYPE设置为PLSQL_BLOCK,那么本参数自动忽略
ENABLED 指定是否将创建的program置为有效状态,默认情况下为false。
COMMENTS 注释信息。

Program的管理
创建完program之后,就涉及到program如何执行了,前面介绍CREATE_PROGRAM过程的参数时提到,每个program最多支持255个参数,要为program添加参数,可以通过DEFINE_PROGRAM_ARGUMENT过程。
不过在为其添加参数前,要注意program的NUMBER_OF_ARGUMENTS指定的数量,如果该值为0,那么为其添加参数时就会报错。
查询创建的program的信息,可以通过USER_SCHEDULER_PROGRAMS视图,例如:
SQL> select program_name,program_type,program_action,number_of_arguments,enabled from user_scheduler_programs;
PROGRAM_NAME PROGRAM_TYPE PROGRAM_ACTION NUMBER_OF_ARGUMENTS ENABL
------------------------------ ---------------- -------------------- ------------------- -----
MYPROGRAM1 EXECUTABLE /bin/date 0 FALSE
前面创建program時並未指定NUMBER_OF_ARGUMENTS的值,因此我们这里需要首先修改该值为一个非0值,操作如下
begin
dbms_scheduler.set_attribute('myprogram1','NUMBER_OF_ARGUMENTS',1);
end;
操作还是使用DBMS_SCHEDULER.SET_ATTRIBUTE过程。另外需要注意,program的NUMBER_OF_ARGUMENTS参数可是说想改就能改的,正常情况下该处理必须是在program处于enabled之前确认完毕,
否则会触发ORA-27465错误,因此要修改program的参数之前,必须首先确保要修改program的enabled状态为false。
那么对于已经处于enabled状态的program,如何修改其状态属性呢?其实很简单,前面操作jobs时使用的DBMS_SCHEDULER.DISABLE过程还记的吗?该过程对于program同样好使,并且调用方式也完全一样,例如:
begin
dbms_scheduler.disable('myprogram1');
end;
另外,如果希望将program置为enabled状态,执行DBMS_SCHEDULER.ENABLE过程即可,这里不再例举。
接下来,就可以为刚刚创建的my_program1添加路径参数,操作如下:
begin
dbms_scheduler.DEFINE_PROGRAM_ARGUMENT(program_name => 'myprogram1',
argument_position => 1,
argument_name => 'dirpath',
argument_type => 'VARCHAR2',
default_value => '/home/oracle');
end;
/
查询为program定义的参数,可以通过USER_SCHEDULER_PROGRAM_ARGS视图
select program_name,argument_name,argument_position,argument_type default_value from user_scheduler_program_args;
PROGRAM_NAME ARGUMENT_NAME ARGUMENT_POSITION DEFAULT_VALUE
------------------------------ ------------------------------ ----------------- ----------------
MYPROGRAM1 DIRPATH 1 VARCHAR2
2、删除program的argument操作也很简单,使用DROP_PROGRAM_ARGUMENT过程即可,例如:
begin
dbms_scheduler.drop_program_argument('myprogram1','dirpath');
end;
该过程第一个参数指定program名称,第二个参数指定定义的argument名称,当然此处也可以指定argument的位置,即前例视图返回结果中的 ARGUMENT_POSITION 列值。
要删除program的话就更简单了,使用DROP_PROGRAM过程即可,例如:
begin
dbms_scheduler.drop_program('myprogram1');
end;
当然啦,删除program的同时,也会删除该program对应的所有arguments。
实际上SCHEDULER中创建job时,也可以指定执行外部的程序。SCHEDULER中的Job更像是之前版本继承过来的JOBS,只不过10g中SCHEDULER管理的JOBS功能更加强大。

到此,相信大家对"Oracle调度Schedule特性中的program分析"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

参数 过程 状态 信息 实际 存储 特性 分析 调度 可以通过 名称 命令 类型 视图 支持 查询 操作系统 代码 内容 对象 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 普陀区营销网络技术服务质量保证 timer数据库来自哪里 云服务器装什么安全软件 东莞erp软件开发费用是多少 服务器路由器与核心路由的瓜西 公司举办软件开发类培训 数据库开发团队价钱 工厂主要用什么软件开发 药易通数据库 数据库查询系统 nsc网络安全大会 美国主机服务器租用商 linux客户机怎么访问服务器 数据库系统有哪些名词解释 st258塔式服务器 网页可以布置在开源服务器 华东交通大学计算机网络技术 网络技术橘皮书 郑州悦邦网络技术有限公司 网络安全集成如何做 姑苏区品牌网络技术服务电话 51家庭互联网科技有限公司 北京服务器租用价格表云空间 数据库中表里的字写错了怎么修改 腐蚀服务器怎么进 人武部网络安全教育 合肥网络软件开发公司有哪些 互联网科技有限公司英文翻译 阿里 数据库 资源调度 软件开发做接口是什么意思
0