Home Database Mysql Tutorial Oracle中通过Job实现定时同步两个数据表之间的数据

Oracle中通过Job实现定时同步两个数据表之间的数据

Jun 07, 2016 pm 03:32 PM
job oracle Synchronize timing accomplish data sheet pass

摘要:之前项目中用的触发器来实现数据解析,但是最近客户反应,会报错,所以我们从新设计了一下,通过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
)
Copy after login

二:其次建个临时表用来存储主表过来的数据: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
)
Copy after login
三:建立同步数据的存储过程: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;
/
Copy after login
四:建立定时执行存储过程的Job:
var job_num number;
begin
	dbms_job.submit(:job_num,'JOB_PRO_TEMP;',SYSDATE,'sysdate+1/24/60');
end;
commit;
Copy after login
五:查看新建的Job是否正确运行:
SELECT * FROM USER_JOBS;
Copy after login
六:可能有的人会说我建了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;
Copy after login
七:删除Job的方法:
exec dbms_job.remove(81);
Copy after login

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


更加详细的关于Oracle的Job请看:http://www.cnblogs.com/java-pan/archive/2012/09/16/oracle_job.html
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Function to calculate the number of days between two dates in oracle Function to calculate the number of days between two dates in oracle May 08, 2024 pm 07:45 PM

The function in Oracle to calculate the number of days between two dates is DATEDIFF(). The specific usage is as follows: Specify the time interval unit: interval (such as day, month, year) Specify two date values: date1 and date2DATEDIFF(interval, date1, date2) Return the difference in days

How long will Oracle database logs be kept? How long will Oracle database logs be kept? May 10, 2024 am 03:27 AM

The retention period of Oracle database logs depends on the log type and configuration, including: Redo logs: determined by the maximum size configured with the "LOG_ARCHIVE_DEST" parameter. Archived redo logs: Determined by the maximum size configured by the "DB_RECOVERY_FILE_DEST_SIZE" parameter. Online redo logs: not archived, lost when the database is restarted, and the retention period is consistent with the instance running time. Audit log: Configured by the "AUDIT_TRAIL" parameter, retained for 30 days by default.

The order of the oracle database startup steps is The order of the oracle database startup steps is May 10, 2024 am 01:48 AM

The Oracle database startup sequence is: 1. Check the preconditions; 2. Start the listener; 3. Start the database instance; 4. Wait for the database to open; 5. Connect to the database; 6. Verify the database status; 7. Enable the service (if necessary ); 8. Test the connection.

How to use interval in oracle How to use interval in oracle May 08, 2024 pm 07:54 PM

The INTERVAL data type in Oracle is used to represent time intervals. The syntax is INTERVAL <precision> <unit>. You can use addition, subtraction, multiplication and division operations to operate INTERVAL, which is suitable for scenarios such as storing time data and calculating date differences.

How to see the number of occurrences of a certain character in Oracle How to see the number of occurrences of a certain character in Oracle May 09, 2024 pm 09:33 PM

To find the number of occurrences of a character in Oracle, perform the following steps: Get the total length of a string; Get the length of the substring in which a character occurs; Count the number of occurrences of a character by subtracting the substring length from the total length.

Oracle database server hardware configuration requirements Oracle database server hardware configuration requirements May 10, 2024 am 04:00 AM

Oracle database server hardware configuration requirements: Processor: multi-core, with a main frequency of at least 2.5 GHz. For large databases, 32 cores or more are recommended. Memory: At least 8GB for small databases, 16-64GB for medium sizes, up to 512GB or more for large databases or heavy workloads. Storage: SSD or NVMe disks, RAID arrays for redundancy and performance. Network: High-speed network (10GbE or higher), dedicated network card, low-latency network. Others: Stable power supply, redundant components, compatible operating system and software, heat dissipation and cooling system.

How much memory does oracle require? How much memory does oracle require? May 10, 2024 am 04:12 AM

The amount of memory required by Oracle depends on database size, activity level, and required performance level: for storing data buffers, index buffers, executing SQL statements, and managing the data dictionary cache. The exact amount is affected by database size, activity level, and required performance level. Best practices include setting the appropriate SGA size, sizing SGA components, using AMM, and monitoring memory usage.

How to replace string in oracle How to replace string in oracle May 08, 2024 pm 07:24 PM

The method of replacing strings in Oracle is to use the REPLACE function. The syntax of this function is: REPLACE(string, search_string, replace_string). Usage steps: 1. Identify the substring to be replaced; 2. Determine the new string to replace the substring; 3. Use the REPLACE function to replace. Advanced usage includes: multiple replacements, case sensitivity, special character replacement, etc.

See all articles