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
ASTEMP_ID   NUMBER;
BEGINSELECT   NVL (MAX (ID), 0) INTO TEMP_ID FROM MBINMSGS_TEMP;INSERT INTO MBINMSGS_TEMPSELECT   *FROM   MBINMSGSWHERE   MBINMSGS.ID > TEMP_ID;--insert into MBINMSGS_TEST select * from MBINMSGS;COMMIT;
EXCEPTIONWHEN OTHERSTHENDBMS_OUTPUT.PUT_LINE ('Exception happened,data was rollback');ROLLBACK;
END;
/
四:建立定时执行存储过程的Job:

var job_num number;
begindbms_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记1-Linux1

Linux系统介绍 Linux管理硬盘的能力很强,我们一般只看到一个分区 / 根目录 /bin 存储系统命令 /dev 设备文件 /media 多媒体文件,U盘,光盘,共享文件夹 /proc 记录程序运行时的资源使用情况 /sbin 存储超级管理员使用的系统…

学习笔记2-Linux2

Ubuntu系统快捷键 ctrlaltt:打开终端 ctrll: 清屏 ctrlalt方向键:快速切换工作区域 tab:自动补全 up/down:调出指令执行记录 alttab:切换任务重定向、管道、通配符 重定向重定向就是把命令的执行结果…

学习笔记3-C语言-基础

C语言简介 发展史:BCPL -> new B -> C -> Minix -> Linux -> gcc C语言诞生: 1970年~1973年,在肯.汤姆逊和丹尼斯.里奇(影响大)主导下编写完成,归属美国贝尔实验室 C语言的诞生专门用于编写操作系统&#xf…

学习笔记4-C语言-开关、循环、跳转

一、开关语句 switch(n) //n可以是数值、表达式,运算结果必须是整型 {case val: //必须是常量,如果val等于n,则打开开关...;break; //关闭执行开关,switch中不能与continue配合使用//如果所有的case后面都有…

JQuery,ajax异步加载selectoption/option/select多选框:

摘要&#xff1a;最近项目中用到了jquery&#xff0c;ajax&#xff0c;由于很长时间没用了&#xff0c;所以这次做花了很多时间&#xff0c;现在记录一下&#xff0c;方便以后回忆&#xff1a; 一&#xff1a;js文件&#xff1a; <script type"text/javascript"&…

学习笔记5-C语言-数组

数组&#xff1a; 什么是数组&#xff1a; 相同类型变量的组合,是一种批量定义变量的方式 定义&#xff1a; 类型 数组名[数组变量数量]&#xff1b;int arr[5]; 使用&#xff1a;数组名[下标]&#xff1b;arr[0];数组下标从零开始&#xff0c;范围&#xff1a;0~数量-1 遍历…

学习笔记6-小项目-走迷宫、推箱子

获取方向键的功能&#xff1a;使用getch.h头文件中的getch函数 1、把windows中的getch.h头文件放到共享文件夹中 2、终端输入 cd /media/sf_GONGXIANG进入共享文件夹 3、sudo cp getch.h /usr/include 4、cd /usr/include/ 5、sudo chmod r getch.h头文件中的getch函数 time.h…

学习笔记7-C语言-进制转换、原返补、位运算、函数

进制转换 为什么要使用二、八进制、十六进制&#xff1f;因为现在的CPU只能识别高低两种电流&#xff0c;因此只能对二进制数据进行运算二进制数据虽然可以直接被cpu识别&#xff0c;但不方便人们书写、记录&#xff0c;所以把二进制数据转换成八进制是为了方便记录在文件中。…

学习笔记8-作业

作业1&#xff1a;实现一个函数&#xff0c;判断一个整数是否是素数&#xff0c;调用该函数来显示出100~10000之间的所有素数 #include<stdio.h> #include<stdbool.h> #include<math.h> bool is_sushu(int num) {for(int i2;i<sqrt(num);i){if(num%i0)re…

学习笔记9-C语言-传参、类型限定符、递归

函数传参&#xff1a; 1、形参变量属于它所在的函数&#xff0c;出了该函数就不能使用 2、实参与形参之间都是以赋值的形式进行数据传递&#xff08;值传递&#xff09; 3、return 其实是把返回值数据放置到一个公共的区域&#xff08;函数和函数调用者&#xff09;&#xff0…

