Oracle 连接 另一个Oracle数据库 服务器连接
一、场景
两台不同的服务器A、B分别装有不同业务的oracle数据库,因业务需要,现需要将B中test表的数据,定时同步到A中。
二、实现
根据以上场景,我想到了oracle中的dblink,当用户需要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库可以通过创建远程数据库的dblink,实现像访问本地数据库一样访问远程数据库表中的数据。
三、具体操作
1、用sysdba身份登录A服务器oracle,首先确定是否有创建link的权限,执行锁起来:
select * from user_sys_privs t where t.privilege like upper('%link%');
查询结果:SYS CREATE DATABASE LINK NO
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
在数据库中dblink有三种权限
CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了),CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用),
如果没有权限,可通过grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to sysdba赋予权限;
2、配置A服务器oracle的tnsnames.ora,将B数据库的连接配置进来:
TLINK =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.100.100.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle)
)
)
3、创建A-B的dblink:
create public database link alink
connect to scott identified by tiger using 'TLINK';
其中alink是你创建的dblink名字,'TLINK'是远程数据库的实例名,scott/tiger是登录到远程数据库的用户/密码。
4、执行sql,在本地数据库中通过dblink访问远程数据scott.test表,如下示例:
select * from scott.test@alink where 1=1;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端