数据库 DB Link(数据库链接) 的配置方式取决于你使用的数据库类型。下面我按常见数据库分别说明,重点放在 Oracle(DB Link 最常见的场景),并补充 MySQL / PostgreSQL 的做法。
CREATE DATABASE LINK 权限(或 CREATE PUBLIC DATABASE LINK)在 $ORACLE_HOME/network/admin/tnsnames.ora 中配置:
REMOTE_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
CREATE DATABASE LINK remote_link
CONNECT TO remote_user IDENTIFIED BY "password"
USING 'REMOTE_DB';
CREATE PUBLIC DATABASE LINK remote_link
CONNECT TO remote_user IDENTIFIED BY "password"
USING 'REMOTE_DB';
CREATE DATABASE LINK remote_link
CONNECT TO remote_user IDENTIFIED BY "password"
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))';
SELECT * FROM emp@remote_link;
-- 查看
SELECT * FROM USER_DB_LINKS;
-- 删除
DROP DATABASE LINK remote_link;
-- 或
DROP PUBLIC DATABASE LINK remote_link;
MySQL 没有 DB Link,常用方式:
CREATE TABLE remote_emp (
id INT,
name VARCHAR(50)
)
ENGINE=FEDERATED
CONNECTION='mysql://user:pwd@192.168.1.100:3306/db/emp';
⚠️ 限制:
CREATE EXTENSION dblink;
SELECT *
FROM dblink(
'host=192.168.1.100 port=5432 dbname=test user=pg password=pgpwd',
'SELECT id, name FROM emp'
) AS t(id int, name text);
✅ 网络是否通(telnet / ping)
✅ 防火墙端口是否开放
✅ 用户名密码是否正确
✅ Oracle 中 Service Name 是否写错
✅ 是否缺少权限
如果你能告诉我:
我可以给你更具体的配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。