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

oracle通过dblink 连接pg数据库

1.Oracle服务器安装odbc(全在oracle服务端操作)

源端目标
192.168 .75.129192.168.75.131
yum install -y unixODBC unixODBC-devel postgresql-odbc

2.验证odbc安装

[oracle@pg01 admin]$ odbcinst -q -d
[PostgreSQL]
[MySQL]
[FreeTDS]
[MariaDB][oracle@pg01 admin]$ odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/oracle/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

3.配置odbc源(按照自己所需配置)

vi /etc/odbc.ini
[appdb]
Description = PostgresSQLODBC
Driver = /usr/lib64/psqlodbc.so
Database = appdb
Servername = 192.168.75.131
UserName = appuser
Password = 1qaz@WSX
Port = 5666
ReadOnly = 0
ConnSettings = set client_encoding to UTF8

4.测试ODBC连接

[root@pg01 pgdata]# isql -v appdb
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select count(*) from employee;
+---------------------+
| count               |
+---------------------+
| 3                   |
+---------------------+

5.创建配置文件

vi /opt/oracle/product/23ai/dbhomeFree/hs/admin/initappdb.oraHS_FDS_CONNECT_INFO =appdb
set ODBCINI = /etc/odbc.ini
HS_FDS_TRACE_LEVEL = 255
HS_FDS_SHAREABLE_NAME =/usr/lib64/libodbc.so
HS_NLS_NCHAR = UCS2
HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
HS_RPC_FETCH_REBLOCKING=OFF
HS_FDS_FETCH_ROWS=1

注意:initappdb.ora 该名字要同odbc.ini 中的数据源名称如[appdb]

6.配置tns与监听

vi /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
appdb =(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.129)(PORT=1522))(CONNECT_DATA=(SID=appdb))(HS=OK)
)vi /opt/oracle/product/23ai/dbhomeFree/network/admin/listener.ora
LISTENER_HS =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = pg01)(PORT = 1522))))SID_LIST_LISTENER_HS=(SID_LIST=(SID_DESC=(SID_NAME=appdb)(ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree)(PROGRAM=dg4odbc)))

7.启动监听

[oracle@pg01 admin]$ lsnrctl start  LISTENER_HSLSNRCTL for Linux: Version 23.0.0.0.0 - Production on 19-JUN-2025 13:18:53Copyright (c) 1991, 2024, Oracle.  All rights reserved.Starting /opt/oracle/product/23ai/dbhomeFree/bin/tnslsnr: please wait...TNSLSNR for Linux: Version 23.0.0.0.0 - Production
System parameter file is /opt/oracle/product/23ai/dbhomeFree/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/pg01/listener_hs/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pg01)(PORT=1522)))Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=pg01)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_HS
Version                   TNSLSNR for Linux: Version 23.0.0.0.0 - Production
Start Date                19-JUN-2025 13:18:53
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/23ai/dbhomeFree/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/pg01/listener_hs/alert/log.xml
Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pg01)(PORT=1522)))
Services Summary...
Service "appdb" has 1 instance(s).Instance "appdb", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

8.oracle 中创建dblink

SQL> create database link a connect to "appuser" identified by "1qaz@WSX" using 'appdb';Database link created.

9.验证查询

SQL> select count(1) from "employee"@a;COUNT(1)
----------3

注意:如遇如下报错可opt/oracle/product/23ai/dbhomeFree/hs/log 排查相关错误信息

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ORA-02063: preceding line from A
http://www.lqws.cn/news/443251.html

相关文章:

  • 使用 Prometheus 访问 TDengine ---
  • OpenCV——直方图与匹配
  • Postman 的 Jenkins 管理 - 手动构建
  • OpenCV指定pid和vid通过MSMF打开摄像头
  • Spring AOP @Before (前置通知): 在目标方法执行前做什么?
  • 智能家居HA篇 二、配置Home Assistant并实现外部访问
  • android 省市区联动选择
  • 计算机视觉阶段一:CV入门基础
  • Xsens动作捕捉技术用于研究机器人的运动控制、姿态调整以及人机交互
  • .NET 的配置系统
  • 【Mini-F5265-OB开发板试用测评】2、PWM驱动遥控车RX2接收解码带马达驱动控制IC
  • 华为OD机试_2025 B卷_构成正方形数量(Python,100分)(附详细解题思路)
  • 如何获取Java对象的大小
  • MQTT 消息队列传输协议(Message Queuing Telemetry Transport)
  • 【深度学习】生成对抗网络(GANs)深度解析:从理论到实践的革命性生成模型
  • 优化 Python 爬虫性能:异步爬取新浪财经大数据
  • 46道Jenkins高频题整理(附答案背诵版)
  • Jenkins通过Pipeline流水线方式编译Java项目
  • IP 地理库的使用指南:从基础应用到深度实践​
  • Redis 持久化机制详解:RDB、AOF 原理与面试最佳实践(AOF篇)
  • IntersectionObserver API应用场景示例代码详解
  • 医疗低功耗智能AI网络搜索优化策略
  • jquery 赋值时不触发change事件解决——仙盟创梦IDE
  • Kafka性能压测报告撰写
  • Outlook邮箱开通发信服务及OAuth2验证开通
  • 靶场(二十五)---小白心得靶场体会---Access
  • 基于Python+PySide6构建的夸克网盘批量工具,支持批量转存与分享
  • 使用NPOI库导出多个Excel并压缩zip包
  • Qt 解析复杂对象构成
  • 基于C#的Baumer相机二次开发教程