远程数据库和数据库迁移等都需要使用数据库链接,本文将向你展示如何创建Oracle数据库链接,以避免潜在的陷阱。 数据库链接可能难于操作和创建。那么你该如何创建Oracle数据库链接呢? 数据库链接为本地数据库和远程数据库之间提供连接功能。继续阅读本文,你将了解如何创建Oracle数据库链接,以及如何排除任何潜在的错误。
你创建数据库链接的原因可能有很多种。例如,你可能希望将Oracle数据库链接到非Oracle数据库,或者你希望远程数据库中的数据随着本地数据库更新而更新。下面将介绍创建数据库链接的具体方法。 创建Oracle数据库链接 首先,创建一个指向其他位置的数据库链接。
你可以使用类似如下……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
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获得正确的连接,那么数据库链接应该可以正常工作。
翻译
TechTarget特邀编辑。北京邮电大学计算机科学与技术专业硕士。熟悉软件开发流程,对系统管理,网络配置,数据库应用等方面有深入的理解和实践经验。现就职于IBM(中国)投资有限公司,从事IBM服务器相关软件的开发工作。业余时间喜欢游泳登山,爱健身,喜欢结交朋友。
相关推荐
-
RAD Studio 2010支持Oracle数据库以及.NET环境
RAD Studio 2010是一款非常强大的快速应用开发套件,它用来为本地Windows环境和.NET环境以可视化方式构建GUI密集型,数据驱动的终端用户应用程序。
-
在Oracle 8i中如何进行endian转换
如何将一个Oracle数据库从Solaris Big Endian 8.1.7i版本转换到Windows主机上,并进行endian转换,专家给出了答案。
-
怎样为基于Solaris的Oracle数据库选择Sun服务器
怎样为基于Solaris的Oracle数据库选择Sun服务器?Server A有16 4GHz单一线程处理器,而Server B有16 2GHZ多线程处理器(每个CPU都有8根线),所以我们要在快速……
-
Oracle 推出Exadata
在被限制了数月之后,现在开始打着”X即将到来”的横幅在这里大力宣扬。Oracle 执行总裁Larry Ellison在Oracle全球大会上透露该公司已经进入电脑硬件市场。