摘要:之前项目中用的触发器来实现数据解析,但是最近客户反应,会报错,所以我们从新设计了一下,通过Oracle里面的Job来解决这一问题,这样就不会对原来的数据表做操作,只对临时表操作,就不会对客户那边的上级服务器产生影响了,详细请看下面: 一:首先

摘要:之前项目中用的触发器来实现数据解析,但是最近客户反应,会报错,所以我们从新设计了一下,通过Oracle里面的Job来解决这一问题,这样就不会对原来的数据表做操作,只对临时表操作,就不会对客户那边的上级服务器产生影响了,详细请看下面:

一:首先建个主表:MBINMSGS(这里的用户是MIP)

CREATE TABLE MIP.MBINMSGS

(

ID NUMBER(30) NOT NULL,

MBINMSGS_CLOB_MSG CLOB,

MBINMSGS_DATE_RECEIVED DATE,

MBINMSGS_DATE_PROCESSED DATE,

MBINMSGS_SUBSYSTEM_NAME VARCHAR2(100 BYTE),

MBINMSGS_SUBSYSTEM_DATE_SENT DATE,

SERVICENAME VARCHAR2(30 BYTE) NOT NULL

)

二:其次建个临时表用来存储主表过来的数据:MBINMSGS_TEMP

CREATE TABLE MIP.MBINMSGS_TEMP

(

ID NUMBER(30) NOT NULL,

MBINMSGS_CLOB_MSG CLOB,

MBINMSGS_DATE_RECEIVED DATE,

MBINMSGS_DATE_PROCESSED DATE,

MBINMSGS_SUBSYSTEM_NAME VARCHAR2(100 BYTE),

MBINMSGS_SUBSYSTEM_DATE_SENT DATE,

SERVICENAME VARCHAR2(30 BYTE) NOT NULL

)三:建立同步数据的存储过程:JOB_PRO_TEMP

CREATE OR REPLACE PROCEDURE MIP.JOB_PRO_TEMP

AS

TEMP_ID NUMBER;

BEGIN

SELECT NVL (MAX (ID), 0) INTO TEMP_ID FROM MBINMSGS_TEMP;

INSERT INTO MBINMSGS_TEMP

SELECT *

FROM MBINMSGS

WHERE MBINMSGS.ID > TEMP_ID;

--insert into MBINMSGS_TEST select * from MBINMSGS;

COMMIT;

EXCEPTION

WHEN OTHERS

THEN

DBMS_OUTPUT.PUT_LINE ('Exception happened,data was rollback');

ROLLBACK;

END;

/四:建立定时执行存储过程的Job:

var job_num number;

begin

dbms_job.submit(:job_num,'JOB_PRO_TEMP;',SYSDATE,'sysdate+1/24/60');

end;

commit;五:查看新建的Job是否正确运行:

SELECT * FROM USER_JOBS;六:可能有的人会说我建了Job但是不能运行,那说明你的Job没有运行,我在这个过程中就遇到了这个的问题,最后经过查找,解决了,办法如下:

检查Oracle的JOB运行环境:如果为0表示不运行JOB,Oracle一般默认安装完为10,但是我安装oracle以后就不知道为什么是0。

查看进程数(这里是用system管理员账号登录)

show parameter job_queue_processes;

修改进程数(如果你的是0,才需要按照以下语句修改):

我这里改为10模拟以下这个操作;

在PL/SQL的command窗口中输入以下语句:

alter system set job_queue_processes=10 scope=both;

修改完以后我们查看一下,如果为10那就说明好了,然后你把刚才建的Job删除了,在重新建立一个Job:

show parameter job_queue_processes;七:删除Job的方法:

exec dbms_job.remove(81);

说明:这里的数字81是对应DBA_JOBS表中当前要删除的JOB记录所在行的JOB字段的值;

更加详细的关于Oracle的Job请看:http://www.cnblogs.com/java-pan/archive/2012/09/16/oracle_job.html

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

