全面学习ORACLE Scheduler特性(3)使用Programs
二、使用Programs
在论坛中偶尔见过有人讨论如何在ORACLE中执行操作系统命令,或是ORACLE数据库外的应用。应该说在9i及之前的版本中,虽然说并非完全无法实现(其实还是有多种方式能够变相实现的),不过复杂的实现方式让DBA使劲了力,伤透了心,费劲了事儿。
进入10g版本之后,就完全不必如此费神,因为有了DBMS_SCHEDULER,因为有了PROGRAM。
2.1 创建Programs
Scheduler 中的Program对象并不是常规意义上的"程序"或"应用",而就是一个"对象",由DBA定义的,具有执行某项功能的特殊对象。Program中实际执行的操作可以分为下列三种类型:
PL/SQL BLOCK :标准的pl/sql代码块;
STORED PROCEDURE :编译好的PL/SQL存储过程,或者Java存储过程,以及外部的c子程序;
EXECUTEABLE :ORACLE数据库之外的应用,比如操作系统命令等等。
创建Programs使用DBMS_SCHEDULER.CREATE_PROGRAM过程,该过程支持的参数如下:
JSSWEB> desc dbms_scheduler.create_program;
Parameter Type Mode Default?
------------------- -------------- ---- --------
PROGRAM_NAME VARCHAR2 IN
PROGRAM_TYPE VARCHAR2 IN
PROGRAM_ACTION VARCHAR2 IN
NUMBER_OF_ARGUMENTS BINARY_INTEGER IN Y
ENABLED BOOLEAN IN Y
OMMENTS VARCHAR2 IN Y
如上所示,前三项为必选参数,各参数实际代表的意义如下:
PROGRAM_NAME :指定一个program名称;
PROGRAM_TYPE :Program的类型,如前文中所述,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置为有效状态,默认情况下为f
相关文档:
【案例一】
题目:
--触发器:
--添加员工信息,流水号作为自动编号(通过序列生成),
--并且判断如果工资小于0,则改为0;如果大于10000,则改为10000。
CREATE TABLE emp2(
e_id NUMBER,
e_no NUMBER,
e_name VARCHAR2(20),
e_sal NUMBER
)
SELECT * from emp2;
CREATE SEQUENCE seq_trg_id;
INSERT INTO emp2(e_i ......
Can you connect to an Oracle database with a 64-bit Oracle client?
Technote (FAQ)
Question
You are unable to connect to an Oracle database with a 64-bit Oracle client. Does Lotus Enterprise Integrator (LEI), Lotus Domino Enterprise Connection Services (DECS), or LSX ......
Oracle
1,shutdown之后,如何启动数据库实例?
通过CMD命令符 sqlplus "sys/password as
sysdba",会连到一个空闲实例,这样可再用startup命令。
2,装了数据库之后,用了shutdown,后用了startup等启动之后,可用sql
plus和网页方式连oracle。但用jdbc连接出错?
是监听器没启动:D:\oracle\product\10.1.0\Db_1\ ......
从AIX 角度,我们可以在下面三个角度衡量内存使用的合理性
1>减少页面交换操作
当操作系统需要更多内存页以支持其他应用运行时,操作系统将依据某种算法(LRU算法)把当前驻留在内存中的某些
数据页"Page Out",也就是把内存中的数据页从内存段转移到物理磁盘。显然,这种类型的操作会影响整个系统的运行性能。
对于 ......