Oracle ODBC 配置(不需安装oracle客户端)

2019-08-01 14:57:40 浏览数 (1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1478409

参考:http://blog.sina.com.cn/s/blog_72d3486f0102w4n1.html

1,从Oracle主站下载两个文件:

代码语言:txt复制
                                                 a:  instantclient-basic-windows.x64-11.2.0.4.0.zip 
代码语言:txt复制
                                                 b:  instantclient-odbc-windows.x64-11.2.0.4.0.zip 
代码语言:txt复制
                 下载地址:   [http://www.oracle.com/technetwork/topics/winx64soft-089540.html](http://www.oracle.com/technetwork/topics/winx64soft-089540.html) 
代码语言:txt复制
         a文件是基础的,b文件是ODBC的,也可以把b文件切换成其它的,如jdbc,那最终合成的是JDBC的驱动了。本文是是生成ODBC的驱动。 

2,将两个文件解压到同一个文件夹中,如:instantclient_11_2

代码语言:txt复制
    就是直接“解压到当前文件夹”,就会合成单个文件夹。 
代码语言:txt复制
   将文件夹放到合适的位置,我是放到C盘的根目录 

3,以管理员身份进入命令行,如:cmd ,或者是PowerShell

代码语言:txt复制
     运行:odbc_install.exe,安装odbc 驱动,会提示安装成功。 
代码语言:txt复制
     打开   windows管理工具-》odbc数据源 (64位) ;点击“驱动”,这时候应该能看到“oracle …..”这条驱动了。 

4,测试数据源

打开 windows管理工具-》odbc数据源 (64位) ;

用户dsn,或者是系统dsn都可以,点击“添加”,添加数据源配置,注意:

a,数据源名称是自我指定的,可以随便定义,方便后使用

b,description 可以为空,相当与注释


c,TNS serviceNAME 这个是重点,具体格式为:192.168.10.5:1521/ORCL

IP地址:端口号/实例名(应该也可以是服务名,是个疑问?)

后看别的文章,这个是服务名,因为很多系统都是服务名和实例名一样。这个服务名在:TNSNAMES.ORA文件中。


就可以点击 test connection 测试连接了。没有错误就会弹出连接成功的说明了。

5,建立连接字符串

代码语言:txt复制
 可以建立一个文本文件,将后缀名该为udl,再双击打开,在    “连接”————》“选择或输入服务器名称”中就可以看到刚刚建立的数据源了,完成用户名,密码的配置,保存。再用文本工具打开,就可以看到连接字符串了。如: 
代码语言:txt复制
 Provider=MSDASQL.1;Persist Security Info=False;User ID=avls;Password=1;Data Source=orcl; 

还有发一个Oracle ODBC连接串汇总:http://www.connectionstrings.com/oracle/ ,这是网上别人总结的,很好。谢谢分享!

后记:当我在c# .net平台下写了个aspx网页连接oracle的odbc数据源时,查询出的中文都是问号。后来查了一下,需要在服务器端添加环境变量,将客户端的编码与服务端的编码保持一致如:

代码语言:javascript复制
SIMPLIFIED CHINESE_CHINA.ZHS16GBK   //这个是中文的
AMERICAN _ AMERICA. ZHS16GBK //这个是也是    

影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:

  NLS_LANG = language_territory.charset

  它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:

  Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK

  从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。
  建议完全一致。

服务端编码方式获取,用sql语句:

代码语言:javascript复制
select userenv('language')  from dual; //dual 为任一表名称

客户端添加“系统环境变量”

NLS_LANG

变量值为上面获取的Oracle服务端查询的结果。

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

AMERICAN _ AMERICA. ZHS16GBK //我用的就是这个,改完了就可以了!

0 人点赞