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 [email protected];   来测试是否连接成功

通过select * from 表名@DLTEST; 来访问该数据库表

这样,我们的oracle dblink就创建成功了,接下来需要创建一个定时任务来每天把自己的表数据插入到对方的中间表里。

查询该dblink下数据库的所有表:select table_name from [email protected];

删除dblink:DROP PUBLIC DATABASE LINK

DLTEST;

--------------------------------------------------------------------------

这个时候oracle的定时执行任务JOB无疑是我的最佳选择。我把同步的脚本放在一个存储过程中,然后在固定的时间去执行这个存储过程就OK了。

例如:

CREATE OR REPLACE PROCEDURE dingshitest_proc  IS

BEGIN

INSERT INTO
表名@DLTEST select * from 自己表;

COMMIT;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‘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)‘
时间: 2024-11-05 12:22:07

oracle建立dblink以及建立定时任务的相关文章

Oracle建立DB-LINK

Oracle建立DB-LINK 测试条件 两台服务器 远程:IP:192.168.0.18,SID: usertest,用户名:usertest,密码:123456 本地:IP: 192.168.8.90,SID: wjn,用户名:userwjn,密码:mosquito0 参数设置 1.     查看数据库global_name 执行select * from global_name; 远程数据库18返回: USERTEST.US.ORACLE.COM 本地数据库90返回: DB_WJN.REG

oracle快速建立DBLink的sql语句

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/43764267 正常建立dblink时需要目标端开启监听,源端配置tns,然后还需要查看目标端的数据库GLOBAL_NAMES相关配置,感觉比较繁琐,现整理一个简单的方式,使用手工的方式建立tns,自主命名连接名,所有都在一个模板里,sql如下所示: create pu

Oracle建立DBLINK的详细步骤记录

测试条件:假设某公司总部在北京,新疆有其下属的一个分公司.在本次测试中,新疆的计算机为本地计算机,即本要的IP地址为:192.168.1.100 北京的总部有一个集中的数据库,其SID是SIDBJ,用户名:userbj,密码:bj123,北京的IP地址是:192.168.1.101.在本地(新疆)的分公司也有一个数据库,其SID是SIDXJ,用户:userxj,密码:xj123,新疆的IP地址是:192.168.1.100.要将本地新疆的SIDXJ数据库中访问到北京的数据库SIDBJ中的数据.也

ORACLE 11g 通过odbc建立连接到mysql库的database link

以前做过在oracle通过gateway建立到sqlserver的database link(详情参见:http://blog.csdn.net/mchdba/article/details/52719278),现在需要无缝访问mysql,所以也需要建立类似这样的连接通道. 1.分配mysql账号 先在mysql库上建立连接账号: GRANT SELECT ON test.* TO [email protected]'192.168.129.%' IDENTIFIED BY 'data_quer

Oracle序列使用:建立、删除

在开始讲解Oracle序列使用方法之前,先加一点关于Oracle client sqlplus的使用,就是如果执行多行语句的话一定要加“/”才能表示结束,并执行!本篇文章的主题是通过创建Oracle序列和触发器实现表的主键自增. 1.首先创建序列,Oracle序列的语法格式为:CREATE SEQUENCE 序列名[INCREMENT BY n][START WITH n][{MAXVALUE/ MINVALUE n|NOMAXVALUE}][{CYCLE|NOCYCLE}][{CACHE n|

建立dblink(database link)

database linke是建立一个数据库到另一个数据库的路径的对象,通过database link可以允许查询远程表,我理解可以算作一种分布式数据库的用法. database link是单向连接,既然它是一种对象,那自然可以在xxx_objects表中查询到相关的信息.建立database link前需要明确几个事情: 1.确认从建立方的server可以访问远程数据库. 2.需要在建立方的tnsnames中配置远程数据库连接串. 3.只有在服务端配置的连接才能在dblink中使用,如果仅是在

Solaris 10(x86)构建Oracle 10g RAC之--建立数据库

Solaris 10(x86)构建Oracle 10g RAC之--建立数据库 系统环境: 操作系统:Solaris 10(x86-64) Cluster: Oracle CRS 10.2.0.1.0 Oracle:  Oracle 10.2.0.1.0 如图所示:RAC 系统架构 四.通过netca建立监听器      对于listener可以通过netca在建库之前建立,也可以在用dbca建库时来建立. Listener建立成功,验证: [[email protected]:/]# crs_

MySQL的FEDERATED引擎实现类Oracle的DBlink

随着业务的复杂度不断的增加.数据库不断的切分,在分布式系统中往往一台或几台数据库并不能满足我们的需求,所以常常需要多台同时时用,而在平时需要通过其它服务器的数据库获取信息最为方便的就是数据链接,而比较常见的如Oracle中的DBlink一般,使用过Oracle的DBlink-数据库的链接的人都知道可以跨服务器数据库的来进行数据查询.而在MySQL5.0以后中通过使用FEDERATED引擎也可以实现类似于Oracle中DBlink,在MySQL5.5开始默认安装只是没有启用,同Oracle的DBl

做一个 initial 小于uniform size的实验,验证 该表建立后:建立了minextents 个uniform size的extents.

做一个 initial  小于uniform size的实验,验证 该表建立后:建立了minextents 个uniform size的extents. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>