databaselink(Oracle创建Database Link的两种方式详解)
一、1.sql server 通过db link 怎么访问oracle
一、创建sqlserver链接服务(sqlserver链接oracle)
首先sqlserver链接oracle可以通过两个访问接口:
“MSDAORA”和“OraOLEDB.Oracle”
1、“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的,这里建议不使用此接口进行链接。通过该访问接口建立的链接服务器在进行查询oracle表(带数据类型CLOB、BLOB字段)时会报这个错误
技术分享
“
链接服务器""的 OLE DB访问接口"MSDAORA"返回了消息"发生了一个 Oracle错误,但无法从 Oracle中检索错误信息。"。
链接服务器""的 OLE DB访问接口"MSDAORA"返回了消息"数据类型不被支持。"。
消息 7321,级别 16,状态 2,第 1行
准备对链接服务器""的 OLE DB访问接口"MSDAORA"执行查询"select* from SYS_MESSAGE"时出错。”
链接服务器"LINK2ORACLE"的 OLE DB访问接口"MSDAORA"为列提供的元数据不一致。对象""CMCC"."OS2_GIS_CELL""的列"ISOPENED"(编译时序号为 20)在编译时有 130的"DBTYPE",但在运行时有错。
2、“OraOLEDB.Oracle”访问接口是由oracle的Oracle Probider for OLE DB驱动提供的。它解决了两个数据库类型不一致的的问题。而且如果需要使用分布式事务,必须使用它来创建链接服务器。后文会有详细介绍。
在创建之前,在SQLSERVER中,链接服务器->访问接口->OraOLEDB.Oracle->右键属性,选中"Allow inprocess"(中文为:允许进程内)
这一步是使我们选择的OraOLEDB.Oracle接口打开执行操作。如未设置会报如下错误:
“无法初始化链接服务器"null"的 OLE DB访问接口"OraOLEDB.Oracle"的数据源对象"
二、oracle需要创建dblink给什么权限
创建全局 DBLink,用户需要有创建 dblink的权限。
查询用户的dblink的权限:
select*fromuser_sys_privswhereprivilegelikeupper('%DATABASELINK%');
给需要使用 sysdba角色的用户赋权:
grantcreatepublicdatabaselinktodbusername;
使用已赋权的用户登录 PL/SQL,使用命令:
createdatabaselink数据库链接名connectto用户名identifiedby密码using'本地配置的数据的实例名';
扩展资料:
查询数据:
selectxxxFROM表名@数据库链接名;
删除 DBLink:
drop/*public*/databaselinkdblink1;
创建和删除同义词:
createorreplaceview视图名as(select字段from用户.表名@dblink1);
dropview视图名;
三、oracle 局域网之间的库 datalink怎么创建
当需要在两个Oracle库中取数据进行比较或更新时,就会用到DataLink。
建立方法如下:
Create dababase link连接名@限定词 connect to数据库用户 identified by密码 using服务名.;
建立时需要注意以下问题:
一、global_names参数
在服务器上创建远程连接,则需要根据服务器中的global_names参数情况来创建DBLink:
a.如果Global_names=true,则创建的远程连接必需设置如下:
1、创建的连接名必需是目标数据库中的global_name的值,可以通过:select* From global_name的方式进行获取。
2、如果目标数据库和发起连接的数据库在同一台机器上,则需要在创建的远程连接名后加@和限定词。其格式如上,否则不用加“@限定词”
b.如果global_names=false,则创建的远程连接需设置如下:
1、连接名可以任意取。
2、如果连接名取成了与目标数据库实例名或global_name值相同时,而且目标数据库和发起连接的数据库在同一台机器上,也必需加上连接限定词。