如何在两个 Oracle 实例之间创建数据库链接。假设 A 和 B 是两个实例。我想从实例 A 访问实例 B 中的数据。
6 回答
如果您想从实例 A 访问实例 B 中的数据。那么这就是查询,您可以编辑各自的凭证。
CREATE DATABASE LINK dblink_passport
CONNECT TO xxusernamexx IDENTIFIED BY xxpasswordxx
USING
'(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=xxipaddrxx / xxhostxx )
(PORT=xxportxx))
(CONNECT_DATA=
(SID=xxsidxx)))';
执行此查询访问表后
SELECT * FROM tablename@dblink_passport;
您可以执行任何操作 DML、DDL、DQL
作为一个简单的例子:
创建数据库链接_dblink_name_ 连接到_用户名_ 由_passwd_识别 使用“$_ORACLE_SID_”
更多信息: http ://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm
创建数据库链接
CREATE DATABASE LINK dblinkname
CONNECT TO $usename
IDENTIFIED BY $password
USING '$sid';
(注意: sid 在上面的单引号之间传递。)
上述数据库链接的示例查询
select * from tableA@dblinkname;
insert into tableA(select * from tableA@dblinkname);
创建 DB 链接后,如果这两个实例存在于两个不同的数据库中,那么您需要在 A 机器上设置一个 TNS 条目,以便它解析 B。查看此处
有几种方法可以创建数据库链接:
- 使用 tnsnames:
步骤1:
将目标数据库服务详细信息添加到源的 tns 名称中:
<addressname> =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = <hostname of target db>)(Port = <port of target db listener>))
)
(CONNECT_DATA =
(SERVICE_NAME = <service name of target db>)
)
)
第2步:
数据库链接可以是公共的或私有的。公共数据库链接是任何用户都可以使用的链接。私有数据库链接只能由数据库链接的所有者使用。
以下是创建私有和公共数据库链接的命令:
公共数据库链接
CREATE PUBLIC DATABASE LINK <dbklink name>
CONNECT TO <target db userschemaname>
IDENTIFIED BY <target db userschemapassword>
USING '<addressname defined in tns>';
私人数据库链接
连接到我们需要私有数据库链接的用户模式:
CREATE DATABASE LINK <dbklink name>
CONNECT TO <target db userschemaname>
IDENTIFIED BY <target db userschemapassword>
USING '<addressname defined in tns>';
- 使用完整的连接字符串。
CREATE DATABASE LINK dblink
CONNECT TO <target db userschemaname> IDENTIFIED BY <target db userschemapassword>
USING '(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname of target db>)(PORT=port of target db listener))
(CONNECT_DATA=(SERVICE_NAME=<service name of target db>))
)';
cdb 配置步骤相同
创建数据库链接 NAME 使用 'SID' 连接到由 PASSWORD 标识的 USERNAME;
指定 SHARED 以使用单个网络连接来创建可以在多个用户之间共享的公共数据库链接。如果指定 SHARED,则还必须指定 dblink_authentication 子句。
指定 PUBLIC 以创建可供所有用户使用的公共数据库链接。如果省略此子句,则数据库链接是私有的并且仅供您使用。