更新时间:2026-10-21 GMT+08:00
CREATE DATABASE LINK
功能描述
创建DATABASE LINK对象。
注意事项
- DATABASE LINK详细说明请参见《开发指南》中“特性使用指导 > DATABASE LINK”章节。
- DATABASE LINK特性只能在ORA兼容模式数据库下使用。
- 禁止通过使用DATABASE LINK的方式连接初始用户,禁止初始用户创建、修改和删除DATABASE LINK对象。
- 创建DATABASE LINK对象时,不会对其是否可连接成功进行验证,如果创建过程中缺乏相关关键字,可能会在使用时报错。
- 升级未提交情况下无法创建使用DATABASE LINK。
- 非透明多写特性下,使用本机IP及对应端口可连接当前实例数据库。由于CN和DN可能分布在不同服务器中,建议host参数不要使用127.0.0.1和localhost,可能会出现连接失败的情况。
语法格式
CREATE [ PUBLIC ] DATABASE LINK dblink
[ CONNECT TO { CURRENT_USER | 'user' IDENTIFIED BY 'password' } ] [ USING ( {option 'value'} [, ...]) ]; 其中option为:
1 | { HOST | PORT | DBNAME | FETCH_SIZE } |
参数说明
- PUBLIC
指定创建对所有用户可见的公共数据库连接。如果未指定,则为私有的数据库连接,仅对当前用户可用。
- dblink
创建的DATABASE LINK的名称。
- user
创建的DATABASE LINK连接远程数据库使用的用户名。
- password
创建的DATABASE LINK连接远程数据库使用的用户对应的密码。
- CURRENT_USER
使用当前数据库初始用户名和空密码连接。
当前版本指定CURRENT_USER选项后,可正常创建DATABASE LINK,但该连接无法正常使用。
- USING ( {option 'value'} [, ... ] )
可选。USING可选择指定要连接的数据库的IP地址、端口号、远程数据库名称等参数,支持的options包括:
- host:指定连接的数据库IP地址,不指定时默认为空。可以指定多个IP地址,以逗号(,)进行分隔,当前不支持密态数据库和SSL设置和证书认证。
- port:指定连接的端口号,不指定时默认为5432。
- dbname:指定连接的数据库名称,不指定时默认为连接远程使用的用户名。
- fetch_size:从远程每次获取数据量大小,取值范围为[0, 2147483647],默认值为100。
示例
-- 创建一个兼容性为ORA的数据库。 gaussdb=# CREATE DATABASE ora_test_db DBCOMPATIBILITY 'ORA'; CREATE DATABASE -- 切换数据库。 gaussdb=# \c ora_test_db -- 创建拥有系统管理员权限的用户。 ora_test_db=# CREATE USER local_user WITH SYSADMIN PASSWORD '********'; CREATE ROLE ora_test_db=# SET ROLE local_user PASSWORD '********'; SET -- 创建私有DBLink,host也可以是IPv6地址。 ora_test_db=> CREATE DATABASE LINK private_dblink CONNECT TO 'remote_user' IDENTIFIED BY '********' USING (host '***.***.***.***',port '*****',dbname 'remote_db'); CREATE DATABASE LINK -- 删除私有DBLink。 ora_test_db=> DROP DATABASE LINK private_dblink; DROP DATABASE LINK -- 创建公共DBLink,host也可以是IPv6地址。 ora_test_db=> CREATE PUBLIC DATABASE LINK public_dblink CONNECT TO 'remote_user' IDENTIFIED BY '********' USING (host '***.***.***.***',port '*****',dbname 'remote_db'); CREATE DATABASE LINK -- 删除公共DBLink。 ora_test_db=> DROP PUBLIC DATABASE LINK public_dblink; DROP DATABASE LINK -- 删除创建出的用户。 ora_test_db=> RESET ROLE; RESET ora_test_db=# DROP USER local_user; DROP ROLE -- 切换回初始数据库,并删除测试数据库。请用真实的数据库名替换postgres。 ora_test_db=# \c postgres gaussdb=# DROP DATABASE ora_test_db; DROP DATABASE
父主题: C