--参考之TOM 编程艺术中的DIY并行 --经测试,大数据量的插入,多线程在普通磁盘执行效率反而更慢,不如单insert语句,而在磁盘阵列硬件环境下执行效率有很大的提升。 --创建表,模拟多线程插入(TT3->TT4) DROP TABLE TT3; DROP TABLE TT4; CREATE TABLE TT4 AS SELECT * FROM DBA_OBJECTS WHERE 1=0; CREATE TABLE TT3 AS SELECT * FROM DBA_OBJECTS; --数据分批插入参数表 DROP TABLE JOB_PARMS; CREATE TABLE JOB_PARMS ( JOB NUMBER PRIMARY KEY, LO_RID INT, HI_RID INT ); --创建插入的存储过程 CREATE OR REPLACE PROCEDURE PROC_TEST(P_JOB IN NUMBER) IS L_REC JOB_PARMS%ROWTYPE; BEGIN SELECT * INTO L_REC FROM JOB_PARMS WHERE JOB = P_JOB; INSERT INTO TT4 SELECT A.OWNER, A.OBJECT_NAME, A.SUBOBJECT_NAME, A.OBJECT_ID, A.DATA_OBJECT_ID, A.OBJECT_TYPE, A.CREATED, A.LAST_DDL_TIME, A.TIMESTAMP, A.STATUS, A.TEMPORARY, A.GENERATED, A.SECONDARY FROM (SELECT ROWNUM RN, TT3.* FROM TT3 WHERE ROWNUM <= L_REC.HI_RID) A WHERE A.RN >= L_REC.LO_RID; DELETE FROM JOB_PARMS WHERE JOB = P_JOB; COMMIT; END; / ---DIY 并行调度程序块 DECLARE L_JOB NUMBER; C_INDEX NUMBER;--插入的数量总数 S_INDEX INT:=0;--插入的开始index E_INDEX INT:=0;--插入的结束index CQ_INDEX INT:=20;--循环的次数 NUM_INCREASE INT:=0;--增量累加 V_I INT:=0;--计数器 BEGIN SELECT COUNT(*) INTO C_INDEX FROM TT3; NUM_INCREASE:= CEIL(C_INDEX/CQ_INDEX); WHILE CQ_INDEX > V_I LOOP V_I:=V_I+1; S_INDEX:=1+NUM_INCREASE*(V_I-1); IF(V_I = 20) THEN--当等于循环次数则修改结束的index E_INDEX:= C_INDEX; ELSE E_INDEX:=NUM_INCREASE*V_I; END IF; DBMS_JOB.SUBMIT( L_JOB, 'PROC_TEST(JOB);'); INSERT INTO JOB_PARMS(JOB, LO_RID, HI_RID) VALUES ( L_JOB, S_INDEX, E_INDEX ); END LOOP; END; / --输入COMMIT开始执行 COMMIT; --查看job是否执行完成 SELECT * FROM DBA_JOBS_RUNNING;
相关推荐
Java操作Oracle数据库-多线程,演示了使用多线程技术从oracle 数据库中读取函数、存储过程等功能。,具体实现方法请详见源代码。
一个基于Springboot的小项目,采用Druid多数据源的设计,可以同时操作Mysql与Oracle数据库,配置了多线程处理任务,为刚接触springboot的朋友提供参考。
从oracle库中导出自定义的job脚本。
Oracle Job定时任务
更具客户的需求,编写出客户的sql语句,提供oracle 多线程模板
oracle job 使用详解: 每天1点执行的oracle JOB样例
简单的oracle job脚本,如有需求,清参考网上其他资源
oracle job实例 测试通过
oracleJob创建job的脚本。 sql语句
oracle JOB常见的执行时间, 在初学者定义JOB时,对于执行时间往往不知道如何设置. 该文档列举了常见的定义方式.可以由此进行扩展.
我想往数据库插入多条数据时,使用了如下语句: insert into 表1 (字段1,字段2) values (1,2),(2,3),(3,4); 这条语句在mysql中执行的话,语法一点毛病都没有,但是,在oracle上执行一直报错: ORA-00933: SQL ...
oracle向数据库里插入图片,一般不怎么用,但是有可能还是需要用的
Oracle JOB 定时任务 定时执行存储过程
oracle job
oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本。
oraclejob例子
oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入
自己查阅资料后总结的一点Job的使用方法和技巧
关于oracle 数据库中job任务如何创建、查询和修改、如何启用job和停止job,可以帮助新手了解job的使用,包括任务运行时间的设置,具体的代码很实用,希望对你有帮助