Oracle创建视图实现获取当前数据所在的页数,这里以每页2条数据分页

摘要&#xff1a;Oracle创建视图实现获取当前数据所在的页数&#xff0c;这里以每页2条数据分页&#xff0c;详细请看&#xff1a; 一&#xff1a; DROP VIEW MIP.TB_CMS_FLGTINFO_D_VIEW;/* Formatted on 2014/12/4 8:35:36 (QP5 v5.115.810.9015) */ CREATE OR REPLACE FOR…

学习笔记10-C语言-小项目-五子棋

小项目&#xff1a; 需要的数据 1、定义棋盘的二维数组 2、定义变量用于记录下棋的坐标 3、定义角色 黑棋 O 白棋 * 空位业务逻辑&#xff1a; 是否需要对数据初始化 for(;;) {1、清屏、显示棋盘2、落子坐标是否合法、该位置是否有棋子3、判断是否五子连珠4、交换角色5、显示…

学习笔记11-C语言-指针

什么是指针&#xff1a; 指针是一种特护的数据类型&#xff0c;使用它可以定义指针变量&#xff0c;指针变量存储的是整型数据&#xff0c;代表内存的编号&#xff0c;通过这个编号可以访问到对应内存。为什么使用指针 1、函数与函数之间是相互独立的&#xff0c;但是有些时候…

学习笔记12-C语言-堆内存、字符串

什么是堆内存&#xff1a; 是进程中的一个内存段&#xff08;text\data\bss\heap\stack&#xff09;&#xff0c;由程序猿手动控制。 特点是足够大&#xff0c;缺点是使用麻烦为什么要使用堆内存&#xff1a; 1、随着程序的复杂&#xff0c;数据会越来越多。 2、其他的内存段…

学习笔记13-C语言-字符串函数、缓冲区

字符串的常用函数: #include<string.h> size_t strlen(const char* s); 功能&#xff1a;计算字符串长度&#xff0c;但是结果不包括\0 返回值&#xff1a;返回字符串中字符的个数size_t str_len(const char* str) {assert(NULL ! str);const char* tmp str;while(*tmp…

Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:

摘要&#xff1a;近期项目中&#xff0c;在做高级查询的时候有个条件是根据选择的字段&#xff0c;然后再选择字段的值为空和不为空做查询&#xff0c;在写SQL语句的时候费了很长时间&#xff0c;现在记录一下&#xff0c;方便日后查看&#xff1a; 一&#xff1a;查询字符串类…

学习笔记14-C语言-小项目-通讯录

通讯录&#xff1a; 要求&#xff1a; 姓名&#xff0c;性别、电话&#xff0c;最多储存50个联系人 功能&#xff1a;1、添加联系人2、按名字删除联系人3、按姓名修改联系人信息4、查找联系人&#xff0c;可通过电话&#xff0c;名字查找&#xff0c;支持模糊查找5、显示所有联…

学习笔记15-C语言-预处理指令、条件编译、头文件

预处理指令&#xff1a; 程序猿编写的代码不是标准C代码&#xff0c;并不能被真正的编译器索编译&#xff0c;需要一段程序把代码翻译一下。 翻译的过程叫做预处理&#xff0c;被翻译的代码叫做预处理指令&#xff0c;以#开头的都是预处理指令查看预处理的过程&#xff1a;gcc…

学习笔记16-C语言-小项目-使用Makefile完成2048

Makefile: Makefile是一系列编译指令组成的可执行文本&#xff0c;也叫做编译脚本。 在终端执行make命令会自动执行Makefile脚本中的编译命令&#xff0c; 而且它还可以根据文件的最后修改时间来判断哪些文件是否需要重新编译、哪些文件不需要重新编译&#xff0c;从而大大提高…

学习笔记17-C语言-结构、联合、枚举

结构&#xff1a; struct 结构是由程序猿自己设计的一种数据类型&#xff0c;用于描述一个事务的各项数据&#xff0c;由若干个不同的基础数据类型组成。设计结构&#xff1a;struct 结构体名{类型 成员名&#xff1b;...}&#xff1b;定义结构体变量struct 结构体名 变量名&a…