如何创建从SQL到Oracle的DBlink

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建从SQL到Oracle的DBlink相关的知识,希望对你有一定的参考价值。

参考技术A 1、利用Net Manager创建服务,具体步骤如下图片所示:
打开Oracle安装客户端的时候所装好的Net Manager

输入网络服务名,可以随便输入

选择TCP/IP(Internet协议)

在这里,主机名可以输入IP地址,不过如果IP不确定,且可能会经常变动的话,输入主机的名字也可以;输入完主机名字后,输入oracle的端口号,如下所示:

输入SID:

用oracle的用户名和密码进行测试

如果测试成功,则关闭当前画面,注意要保存哦!

完成这个步骤,会在tnsnames.ora中产生连接所需要的信息,例如服务器IP、SID,端口号等。

2、此时,oracle的信息已经基本上OK了,此时需要做的就是建立DBlink了。具体步骤如下所示:
打开SQL Management Studio,如下所示来建立Link Server:

点击上图中的New Linked Server,出现以下画面:

按照上图中的信息输入,其中Linked server可以随便填写,Provider则固定选我图中的OLE DB,Product Name处填入之前在Oracle的Net Manager中输入的名字,Data Source也填入Net Manager中输入的名字。完成后切换到Security页签,如下图所示:

注意在上图中的最下面选择“Be made using this security context”,然后在remote login处输入oracle的用户名,在with password中输入该用户名对应的password,完成后保存即可。

3、上面的设定都已经完成好之后,下面就是验证是否成功了。验证的时候,只要直接写一个sql查询oracle中的资料即可,如下所示:

注意在上图中,from的后面,table的名字要在前面加上linked server的名字,然后后面有两个小点,再然后才是oracle中用户的名字,最后就是表的名字了。其中特别需要注意的时候,用户的名字和表的名字都是要全部大写的。
关于第二步中,在SQL可视化工具中的操作也可以通过以下SQL来进行:
EXEC master.dbo.sp_addlinkedserver @server = N'link_peter_oracle',@srvproduct = N'peter_oracle', @provider = N'MSDAORA', @datasrc = N'peter_oracle',@provstr = N'User ID=scott;Password=tiger'--其中@srvproduct、@datasrc写实例名;@provstr为oracle的用户名和密码

oracle创建dblink方法

当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。下面讲介绍如何在本地数据库中创建dblink.

  创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的权限,以sys用户登录到本地数据库:

  select * from user_sys_privs t

  where t.privilege like upper(‘%link%‘);

  1 SYS CREATE DATABASE LINK NO

  2 SYS DROP PUBLIC DATABASE LINK NO

  3 SYS CREATE PUBLIC DATABASE LINK NO

  可以看出在数据库中dblink有三种权限CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了),CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用),DROP PUBLIC DATABASE LINK。

  在sys用户下,把CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK权限授予给你的用户

  grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott;

  然后以scott用户登录本地数据库

  1.创建dblink的第一种方式,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库。

  create public database link

  to_bylw connect to scott identified by tiger using ‘bylw‘;

  其中to_bylw是你创建的dblink名字,bylw是远程数据库的实例名,scott/tiger是登录到远程数据库的用户/密码。然后在本地数据库中通过dblink访问远程数据库‘bylw‘中scott.tb_test表,sql语句如下所示

  select * from [email protected]_bylw;

  2.创建dblink的第二种方式,是在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库,

  create database link to_test

  connect to scott identified by tiger

  using ‘(DESCRIPTION =

  (ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))

  )

  (CONNECT_DATA =

  (SERVER = DEDICATED)

  (SERVICE_NAME = bylw)

  )

  )‘;

  第二种是把第一种配置在tnsnames.ora文件中的信息,直接放在创建dblink语句后面。第一种情况tnsnames.ora文件中信息如下:

  bylw =

  (DESCRIPTION =

  (ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))

  )

  (CONNECT_DATA =

  (SERVER = DEDICATED)

  (SERVICE_NAME = bylw)

  )

  )

以上是关于如何创建从SQL到Oracle的DBlink的主要内容,如果未能解决你的问题,请参考以下文章

创建 SSIS 包 - 将数据从 Oracle 复制到 SQL Server

如何从 oracle sql 中的一个列结构创建多个列的视图?

Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012

如何从 Oracle SQL Developer 解决 ORA-65096?

如何从 Windows 批处理执行驻留在 Oracle APEX 上的 SQL 脚本

如何从SQL Server迁移大批量数据到Oracle