背景:
某项目oracle数据库字符集是US7ASCII
用户需要在达梦创建到oracle的dblink查询数据
采用oci方式创建连接后,发现中文乱码。https://www.cndba.cn/xisuo/article/4378
实验重现过程:
oracle创建实例,字符集选择US7ASCII
https://www.cndba.cn/xisuo/article/4378
创建表
create table test (name varchar2(50));
插入数据
insert into test values (‘中国’);
insert into test values (‘达梦’);
commit;
达梦数据库创建dblink(OCI方式)
create link orcl connect ‘ORACLE’ with “SYSTEM” identified by “oracle” using ‘192.168.56.101/orcl’;
使用dblink查询oracle数据,中文无法显示,为“?”
https://www.cndba.cn/xisuo/article/4378
oracle中查询是正常的
https://www.cndba.cn/xisuo/article/4378
而且达梦数据库设置NLS_LANG,LANG环境变量都没有效果
https://www.cndba.cn/xisuo/article/4378
解决方法:
使用ODBC方式,可以正常使用。
具体如下
配置oracle的ODBC
1.安装unixodbc
yum install unixODBC unixODBC-devel
安装后查看:
2.将oracle的odbc驱动放到达梦服务器上,配置odbc.ini文件
如下:oracle部分是配置信息,其中driver为oracle的ODBC的驱动
https://www.cndba.cn/xisuo/article/4378
3.测试odbc连接oracle
正常则连接成功:
可能会报错找不到libsqora.so.11.1
ldd libsqora.so.11.1
是找不到libodbcinst.so.1
需要创建软连接,安装unixODBC后会在/usr/lib64 有libodbcinst.so.2文件
使用libodbcinst.so.2文件创建软连接即可
ln -s libodbcinst.so.2 libodbcinst.so.1
4.达梦创建ODBC的dblink
create link orcl_odbc connect ‘ODBC’ with “SYSTEM” identified by “oracle” using ‘oracle’;
使用orcl_odbc 查询数据,发现是乱码:
https://www.cndba.cn/xisuo/article/4378
5.设置环境变量LANG为AMERICAN_AMERICA.US7ASCII
export LANG=AMERICAN_AMERICA.US7ASCII
查询正常:
https://www.cndba.cn/xisuo/article/4378https://www.cndba.cn/xisuo/article/4378https://www.cndba.cn/xisuo/article/4378
版权声明:本文为博主原创文章,未经博主允许不得转载。
达梦数据库 dblink 乱码