--- 1.先看看有没有 放临时表 的目录,没有创建下:或者改放其他目录
cd /usr/local/oracle/oradata--- 2.将目录所有者换成oracle
chown -R oracle /usr/local/oracle/--- 3.切换oracle用户,并管理员身份进入
su - oracle
sqlplus / as sysdba
--- 4.创建用户
create user middle_user identified by middle_user;--- 5.创建表空间
create tablespace ts_middle_user datafile '/usr/local/oracle/oradata/middle_user_data.dbf' size 6000M autoextend on;--- 6.用户关联表空间
alter user middle_user default tablespace ts_middle_user;--- 7.给用户访问授权
grant create session,create table,create view,create sequence,unlimited tablespace,connect,resource,dba to middle_user;
-- 8.用Oracle用户创建对应 monitor目录,存放每次执行完毕的结果文件,验证每次导入是否正确
cd /usr/local/oracle
mkdir monitor-- 9.如果monitor目录不属于以下用户,请执行
---select * from all_directories
chown -R oracle:oinstall monitor/-- 10.登录middle_user用户
sqlplus middle_user/middle_user
-- 11.登录middle_user用户后,创建目录MONITOR
create or replace directory monitor as '/usr/local/oracle/monitor';--12. 在中间库执行建立link的脚本,远程链接(用户、密码、IP、端口、实例   以实际为准)
CREATE DATABASE LINK dblink_finance
CONNECT TO 用户 IDENTIFIED BY 密码
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP地址)(PORT = 端口号))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 实例名称)
)
)';-- 13.验证是否已经关联
select * from userinfo@dblink_finance;
-- 14.在中间库创建表结构(以实际为准)
create table F_CREDIT_AMOUNTSETUP asselect *from CREDIT_AMOUNTSETUP@dblink_finance;comment on table F_CREDIT_AMOUNTSETUPis 'aaaa详情表';comment on column F_CREDIT_AMOUNTSETUP.idis '主键';
comment on column F_CREDIT_AMOUNTSETUP.creditcodeis 'aaaa编号';create table F_LOAN_DISCOUNTCONTRACTBILL
as select * from LOAN_DISCOUNTCONTRACTBILL@dblink_finance;
-- Add comments to the table
comment on table F_LOAN_DISCOUNTCONTRACTBILLis 'bbbb表';
comment on column F_LOAN_DISCOUNTCONTRACTBILL.nofficeidis '办事处';
---15. 将指定数据的增量从主库推送到中间库
CREATE OR REPLACE PROCEDURE PROCEDURE_FINANCE_TO_MIDDLE
is ---将指定数据的增量从主库推送到中间库v_day_7 date;v_day_30 date;v_now varchar(30);V_FILE UTL_FILE.FILE_TYPE;V_INPUT CLOB;
BEGIN
select to_char(sysdate, 'yyyy-MM-dd_HH24:mi:ss') into v_now from dual;
V_FILE := UTL_FILE.FOPEN('MONITOR','FINANCE_TO_MIDDLE_' || v_now || '.txt','W');
select (sysdate - 7) into v_day_7 from dual;
select (sysdate - 30) into v_day_30 from dual;delete from F_CREDIT_AMOUNTSETUP;insert into F_CREDIT_AMOUNTSETUPselect * from CREDIT_AMOUNTSETUP@dblink_finance;commit;delete from F_LOAN_DISCOUNTCONTRACTBILL where DTEND > v_day_30;insert into F_LOAN_DISCOUNTCONTRACTBILLselect *FROM LOAN_DISCOUNTCONTRACTBILL@dblink_finance awhere not exists(select id from F_LOAN_DISCOUNTCONTRACTBILL b where a.id = b.id);commit;---- 这里是对结果进行校验,如果输出的表对应值为0,则正常,否则数据丢失
FOR I IN (select diff || ' ' || 'F_CREDIT_AMOUNTSETUP' resultfrom (select ((select count(*) as count1 from F_CREDIT_AMOUNTSETUP) -(select count(*) as count2from CREDIT_AMOUNTSETUP@dblink_finance)) as difffrom dual) aunion allselect diff || ' ' || 'F_LOAN_DISCOUNTCONTRACTBILL' resultfrom (select ((select count(*) as count1from F_LOAN_DISCOUNTCONTRACTBILL) -(select count(*) as count2from LOAN_DISCOUNTCONTRACTBILL@dblink_finance)) as difffrom dual) a) LOOPUTL_FILE.PUT_LINE(V_FILE, I.RESULT);
END LOOP;
UTL_FILE.FCLOSE(V_FILE);
EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Exception happened,all data was rollback');
ROLLBACK;
END;
---16. 首先先执行一次,看看存储过程写的是否正确
--- 如果执行成功,会有success,并且会生成日志文件
exec PROCEDURE_FINANCE_TO_MIDDLE;

