【SQL Server数据迁移】64位的机器:SQL Server中查询ORACLE的数据
从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 、64位的机器和软件,
需要用不同的驱动程序来实现。
在64位的机器上,通过访问接口:OracleProvide for OLE DB,来实现。
1、机器环境和软件环境
操作系统是:windows 7旗舰版 64位,SQL Server 20008R2 64 位,Oracle 11g 11.2.0.1.0 64 位。
2、ORACLE环境的设置
连接oracle,修改scott用户的密码为tiger,并给账户解锁,尝试登录,查询表:
C:\Users\Administrator>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1. Production on 星期四 3月 :: Copyright (c) , , Oracle. All rights reserved. 连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1. - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> alter user scott identified by tiger; 用户已更改。 SQL> alter user scott account unlock; 用户已更改。 SQL> connect scott/tiger
已连接。
SQL> select count(*) from emp;
COUNT(*)
----------
查看listener.ora是否正确:
# listener.ora Network Configuration File: D:\app\Administrator\product\11.2.\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools. SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Administrator\product\11.2.\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
) (SID_DESC =
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME = D:\app\Administrator\product\11.2.\dbhome_1)
(SID_NAME =orcl)
)
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = ))
)
)
要特别注意里面的:
(SID_DESC =
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME =orcl)
)
另外,查看tnsnames.ora是否正确:
# tnsnames.ora Network Configuration File: D:\app\Administrator\product\11.2.\dbhome_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools. ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
) LISTENER_orcl =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = )) orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = ))
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
特别是:
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
查看监听器的状态是否正常:
SQL> host lsnrctl status LSNRCTL for -bit Windows: Version 11.2.0.1. - Production on -3月 - :: Copyright (c) , , Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for -bit Windows: Version 11.2.0.1. - Production
启动日期 -3月 - ::
正常运行时间 天 小时 分 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 D:\app\Administrator\product\11.2.\dbhome_1\network\admin\listener.ora
监听程序日志文件 d:\app\administrator\diag\tnslsnr\ggg-PC\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=)))
服务摘要..
服务 "CLRExtProc" 包含 个实例。
实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 个处理程序...
服务 "orcl" 包含 个实例。
实例 "orcl", 状态 UNKNOWN, 包含此服务的 个处理程序...
命令执行成功
3、设置链接服务器。
需要特别注意的是,数据源orcl指的是:tnsnames.ora文件中的orcl服务名。
第一步,选择“新建链接服务器”

第二步,一定要选择 Oracle Provide for OLE DB

第三步,输入产品:oracle,数据源:orcl

第四步,输入oracle的用户名和密码,这个需要根据实际情况设置,输入完后,点确定就好。

4、测试查询
select * from openquery(xxx, 'SELECT * FROM emp')
返回结果:

5、用代码实现:
/****** Object: LinkedServer [ORCL_SCOTT] Script Date: 03/13/2014 16:25:21 ******/
EXEC master.dbo.sp_addlinkedserver
@server = N'ORCL_SCOTT',
@srvproduct=N'oracle',
@provider=N'OraOLEDB.Oracle',
@datasrc=N'orcl'
GO /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'ORCL_SCOTT',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'scott',
@rmtpassword='tiger'
go select * from openquery(ORCL_SCOTT, 'SELECT * FROM scott.emp')
还可以用?表示绑定变量:
EXEC ( 'SELECT * FROM scott.emp') AT ORCL_SCOTT;
GO
EXEC ( 'SELECT * FROM scott.emp WHERE MGR = ?', ) AT ORCL_SCOTT;
GO
DECLARE @v INT;
SET @v = ;
EXEC ( 'SELECT * FROM scott.emp WHERE MGR = ?', @v) AT ORCL_SCOTT;
GO
6、通过openrowset函数来实现,更简单。
select * from openrowset('OraOLEDB.Oracle','orcl';'scott';'tiger','select * from SCOTT.EMP')
返回结果:

