如何创建 Oracle 数据库链接?

日期:2017-6-15作者:Adam Hughes

【TechTarget中国原创】

远程数据库和数据库迁移等都需要使用数据库链接,本文将向你展示如何创建Oracle数据库链接,以避免潜在的陷阱。

数据库链接可能难于操作和创建。那么你该如何创建Oracle数据库链接呢?

数据库链接为本地数据库和远程数据库之间提供连接功能。继续阅读本文,你将了解如何创建Oracle数据库链接,以及如何排除任何潜在的错误。

你创建数据库链接的原因可能有很多种。例如,你可能希望将Oracle数据库链接到非Oracle数据库,或者你希望远程数据库中的数据随着本地数据库更新而更新。下面将介绍创建数据库链接的具体方法。

创建Oracle数据库链接

首先,创建一个指向其他位置的数据库链接。你可以使用类似如下的命令来创建数据库链接:

CREATE DATABASE LINK other_db CONNECT TO scott IDENTIFIED BY tiger USING 'tns_alias';

你可能希望给数据库链接起一个更好的名称。请使用适当的用户ID和密码连接到远程数据库,使用TNS别名配置你的TNSNAMES.ORA文件来指向该数据库。你可以使用一个简单的查询来测试数据库链接是否正常,例如使用以下命令来查询:

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

作者>更多

Adam Hughes
Adam Hughes

TechTarget特约作者

Oracle数据库可用性>更多

相关推荐

技术手册>更多

  • 数据库管理系统选型指南

    理解不同类型的DBMS有哪些特点,以及再何时、何处(场景)使用它们是十分必要的。在这本电子书中,我们就将进行一个详细的介绍,希望能够为您的数据库选型起到帮助、指导作用。

  • SAP HANA实用手册

    在选择SAP HANA的时候,CIO需要关注哪些问题?在产品的选型、实施与上线阶段,都有哪些经验可以借鉴?在本次的TechTarget电子书中,我们将为您一一解读。它也将成为企业选择HANA时,最有实用价值的参考资料。

  • 电子书:如何选择NoSQL数据库

    很多企业关系自己是否应该从传统数据库转到NoSQL数据库,应该选择什么样的数据库?本书详列了相应的技巧和案例,供您参考。

  • 2013数据库工程师薪酬调查报告

    TechTarget数据库网站每两年就会进行一次“数据库工程师薪酬调查”,对不同行业、不同层次的数据库技术从业者的薪酬待遇情况进行一次摸底。

TechTarget

最新资源
  • 安全
  • 存储
  • CIO
  • SOA
  • 虚拟化
  • 服务器
【TechTarget中国原创】

远程数据库和数据库迁移等都需要使用数据库链接,本文将向你展示如何创建Oracle数据库链接,以避免潜在的陷阱。

数据库链接可能难于操作和创建。那么你该如何创建Oracle数据库链接呢?

数据库链接为本地数据库和远程数据库之间提供连接功能。继续阅读本文,你将了解如何创建Oracle数据库链接,以及如何排除任何潜在的错误。

你创建数据库链接的原因可能有很多种。例如,你可能希望将Oracle数据库链接到非Oracle数据库,或者你希望远程数据库中的数据随着本地数据库更新而更新。下面将介绍创建数据库链接的具体方法。

创建Oracle数据库链接

首先,创建一个指向其他位置的数据库链接。你可以使用类似如下的命令来创建数据库链接:

CREATE DATABASE LINK other_db CONNECT TO scott IDENTIFIED BY tiger USING 'tns_alias';

你可能希望给数据库链接起一个更好的名称。请使用适当的用户ID和密码连接到远程数据库,使用TNS别名配置你的TNSNAMES.ORA文件来指向该数据库。你可以使用一个简单的查询来测试数据库链接是否正常,例如使用以下命令来查询:

SELECT sysdate FROM dual@other_db;

@ other_db子句使用你创建的数据库链接。如果该查询返回日期,那么就代表着链接工作正常。设置链接后,你可以设置一个命令,在你修改本地数据库时来修改远程数据库中的数据,或者你可以使用数据库触发器。例如,如果应用程序通过执行类似于以下命令来修改本地数据库:

INSERT INTO my_table VALUES (1,'Two');

接下来,你还可以编写另一个SQL语句,以在数据库链接中插入相同的值。

INSERT INTO my_table@other_db VALUES (1,'Two');

此外,还可以创建触发器。

CREATE TRIGGER modify_remote_my_table BEFORE INSERT ON my_table BEGIN INSERT INTO my_table@other_db VALUES(:new.colA, :new.colB); END; /

你也可以编写类似的触发器来更新和删除行。

远程数据库的数据库链接

还可以使用数据库链接将数据从远程数据库拉到本地数据库。要通过数据库链接提取数据,必须创建一个链接到远程数据库的数据库链接。你可以构造SQL命令将数据插入到本地数据库中,或从远程数据库执行选择查询。例如如下的SQL语句:

INSERT INTO my_local_table (ColA, ColB, ColC) SELECT ColA, ColB, ColC FROM remote_table@remotedb WHERE conditions are true;

在这类情况下,SQL语言是非常强大和灵活的工具。但是你必须编写自己的例程来移动数据。

数据库链接也可以用于部分数据库复制。Oracle复制服务也可以执行此操作,但是在复制数据库的一个小子集时,额外的成本太高了。在这种情况下,你可以使用数据库触发器和链接编写自己的复制例程。

你必须创建自己的触发器,类似于上面那些可以为你执行数据库复制的触发器。

数据库链接用于数据库移徙

你可以使用数据库链接来进行数据库迁移或从一个数据库复制数据到具有相同结构的数据库。要从Oracle9i迁移到Oracle 10g,在目标服务器上创建一个Oracle 10g数据库,并从Oracle 10g数据库创建一个数据库链接到Oracle9i数据库。运行create table作为选择语句,以复制Oracle 10g数据库中的数据。记得要创建任何必需的索引、约束和参照完整性。

此外,你还可以在Oracle数据库和非Oracle数据库之间创建数据库链接,如Microsoft SQL Server或IBM DB2。为了达到这个目的你需要使用Oracle异构服务。

如果在创建数据库链接后遇到错误,请注意必须正确配置TNSNAMES.ORA文件,否则你将遇到ORA - 12154错误(TNS:无法解析服务名)。人们在使用数据库链接时,通常会犯的一个错误是,他们只会查看$ ORACLE_HOME / network / admin的TNSNAMES.ORA文件。这个文件必须驻留在数据库运行的服务器上。请确保将此文件配置到数据库链接的正确位置。使用以下查询命令来测试数据库链接:

SELECT sysdate FROM dual@remotedb;

如果你能获得正确的结果,就证明链接的工作正常。否则,你需要修复相应的错误。

与此同时,ORA - 12505错误仅仅意味着TNS别名中的ORACLE_SID与数据库侦听器定义的ORACLE_SID 不匹配。你必须确保你的TNS别名与侦听器的LISTENER.ORA配置文件相匹配。

要解决ORA - 02068错误,数据库链接需要设置一个TNS别名,这需要你在使用CREATE DATABASE LINK命令时,使用USING子句中指定该别名。在Oracle之外,你需要进行相应的检查确保你可以使用这个TNS别名连接到数据库。使用SQL * Plus,查看是否可以连接到以下远程数据库:

sqlplus system/password@tns_alias

如果执行上面的命令返回同样的错误,那就这意味着TNS别名定义错误,或者实例没有真正运行。如果你可以使用SQL * Plus获得正确的连接,那么数据库链接应该可以正常工作。