设为首页 加入收藏

TOP

oracle建立dblink以及建立定时任务
2015-07-24 10:33:24 来源: 作者: 【 】 浏览:1
Tags:oracle 建立 dblink 以及 定时 任务

最近在弄一个事,具体是我们要定时插数据到别人的数据库的中间表里

首先要做的是建立一个到对方数据库的oracle dblink,这是为了可以访问他们的数据库,这样我们才能将数据插入到他们中间表。所以我们需要他们中间表的数据库的IP、用户、密码、中间表的表名,具体可以查看数据库安装路径下的\product\10.2.0\client_1\network\admin\tnsnames.ora文件

例如:

TestDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.27.21)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = TESTDB) TESTDB -------- 实例名
)
)

在PL/SQL工具里输入:

create database link link名称

connect to 对方数据库用户名 identified by 对方数据库用户密码
using '对方数据库ip:端口/实例名';

例如:

create database link DLTEST
connect to PMS identified by PMS
using '176.2.39.25:1521/TESTDB';

可用 select * from dual@DLTEST; 来测试是否连接成功

\

通过select * from 表名@DLTEST; 来访问该数据库表<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+1eLR+aOsztLDx7XEb3JhY2xlIGRibGlua77NtLS9qLPJuabBy6OsvdPPwsC00OjSqrS0vajSu7j2tqjKscjOzvHAtMO/zOyw0dfUvLq1xLHtyv2+3bLlyOu1vbbUt721xNbQvOSx7cDvoaM8L3A+Cgo8cD6y6dGvuMNkYmxpbmvPwsr9vt2/4rXEy/nT0LHto7pzZWxlY3QgdGFibGVfbmFtZSBmcm9tIHVzZXJfdGFibGVzQERMVEVTVDs8L3A+CjxwPsm+s/1kYmxpbmujukRST1AgUFVCTElDIERBVEFCQVNFIExJTksKCkRMVEVTVDs8L3A+CjxwPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9wPgo8cD48L3A+CjxwPgrV4rj2yrG68m9yYWNsZbXEtqjKsda00NDIzs7xSk9Czt7SycrHztK1xNfuvNHRodTxoaPO0rDRzayyvbXEvcWxvrfF1NrSu7j2tOa0orn9s8zW0KOsyLu689Taucy2qLXEyrG85Mil1rTQ0NXiuPa05rSiuf2zzL7NT0vBy6GjPC9wPgrA/cjno7oKPHA+Q1JFQVRFIE9SIFJFUExBQ0UgUFJPQ0VEVVJFIGRpbmdzaGl0ZXN0X3Byb2MgIElTPGJyPgpCRUdJTjxicj4KICBJTlNFUlQgSU5UTyAKse3D+0BETFRFU1Qgc2VsZWN0ICogZnJvbSDX1Ly6se07PGJyPgogIENPTU1JVDs8YnI+CkVYQ0VQVElPTjxicj4KICBXSEVOIE9USEVSUyBUSEVOPGJyPgogICAgREJNU19PVVRQVVQuUFVUX0xJTkUo"Exception happened,data was rollback');
ROLLBACK;
END;

接下来定制定时任务,

假设我们要每隔两分钟向表 表名@DLTEST 中插入一条记录,这里我们只需要每隔2分钟执行一次存储过程dingshitest_proc即可。

在PL/SQL的command window输入以下语句:

SQL> var job_num number;
SQL> begin
2 dbms_job.submit(:job_num,'dingshitest_proc;',SYSDATE,'sysdate+1/24/60');
3 end;
4 / ------------以/作为结束

\

执行完后一定要记得点击提交按钮,

查看定时任务:select * from dba_jobs a where a.WHAT like "%dingshitest_proc%';

删除定时任务:在命令窗口下执行SQL> exec dbms_job.remove(961);


下面来讲讲定时任务的时间间隔怎么算的。

第一种调度任务需求的日期算法比较简单,即'SYSDATE+n',这里n是一个以天为单位的时间间隔。

描述 Interval参数值
每天运行一次 'SYSDATE + 1'
每小时运行一次 'SYSDATE + 1/24'
每10分钟运行一次 'SYSDATE + 10/(60*24)'
每30秒运行一次 'SYSDATE + 30/(60*24*60)'
每隔一星期运行一次 'SYSDATE + 7'
不再运行该任务并删除它 NULL

第二种调度任务需求相对于第一种就需要更复杂的时间间隔(interval)表达式


描述 INTERVAL参数值
每天午夜12点 'TRUNC(SYSDATE + 1)'
每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每星期六和日早上6点10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇oracle数据库常用命令 下一篇oracle12c学习之三nocdb转换成pdb

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·TCP/UDP协议_百度百科 (2025-12-26 12:20:11)
·什么是TCP和UDP协议 (2025-12-26 12:20:09)
·TCP和UDP详解 (非常 (2025-12-26 12:20:06)
·Python 教程 - W3Sch (2025-12-26 12:00:51)
·Python基础教程,Pyt (2025-12-26 12:00:48)