--17.先生成定时任务
declareJOB_FINANCE_TO_MIDDLE number;  /*JOB_FINANCIAL_TO_MIDDLE:定时器名称*/BEGINDBMS_JOB.SUBMIT(  JOB => JOB_FINANCE_TO_MIDDLE,  /*自动生成JOB_ID*/  WHAT => 'PROCEDURE_FINANCE_TO_MIDDLE;',  /*需要执行的存储过程名称或SQL语句*/  --NEXT_DATE => sysdate+3/(24*60),  /*初次执行时间-下一个3分钟*/  --INTERVAL => 'trunc(sysdate,''mi'')+100/(24*60)' /*每隔100分钟执行一次*/INTERVAL => 'TRUNC(SYSDATE + 1) + (20*60+10)/(24*60)' /*每天晚上8点10分*/);  commit;end;---18. 查询定时ID,比如找到对应的ID=23
SELECT * FROM user_jobs;-- 19. 开启定时
begindbms_job.run(23); --开启commit;
end;
---20. 如果遇到数据没有增量更新,也就是定时任务没有运行
select value from v$parameter where name like '%job_queue_processes%';---21. 如果小的话,改成100,很可能是因为这个job值太小造成定时任务不运行
alter system set job_queue_processes =100;

Oracle通过定时任务+dblink+存储过程传数据到中间库相关推荐

  1. 从源数据库抽取数据到中间库

    ---------------------------------------------------------------------------------------------------- ...

  2. oracle级plsql安装教程,PLSQL 数据下载库安装使用教程,步骤解析

    安装Oracle数据库 一.首先安装Oracle数据库*64. 二.下载并安装 安装PLSQL Developer 根据计算机的系统位数,从下载的安装包中选择合适的程序,双击"运行" ...

  3. Oracle调用存储过程添加数据记录(包括唯一性判断)

    继续我的文章之旅: 最近一直在Oracle打交道,当然我们也是一些调用采集并不涉及到内部机制.以前听老师说ICBC(爱存不存)后台数据整理,请了一洋鬼子Oracle专家,一小时上万刀!!!听了都让人心 ...

  4. oracle存储过程传整数,oracle存储过程传参数

    场景:Oracle存储过程传参数有关问题 Oracle存储过程传参数问题 在存储过程当中传参数的时候可以使用 IF SDATE IS NOT NULL OR EDATE IS NOT NULL THE ...

  5. ORACLE使用DBLINK导入导出数据

    场景: ORACLE数据库A:172.18.169.81:1521/orcl ORACLE数据库B:127.0.0.1:1521/orcl 要将数据库A的所有数据导入到数据库B. 由于数据量极大,所以 ...

  6. Oracle 定时任务执行存储过程【建议收藏】

    首先用一个完整的例子来实现定时执行存储过程. 任务目标:每小时向test表中插入一条数据. 实现方案: 1.通过 oracle 中 dbms_job 完成存储过程的定时调用 2.在存储过程中完成相应的 ...

  7. oracle exp 无效dblink,【案例】Oracle dblink 数据库连接dblink insert插入数据时异常分析...

    天萃荷净 开发DBA反映在测试数据表插入数据,Oracle dblink两库连接插入同步数据时数据量异常 一.诡异Oracle dblink起源 今天开发拿过来一条sql,说有诡异现象,sql如下 I ...

  8. oracle存储过程之数据增删查改及调用

    本文转载自:https://blog.csdn.net/u011955534/article/details/14647217 原文更易读,请参与原文. 存储过程: 存储过程是 SQL, PL/SQL ...

  9. oracle 存储过程插入数据不成功

    oracle 存储过程插入数据不成功: 最大的一个原因是你定义的变量名和你表字段名相同!在定义的变量名前加个t_,问题就解决了!

最新文章

  1. c#数组赋初值_JavaScript数组的声明、访问和遍历方法
  2. dijkstra算法matlab程序_编程习题课 | 用最短路算法为你的小地图导航
  3. Cognos CFG-ERR-0103 无法启动 IBM Cognos 服务
  4. python3打包exe运行没反应_python selenium运行,打包exe常见问题解决方法
  5. python 操作mongodb数据库参考文档
  6. 安装rtx时报错因计算机中丢失lo,policy.3.1.IntervalZero.RTX64.dll
  7. (55)FPGA基本约束-UCF与XDC(第11天)
  8. 使用PowerShell创建Azure Storage的SAS Token访问Azure Blob文件
  9. WindowsXP 下搭建PHP环境(笔记)
  10. kafak manager + zookeeper + kafka 消费队列快速清除
  11. 服务器和交换机物理连接_连接网络的枢纽,网络交换机详解
  12. JSP——JSP介绍以及运行原理
  13. VMware Workstation 12 pro + 激活码+VMware Workstation 10 + 激活码
  14. ATMEGA128——初探
  15. 安卓4.X的桌面启动器-尖端启动器APEX_我是亲民_新浪博客
  16. 产品运营是什么,如何做产品运营?
  17. WPF做的金山词霸页面
  18. ECCV 2020 目标检测论文大盘点(49篇论文)
  19. Office2013办公软件简体中文专业增强版
  20. 《数据库系统概论》知识整理

热门文章

  1. python单例模式的4种实现方法_Python单例模式的4种实现
  2. A2B音频总线在智能座舱中的应用
  3. 音频设备(1)——Android音频设备
  4. 为啥小扎一直醉心于元宇宙的布局?
  5. 砼匠无人值守称重系统驾驶员操作说明
  6. Django实现简单博客系统
  7. nginx代理应用sso跳转处理
  8. android拍照身份证边框,Android自定义证件拍照控件之CameraCardCrop
  9. Qt配置项目编码格式
  10. Unity粒子系统详解