更新时间: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

相关文档