当前位置: 首页 > ops >正文

【Oracle】创建公共数据连接

需求描述

两个oracle数据库,想从B数据库创建视图脚本访问A数据库相关表的数据,该怎么访问呢?

解决方法

在Oracle数据库中,创建公共数据库链接(Public Database Link)可以允许数据库中的任何用户访问远程数据库。

在B数据库中(一定是在B数据库中)执行创建连接的脚本,使用以下语法创建公共数据库链接:

CREATE PUBLIC DATABASE LINK remote_db_link
CONNECT TO remote_username IDENTIFIED BY "remote_password"
USING 'remote_tns_name';

参数说明:

  • remote_db_link:数据库链接名称(自定义,如 sales_db)。

  • remote_username:远程数据库的用户名(即A库的用户名)。

  • remote_password:远程用户的密码(即A库的密码)。

  • remote_tns_name:远程数据库的 TNS 连接描述符(配置在 tnsnames.ora 中)。

 或者直接指定连接信息(无需TNS),如下:

CREATE PUBLIC DATABASE LINK remote_db_link
CONNECT TO remote_username IDENTIFIED BY "remote_password"
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=remote_host)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=remote_service_name)))';

参数说明:

  • HOST:远程数据库的ip(即A库的数据库ip)。

  • PORT:远程数据库的端口号(即A库的端口号,数据库默认端口为1521,具体看项目的配置)。

  • SERVER_NAME:远程数据库的服务名(即A库的服务名,默认是orcl,具体看项目的配置)。

具体配置实例如下:

CREATE PUBLIC DATABASE LINK link_name_suibianqi
CONNECT TO my_test IDENTIFIED BY "my123456"
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.168.xx.xx)(PORT=51521))(CONNECT_DATA=(SERVICE_NAME=orcl)))';

注意:要有创建连接的权限(CREATE PUBLIC DATABASE LINK)或者使用系统管理员权限。

这样就可以在B数据库中访问A数据库的内容,访问方式为:

select * from a_table@link_name_suibianqi

其中:a_table为A库的数据表;

开发代码

参考文章

https://yr7ywq.smartapps.baidu.com/?content_id=6e4c521&word=Oracle%2B%E5%88%9B%E5%BB%BA%E5%85%AC%E5%85%B1%E6%95%B0%E6%8D%AE%E8%BF%9E%E6%8E%A5&_chatQuery=Oracle%20%E5%88%9B%E5%BB%BA%E5%85%AC%E5%85%B1%E6%95%B0%E6%8D%AE%E8%BF%9E%E6%8E%A5&searchid=16684570166696473139&_chatParams=%7B%22chat_no_login%22%3Atrue%2C%22agent_id%22%3A%22c816%22%2C%22content_build_id%22%3A%226e4c521%22%2C%22from%22%3A%22q2c%22%2C%22token%22%3A%22uutwWciT6qN1bai7ShhgJhD6QMg9RAQYyU8LacbDbjEeuBMmyNf%2FFqvS3HQ2frFADtVRT8gDFD0GiZN%2FmNx0k%2FzAnm3tGwuntlZhiEflriY2E78G3ObnVQWdrvqoZxmTKbT7%22%7D&_swebScene=3711000610000000

https://blog.csdn.net/weixin_45833902/article/details/143301216 

http://www.xdnf.cn/news/8376.html

相关文章:

  • Jouier 普及组十连测 R3
  • 【人工智能】低代码-模版引擎
  • Pluto实验报告——基于2ASK的简易的通信系统
  • 常见激活函数
  • debug一个cpu频率一直最低的问题
  • PyTorchviz 和 Graphviz:可视化 PyTorch 模型的利器
  • 第九天的尝试
  • LNCS-2009《Adaptive Sampling for $k$-Means Clustering》
  • postgresql 常用参数配置
  • Pytorch中文文本分类
  • 科技化企业展厅需关注哪些前沿技术?互动设计如何提升用户体验?
  • wsl2 不能联网
  • 二次开发系列(二):从基础到进阶,用类定义实现自定义属性面板的高阶功能
  • 【MySQL】第6节|深入理解Mysql事务隔离级别与锁机制
  • 图形推理_
  • Kotlin协程优化Android ANR问题
  • AI-02a5a8.神经网络-与学习相关的技巧-超参数的验证
  • Linux中的tty与login之间的关系
  • Linux系统常用指令
  • CMake指令:option()
  • 代码讲解Java线程转换
  • 达梦数据库-学习-21-C 外部函数
  • 使用vscode MSVC CMake进行C++开发和Debug
  • 智能指针
  • 20250523在荣品的PRO-RK3566开发板的Android13下解决千兆网异常的问题【硬件部分】
  • 【算法系列】协同过滤算法
  • 通过vue-pdf和print-js实现PDF和图片在线预览
  • bi平台是什么意思?bi平台具体有什么作用?
  • Unreal渲染源码简读(一)RHI/Shader
  • MacOS Docker 启动 RustDesk Server OSS