【SQL Server数据迁移】64位的机器:SQL Server中查询ORACLE的数据的更多相关文章
- 【SQL Server数据迁移】32位的机器:SQL Server中查询ORACLE的数据
从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件,需要用不同的驱动程序来实现. 在32位的机器 ...
- PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验
PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验 一.问题现象及解决方法 现象: 1.PL/SQL 无法登录64位数据库 2.在PL/SQL ...
- 从零到一,利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernetes v1.10.0
说明 初步接触kubernets,记录学习过程 本教程目的利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernets v1.10.0 环境信息 节点IP地址 角色 ...
- Windows Server 2008企业64位版防火墙添加端口的方法
原始地址:http://www.veryhuo.com/a/view/48280.html 什么是防火墙的入站规则和出站规则 简单的说 出站就是你访问外网 入站就是外网访问你 记得在两年前写过一篇教程 ...
- SpringMvc处理模型数据(也就是从数据库中查询出来的数据放到请求域中)
这讲的是从数据库中查询到的数据,存放到请求域中.然后页面上直接可以从请求域中获取值. 有4种方式: 1):ModelAndView 是作为一个对象. /** * 目标方法的返回值可以是 Model ...
- PL/SQL Developer如何连接64位的Oracle图解
在64位Win7系统上安装64位的Oracle数据库,但是没有对应的64位PL/SQL Developer,此时就不能使用PL/SQL Developer来进行直接连接的,所以要想实现连接还得需要其他 ...
- Win8.1OS64位oracle11安装配置及PL/SQL Developer怎样连接64位oracle
Oracle 为什么选择oracle 1.oracle可以在主流的平台上执行,而相对于sql server仅仅支持windows,而windows在wr手里攥着呢,所以你懂的.在安全性上来讲,非常多地 ...
- ICE 迁移64位安装问题
昨天手贱,在apt-get install 后有一大堆,上百个安装包not upgrade, 发现有提示apt-get autoremove,犹豫了很久后还是忍不住执行了autoremove:这个命令 ...
- [正确配置]win7 PL/SQL 连接Oralce 11g 64位
PL/SQL 版本号:15.0.5.1710 32位 win7 64位系统 instantclient 12.1 32位,PL/SQL不支持64位 关键问题 1.Not logged on 2.没有c ...
随机推荐
- QBXT 2017GoKing problems 补完计划
10.11 Updata : 烦死了...麻烦死了...不补了..就这些吧 20171001 上: 100 + 90 + 90 = 280 = rank 8 T1 /* T1 从最大的数开始倒着枚举 ...
- Bacteria(优先队列)
题目链接:http://codeforces.com/gym/101911/problem/C 问题简述:给定n个细胞以及每个细胞的大小,相同的细胞能进行融合,如果能融合到只剩1个细胞则输出需要额外增 ...
- nRF51822 配置超过4个的 按键驱动
最近一个用到超过4个按键驱动,PCA10028 的板子上只有4个,所以SDK9 的pca10028.h 的宏只定义了4 #define BUTTONS_NUMBER 4 但是我要用超过4个的时候,就不 ...
- 除法运算时的一个常见异常之java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
一.背景 今天在计算库存消耗百分比(消耗的库存/总库存)的时候遇到了一个错误,java.lang.ArithmeticException: Non-terminating decimal expans ...
- 微信小程序之页面导航栏
效果图: 页面有点丑,作为初次学习,页面可以要求不那么美观,先学会再说.毕竟后面可以优化的很漂亮. 代码实例如下: <view class="section btn-area" ...
- 集合类 collection接口 LinkedList
LinkedList 是另外一种重要的数据结构形式, 底层是使用了双向链表数据结构, 特点: 查询速度慢,增删快. 继承关系如下: 可以发现,LinkedList同时实现了Quene和Deque接口. ...
- Mybatis(下)
Mybatis(下) 一.MaBatis核心配置文件 Mybatis 中文文档 Mybatis 中文文档 1. properties 定义属性及读取属性文件,取的时候用 $(name) ,name 为 ...
- Linux下查看目录文件数和文件大小
一.查看当前目录下文件个数 在linux下查看目录下有多少文件可以用:ls -l 命令查看,ls -lR 递归查看所有目录, 如果文件很多,则用wc命令 和 grep 命令进行过滤. wc命令显示输 ...
- gogs 邀请协作者 500错误
触发原因: 对db文件的user表删了某个用户导致 解决: 注册个新用户,把id改成原来的id(默认都会自增长)
- SpringBoot过滤XSS脚本攻击
XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安 ...