create database link [name]
connect to [username] IDENTIFIED BY [password]
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = [ip])(PORT = [port]))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xxx)
)
)';
例如:
create public database link dblink_name connect to SYSTEM using '192.168.1.73:1521/oracle';
删除dblink:
DROP DATABASE LINK [name];
--或
DROP PUBLIC DATABASE LINK [name];
今天在试着删除的时候报错:
ORA-02018:database link of same name has an open connection
关闭dblink:
ALTER SESSION CLOSE DATABASE LINK [name];
但是报错:
ORA-02080: database link is in use
去v$dblink查看
SELECT * FROM v$dblink;
该dblink确实没有在transaction,很疑惑。搜一下没找到解决办法,然后把plsql关了,过一会再开,执行ALTER SESSION的时候,报错:
ORA-02080: database link is not open
我知道这时应该可以删除了, 然后再DROP,可以了。
下面是其它网友的补充大家可以参考下:
数据库全局名称可以用以下命令查出:
SELECT * FROM GLOBAL_NAME;
修改可以用以下语句来修改参数值:
ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE; <1>、当数据库参数global_name=false时,就不要求数据库链接名称跟远端数据库名称一样。
Oracle数据库之间进行连接通讯。
创建数据库链接的语法如下:
CREATE [PUBLIC] DATABASE LINK link
CONNECT TO username IDENTIFIED BY password
USING ‘connectstring'
注意:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。
一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。
创建数据库链接时,还可以使用缺省登录方式,即不指定远程数据库的用户名和密码:
create public database link zrhs_link
using ‘zrhs';