oracle定时向mysql取数据_Oracle中通过Job实现定时同步两个数据表之间的数据相关推荐

  1. R语言筛选dataframe中两个日期之外的数据行,介于两个日期(包括两个日期)之间的数据行

    R语言筛选dataframe中两个日期之外的数据行,介于两个日期(包括两个日期)之间的数据行 目录

  2. uniapp 子组件 props拿不到数据_谈一谈使用 webpack 开发时,Vue 组件之间的数据传递...

    •我们在学习Vue的时候,难免会使用各个组件之间传递数据.•先来介绍一下Vue中组件传递的方式,有父组件传递给子组件数据,子组件传递给父组件数据,父组件直接获取子组件中数据,子组件直接获取父组件数据以 ...

  3. sql azure 语法_Azure SQL数据同步–在Azure SQL数据库之间复制数据和架构更改

    sql azure 语法 In this article, we will review how to configure the sync group to replicate data betwe ...

  4. VLOOKUP函数查找两个工作表的重复数据

    VLOOKUP函数查找两个工作表的重复数据 第一次用到这个函数还是好几年以前,有个学生家长问我,如果两个工作表里有部分重复的数据,怎么才能找出来?当然这两个工作表的数据都很多,所以人工检索的话工作量太 ...

  5. 使用正则表达式获取两个特定词之间的数据(Python代码)

    使用正则表达式获取两个特定词之间的数据: (Python代码) 当你想取得数据前面有约束条件,后面没有约束条件(也就是每行的最后一段数据时),最好使用\n作为后面的约束条件.如下例子所示: >& ...

  6. oracle 查询时间点数据_ORACLE中查询时间点前后一分钟的数据

    匿名用户 1级 2013-03-31 回答 你还是列举几条数据吧 并且把你想要的结果也最好做个简单的图出来,太抽象了 追问: 医院用的床旁监护仪,每2到3分钟分钟会往数据库发一条数据. 但是我只想看到 ...

  7. mysql查询某张表的所有外键_oracle中查询所有外键引用到某张表的记录

    欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 oracle中查询所有外键引用到某张表的记录 //查询表的主键约束名 select * from user_constr ...

  8. qt中的mysql能存入多少行数据_Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)...

    SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度.例如:向数据库中插入100万条数 ...

  9. oracle 查询各科前3名_oracle中的sql求总分前三名

    展开全部 可以用row_number来查询. 1.创建数据表,插入数据:create table sc (id int, name varchar(20), class varchar(20), sc ...

最新文章

  1. EasyDarwin开源社区 短视频拍摄项目Github地址
  2. 计算机合并键功能,Word组合(功能键与Ctrl等组合) -电脑资料
  3. android 获取数组大小,看得见的数据结构Android版之数组表(数据结构篇)
  4. IOSelect模块
  5. 第一册:lesson forty three。
  6. 40美元18分钟训练整个ImageNet!他们说,这个成绩人人可实现
  7. SQL Server多表同时查询
  8. centos6 安装glibc-2.14.1
  9. java代码 软件_适合新手的java代码编写软件有哪些?
  10. ECharts实操手册
  11. 关于 2021 年度「博客之星」评选刷票行为处罚通知
  12. 手把手教你开发App(HelloWorld)
  13. 堆积木——GBQ4.0设置“统一设置安装费用”中的“高层建筑增加费”
  14. clean-label backdoor attacks 论文笔记
  15. NovelAi + Webui + Stable-diffusion本地配置
  16. 操作系统笔试面试基本内容
  17. MOS电平转换电路 stm32的I2C电平转换电路 IIC电平转换电路
  18. 编写c语言数据从结构时头文件,C语言与数据结构 实验指导.doc
  19. 手把手教用matlab做无人驾驶
  20. 现在的BAT,就是曾经的外企

热门文章

  1. CPU的向量化、多核技术、多路技术、众核技术
  2. Ubuntu 18.04: Debug package with debug symbol
  3. EPTP 和 EPT 分页结构条目的格式
  4. Linux网络协议栈:中断下半部处理
  5. Redis架构图-1
  6. CentOS 7.2 终端安装字体
  7. 实验楼python3中挑战一_实验楼python3学习挑战项目
  8. 菜单向上拉html,模拟select控件,CSS上拉菜单
  9. [独家放送]Unity2019更新规划速览,将有官方的可视化编程!
  10. Unity Failed executing external process for 'Bake Runtime' job