Oracle创建到sqlserver的dblink中的一个巨坑
2017-07-26 15:48
281 查看
这两天搭生产环境。本系统用的是oracle数据库,但是,有几个表的数据要从sqlserver那里导入进来。用到了dblink,用到了oracle的透明网关。测试环境是一个同事搭的,但是他去别的项目去。于是生产环境的搭建落到了我的头上。透明网关,dblink什么的,网上找资料搞定(关于这些具体配置的文章,在在都是,我就不赘述了)。但是,要测试dblink的时候却总是有问题。网上找遍了关于透明网关的相关配置的文章,差不多的都试了,没用。担心安装透明网关的时候出了什么岔子,于是卸载安装了三遍。然后一遍一遍去对配置,跟测试环境对,跟网上的资料对。都他妈的没用。找环境组的同事,问是不是防火墙什么的问题。同事坚决否认,扯皮了半天也无果。最后,同事的结论是:其他的项目组都用着这个数据库,都没问题,肯定是你的监听配置有问题。(由于当时急着处理,忘了截图,而现在又一时没办法重现当时的错误,所以原谅我没有一张图片)。 就这样耗掉了两天。后来,我想查一下dblink在数据库存在哪个表中,就查了一下(dblink信息在表dba_db_links中),结果看出问题所在了。我发现里面的username都大写的。原来,我们在创建dblink的时候,oracle会默认把字符串转成大写。于是,我把创建dblink的sql语句中的username用“”引起来,再去执行,然后测试,没问题了! 说了这么多,显得很啰嗦,而且没有重点,显然是不符合猿类习惯的,估计很多小伙伴(如果有人看到的话^_^)要抓狂了,所以还是决定把重点拎出来,放在下面。
如果你创建oracle到sqlserver的dblink,在查询的时候出现了用户名和密码错误,那么,有可能你的sql语句是有问题的。
错误的sql:
create database link “db_link_a” connect to username1 identified by password1 using “sqlserver_db1”;
正确的sql:
create database link “db_link_a” connect to “username1” identified by “password1” using “sqlserver_db1”;
相关文章推荐
- oracle创建一个dblink
- Oracle创建到sqlserver的DBlink
- 在oracle中创建一个最简单的dblink
- SqlServer创建链接服务器(作用等效Oracle的dblink)
- 创建在SQLServer 和 Oracle的 DBLINK
- 创建在SQLServer 和 Oracle的 DBLINK
- oracle 触发器实现禁止在数据库中创建dblink ---通过触发器实现
- Oracle使用dblink连接SqlServer
- oracle中如何创建dblink
- 一个oracle 用户下面创建多个实例
- spool命令、创建一个表,创建并且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站
- 如何创建oracle dblink
- oracle 创建dblink
- oracle一个创建用户、创建表空间、授权、建表的完整过程
- Oracle:PL/SQL Developer 创建一个新用户
- oracle-创建dblink
- Oracle 数据库基础学习 (二) 学习小例子:创建一个表,记录商品买卖的情况
- 一个数据库操作类,适用于Oracle,ACCESS,SQLSERVER
- 如何通过Sqlplus创建一个oracle的user
- oracle一个创建用户、创建表空间、授权、建表的完整过程和常用命令