赞
踩
OracleDBLink介绍地址
基本信息
Oracle在跨地域库访问,可以通过创建DBLink实现。
环境配置:在tnsnames.ora中配置两个数据库别名:HISDB(用户名:SBHIS 密码:XXX)、PACS(用户名:PACS密码:PACS),在SBHIS中 创建DBLink来访问PACS
第①步:赋予权限
在创建DBLink之前,我们需要判断,登陆的用户是否具备创建DBLink的权限,所以我们执行以下的语句(用SBHIS用户登陆HISDB):
- -- 1.1查看SBHIS 用户是否具备创建DBLink的权限
- Select A.ADMIN_OPTION From user_sys_privs A Where A.Privilege = 'CREATE DATABASE LINK' And A.USERNAME = 'SBHIS';
如果查询有返回行,则表示具备创建DBLink权限,否则,则需要使用sys登陆HISDB为SBHIS 用户赋予创建权限
- -- 1.2给SBHIS 用户授予创建DBLink的权限
- Grant Create Public Database Link To SBHIS;
此时,再执行1.1,查看SBHIS是否具备创建DBLink的权限
第②步;创建DBLink
-- Drop existing database link
Drop Public Database Link PACS;
-- Create database link
Create Public Database Link PACS
Connect to PACS Identified By PACS
Using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SB.SB.SB.SB)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=PACS)))';
这样,就完成了简单DBLink简单的创建
第③步:业务处理
3.1首先,我们需要在HISDB库中新建一张复制表,并编写存储过程同步数据,如下图:
3.2现在,我们通过DBLink在创建存储过程同步数据
- CREATE OR REPLACE Procedure Zl100_UserJob同步PACS As
- --功能:同步三方PACS数据
- --作者 中联西安-王大圣 wsfeng@zlsoft.cn iwangshengfeng@163.com
- --时间:2021-02-22
- n_count Number(10);
- Begin
- --获取昨日的PACS数据
- For r_item In (Select ACCNO, PATTYPE, IDCARD
- From ris.viewrisordertohis@RIS A
- Where A.reportdt Between
- To_Char(Sysdate - 1, 'yyyy-MM-dd') || ' 00:00:00' And
- To_Char(Sysdate - 1, 'yyyy-MM-dd') || ' 23:59:59')
- Loop
- --查找是否存在数据
- Select Count(1)
- Into n_count
- From PACSHISTORY A
- Where A.ACCNO = r_item.ACCNO;
- --不存在则插入
- If n_count >= 1 Then
- Delete PACSHISTORY A Where A.ACCNO = r_item.ACCNO;
- End If;
-
- Insert Into PACSHISTORY
- (ACCNO, PATTYPE, IDCARD)
- Values
- (r_item.ACCNO, r_item.PATTYPE, r_item.IDCARD);
- End Loop;
-
- Exception
- When Others Then
- zl_ErrorCenter(Sqlcode, Sqlerrm);
- End;
大功告成...
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。