Oracle 创建访问 KingbaseES(人大金仓) 的 DBLink
Oracle 原生 DBLink 仅支持 Oracle 之间互通,访问 Kingbase(异构数据库,PostgreSQL 内核) 必须使用:
Oracle 透明网关
Oracle 透明网关
DG4ODBC + Kingbase ODBC 驱动
Oracle 数据库 → DG4ODBC透明网关 → Kingbase ODBC驱动 → 远程Kingbase数据库
1. 安装依赖
- 安装 KingbaseES ODBC 驱动
去金仓官网下载对应版本(V8R6)的 KingbaseES ODBC Driver,安装在Oracle 所在服务器。
- 确认 Oracle DG4ODBC 组件已安装
11gR2 及以上版本默认自带,无需单独下载。
2. 网络要求
Oracle 服务器能 ping 通 Kingbase 服务器 IP + 端口(默认 54321),防火墙放行。
步骤 1:配置 ODBC 系统数据源(连接 Kingbase)
- 打开服务器
ODBC 数据源管理器(64位)→ 切换到 系统 DSN → 添加 - 选择 KingbaseES 8 ODBC Driver → 完成
- 填写配置:
- Data Source Name(数据源名):
KINGBASE_DSN(固定记住这个名字) - Database:Kingbase 数据库名
- Server:Kingbase IP
- Port:54321
- User Name:Kingbase 用户名
- Password:Kingbase 密码
- Data Source Name(数据源名):
- 点击 Test 显示
Connection Successful即配置成功。
步骤 2:配置网关初始化文件
- 找到路径:
$ORACLE_HOME/hs/admin - 新建文件:
initKINGBASE.ora(文件名固定格式:init+DSN 名.ora) - 写入以下配置(直接复制):
HS_FDS_CONNECT_INFO = KINGBASE_DSN # 对应ODBC数据源名
HS_FDS_TRACE_LEVEL = OFF # 关闭日志
HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8
HS_NLS_NCHAR = UCS2
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so # Linux ODBC库路径
步骤 3:配置监听 listener.ora
- 路径:
$ORACLE_HOME/network/admin/listener.ora - 添加以下配置(直接复制):
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = KINGBASE) # 对应init文件名
(ORACLE_HOME = 你的Oracle_HOME路径)
(PROGRAM = dg4odbc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
)
步骤 4:配置 tnsnames.ora
- 路径:
$ORACLE_HOME/network/admin/tnsnames.ora - 添加以下配置:
KINGBASE_LINK = # 自定义服务名
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Oracle服务器IP)(PORT = 1521))
(CONNECT_DATA = (SID = KINGBASE))
(HS = OK) # 关键:开启异构网关
)
步骤 5:重启 Oracle 监听
lsnrctl stop
lsnrctl start
lsnrctl status # 查看监听正常加载dg4odbc即成功
步骤 6:Oracle 中创建 DBLink
用 DBA 权限 执行:
-- 创建dblink(名称自定义,如 to_kingbase)
CREATE DATABASE LINK to_kingbase
CONNECT TO "Kingbase用户名" IDENTIFIED BY "Kingbase密码"
USING 'KINGBASE_LINK'; -- 对应tnsnames.ora里的服务名
测试 DBLink(验证是否成功)
-- 查询Kingbase的表(必须写 schema.表名)
SELECT * FROM 表名@to_kingbase;
-- 示例:查询public下的test表
SELECT * FROM public.test@to_kingbase;
浙公网安备 33010602011771号