九月份入场的新项目,和自家公司另一个部门对接的接口,总是遇到各种坑。。真·生命不息,填坑不止。
前段时间刚做了个接口,谁承想消息里面不带基本的身高、体重信息。找各方协调,就是没有这部分数据。没办法,只好找B系统的同事写了个视图给我们,好在这个B系统也是同家公司的,人好,做事也爽快。
视图写好了,数据也有了,可是怎么将这部分数据查询提取到界面上是个问题。
首先需要明确两点:
1、B系统和我们A系统是搭载的两个独立服务器,意味着数据库地址不同,查询涉及跨库;
2、B系统和我们A系统都是使用的Oracle数据库。
了解以上两点后,查阅资料就能更加带有目的性:Oracle数据库如何实现跨库查询?
Oracle数据库要想实现B库访问A库数据,可以通过建立DBLINK将两个库连接起来。具体实现方式可分为两种:
1、通过plsql的可视化操作实现;
2、通过编写sql脚本实现。
方法一:通过plsql的可视化操作界面实现,具体操作如下:
1)plsql登录B库连接后,file界面-->NEW-->Database link,填写完以下信息后,点击Apply应用即可。
方法二:通过编写sql脚本实现,sql脚本模板如下:
create database link 数据库连接名(随便起)
connect to A库账号 identified by 密码
using ' (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = ( PROTOCOL = TCP ) ( HOST = 域名 ) ( PORT = 端口号 ) )
)
(CONNECT_DATA =
(SERVICE_NAME = A库数据库实例名 )
)
)';
-----------------------------举例----------------------------------
create database link ADBLink
connect to AAccount identified by AAccount_pwd
using ' (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = ( PROTOCOL = TCP ) ( HOST = 127.0.0.1 ) ( PORT = 1521 ) )
)
(CONNECT_DATA =
(SERVICE_NAME = orcl )
)
)';
OK,A、B数据库之间的连接已经创建完成,现在问题就是如何直接在B库中通过这个连接去查询A库中的数据。不卖关子了,查询语句如下:
select * from Atable@创建的数据库连接名;
但是每次查询之后,提交按钮都会亮起来,不清楚Oracle的这种跨库查询方式是否会对数据库性能产生什么影响,等以后遇到了再说吧。
溜了溜了,水完这发再水一发,嘿嘿!