create remote oracle odbc data source on win10
前言
用OCI编程时,OCIServerAttach连接的是用oracle客户端网络助手配置好的远端TNS服务名称.
可能不需要先配置好可用的数据源(未测试),但是可以用ODBC数据源中的测试功能,确定远端oracle数据库连接正常,才能继续OCI编程测试。
因为OCI编程时,需要连接的是远端的TNS服务名称,所以,oracle客户端工具是需要装的。然后配置监听器和远端网络服务名称。
实验环境
win10 + oracle client administrator tools + 一个在远端已经装好可用的oracle数据库.
实验
- 安装win64_11gR2_client.zip中的setup.exe, 安装时,选择第二项,“管理员工具”
- 找到客户端工具目录
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle - OraClient11g_home1\配置和移植工具。
配置oracle ODBC 数据源主要用到这个目录中的2个工具:
Net Configuration Assistant = D:\app\ls\product\11.2.0\client_1\BIN\launch.exe “D:\app\ls\product\11.2.0\client_1\bin” ..\bin\netca.cl
Microsoft ODBC 管理员 = C:\Windows\System32\odbcad32.exe
* 运行Net Configuration Assistant
**配置监听程序
执行完生成: D:\app\ls\product\11.2.0\client_1\network\admin\listener.ora
# listener.ora Network Configuration File: D:\app\ls\product\11.2.0\client_1\network\admin\listener.ora
# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = MY_HOST_NAME)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))ADR_BASE_LISTENER = D:\app\ls
如果在客户端用ODBC向导添加远端oracle动态数据源时,测试时,显示没有合适的监听程序。
需要将listener.ora的HOST=MY_HOST_NAME, 是本地的hostname,而不是远端的IP。
在卸载时(deinstall.bat),验证了,本地的oracle客户端确实开了监听。
**本地网络服务名配置
执行完生成:D:\app\ls\product\11.2.0\client_1\network\admin\tnsnames.ora
# tnsnames.ora Network Configuration File: D:\app\ls\product\11.2.0\client_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xx.xx)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))
这里的服务名orcl,就是ODBC管理器中要用到的服务名,在下拉列表中可以选择.
tnsnames.ora中的HOST和PORT都是远端oracle数据库的IP和PORT。
运行Microsoft ODBC 管理员
这里用的远端数据库的服务名称都是在上一步tnsnames.ora中配置好的。
只要知道远端oracle数据库的用户名和口令,填入,点击测试,成功。
在客户端使用的oracle远程ODBC数据源就配置好了,在OCI编程时,就使用这个做好的odbc数据源名称。
配置好后, 在客户端用 TNSPING ORCL 执行,会成功。
OCI测试代码
用OCIServerAttach连接远端TNS服务名称成功,说明OCI开发环境搭建成功。
// oci_test_on_vs2017.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <string>#include "oci.h"
// oci.lib is win64, win32编译不过.
#pragma comment(lib, "oci.lib")// 用oracle网络助手配置的远端网络服务名称, 不是ODBC助手配置出来的dsn名称
#define REMOTE_TNS_SERVICE_NAME "ORCL"void test_oci_a();int _tmain(int argc, _TCHAR* argv[])
{test_oci_a();printf("END\n");system("pause");return 0;
}void test_oci_a()
{sword sw_rc = 0;sword sw_tmp = 0;OCIEnv* myenvhp = NULL;OCIServer* mysrvhp = NULL;OCIError* myerrhp = NULL;OCISession* myusrhp = NULL;OCISvcCtx* mysvchp = NULL;sb4 errcode = 0;char sz_buf[4096] = {'\0'};do {sw_rc = OCIEnvCreate(&myenvhp, OCI_THREADED | OCI_OBJECT, (dvoid*)0, 0, 0, 0, (size_t)0, (dvoid**)0);if (OCI_SUCCESS != sw_rc) {break;}sw_rc = OCIHandleAlloc((dvoid*)myenvhp, (dvoid**)&mysrvhp, OCI_HTYPE_SERVER, 0, (dvoid**)0);if (OCI_SUCCESS != sw_rc) {break;}sw_rc = OCIHandleAlloc((dvoid*)myenvhp, (dvoid**)&myerrhp, OCI_HTYPE_ERROR, 0, (dvoid**)0);if (OCI_SUCCESS != sw_rc) {break;}// OCI连接的不是ODBC DSN名称// my_oracle_dsn// ORA-12154: TNS: 无法解析指定的连接标识符// OCI连接的是远端TNS服务名称// TNSPING ORCL// 成功sw_rc = OCIServerAttach(mysrvhp, myerrhp, (text*)REMOTE_TNS_SERVICE_NAME,(sb4)strlen(REMOTE_TNS_SERVICE_NAME),OCI_DEFAULT);if (OCI_SUCCESS != sw_rc) {printf("error : remote database connect\r\n");break;}printf("ok : remote database connect\r\n");} while (0);if ((OCI_SUCCESS != sw_rc) && (NULL != myerrhp)) {sw_tmp = OCIErrorGet(myerrhp, (ub4)1, (text*)NULL, &errcode,(OraText*)sz_buf, (ub4)sizeof(sz_buf), (b4)OCI_HTYPE_ERROR);if (OCI_SUCCESS == sw_tmp) {printf("%s\r\n", sz_buf);}}// @todo 资源释放}
create remote oracle odbc data source on win10相关推荐
- oracle10 64位odbc,图文教你64位win10添加oracle odbc驱动时提示无法加载oracle如何解决...
现在电脑已成为我们工作生活的一部分,相信大家在操作电脑时一定会遇到这样那样的问题,64位win10添加oracle odbc驱动时提示无法加载oracle如何解决这个问题就是我们经常会遇到的,这样的问 ...
- Oracle 10g Data Pump Expdp/Impdp 详解
本文转自David的Blog,原文链接http://blog.csdn.net/tianlesoftware/article/details/4674224 一. 官网说明 1. Oracle 10 ...
- Steps to configure Oracle 11g Data Guard Physical Standby – Active Data Guard Part-I
2019独角兽企业重金招聘Python工程师标准>>> Steps to configure Oracle 11g Data Guard Physical Standby – Act ...
- C# 连接SQL Server数据库的几种方式--server+data source等方式
本文转载自忙碌的布谷鸟 如何使用Connection对象连接数据库? 对于不同的.NET数据提供者,ADO.NET采用不同的Connection对象连接数据库.这些Connection对象为我们屏蔽 ...
- Oracle DUL Data Unloader数据恢复工具信息汇总
PRM-DUL是开放的ORACLE DUL 软件,点击下面的链接下载PRM-DUL DUL FOR LINUX平台(已更新为PRM-DUL) DUL FOR Windows平台 (已更新为PRM-DU ...
- Windows Oracle ODBC驱动数据源安装配置
首先下载两个包 instantclient-basic 和 instantclient-odbc 在D盘新建一个目录,Oracle,解压两个包 之后从安装过Oracle客户端的机器拷贝一个networ ...
- 数据源(Data Source
数据源(Data Source)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体.在数据源中存储了所有建立数据库连接的信息.就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数 ...
- 在Windows 中配置Oracle ODBC驱动(不需要安装客户端)
用于测试的操作系统:Win7 64X Oracle ODBC驱动版本:11.02.00.04 Oracle ODBC下载地址:https://download.csdn.net/download/qq ...
- Oracle DSI(Data Server Internals) 下载说明
DSI是Data Server Internals的缩写,是Oracle公司内部用来培训Oracle售后工程师使用的教材. DSI3是Oracle 8系列的, DSI4是Oracle 9系列的. 这样 ...
最新文章
- 子元素超出父元素宽高是否会报错?
- EonerCMS——做一个仿桌面系统的CMS(二)
- [mybatis]全局配置文件标签顺序
- sysfs接口函数的建立_DEVICE_ATTR
- hadoop 单机伪分布式安装步骤
- 必背单词_初中英语:2000个必背单词(附音标)汇总,打印背完,3年考高分
- MySQL Pool
- 【OOM】GC overhead limit exceeded
- Spring Could+Ant Design Pro表格数据加载
- python无法定位到table_selenium3 + python - table定位
- 初步了解java虚拟机
- 计算机小知识140,140个电脑小知识,电脑知识-
- 印象笔记保存html,印象笔记怎么保存网页 印象笔记保存网页教程
- Provisional headers are shown axios 超时处理
- 2G、 3G、 4G、5G的区别
- android 电视怎么投屏,安卓手机怎么投屏到电视
- AI挖掘优质淘宝买家秀 再也不用担心辣眼睛了
- 一周速递|全球车联网产业动态(2022年10月16日)
- 说说各种手机输入法的体验
- 内存管理(五)——内存回收