Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 686|回复: 0

Visual Studio 2017使用ODT 连接Oracle 数据库出现异常

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-21 09:52:08 | 显示全部楼层 |阅读模式

    2019.5.23 更新


     

    突然发现原来是是sqlnet.ora在搞鬼,只要将SQLNET.AUTHENTICATION_SERVICES=(nts)  改为 SQLNET.AUTHENTICATION_SERVICES=(NONE) 就可以了。

     

    百度关于SQLNET.ORA 的有关信息

     

    ODT对该异常的提示信息又不恰当,导致我们在原地打转。正确的异常的应该是提示“Credential retrieval failed”。

    错误截图

     

     

    同事没有遇到这个问题,很有可能一个原因就是他的ODT不是读取ODT安装后的SQLNET.ORA文件,而是定位到了Oracle Home下的文件,因为他们要运行PL/SQL ,所以先装Oracle Home,之后再安装ODT。 我是直接装ODT没有搞任何东西。

     

     

     

     

    原文


     

    昨天在使用VS通过ODT连接数据库扒模型的时候发现了这个异常。经过测试,发现这个异常是因为 ODT 插件无法识别服务名中的“.”字符 导致的,比如“orcl.asian.com”。其他不包含“.”字符的服务名皆可正常连接。做了下简单的回溯,一个月前的ODT插件是正常工作的,期间数据库未作任何改动。唯独Windows 和Visual Studio更新过。随后测试了相同版本的Visual Studio(Visual Studio Community 2017 15.9.12)在Windows 7 下的连接测试,结果是连接成功。

    异常截图

     

    Google 中有一些相关的文章,大致围绕在几个点上:

     

    第三种方式停用MS Account 能解决这个问题。自己也顺便用虚拟机做了不同版本的测试,结果不太理想,所有登录的Windows 10都失败了。但同事的1803装183000的ODT就算登录也是能够正常连接,对比不同点有几个:一是VS 2017的版本并非是我测试时的15.9而是Older Version。二是Windows 使用Administrator 登录MS账户。

     

     

    使用ODAC替换ODT也可以解决掉这个异常,好奇登录MS 账户之后,Windows 到底进行了些什么操作?一个托管组件为什么会受到MS 账户的影响呢?为什么ODT不行,使用ODAC就可以?先Mark起来,后面有时间再细查。

     

    总结

    ODT插件是在Visual Studio一启动就加载进内存了,所以,如果是在登录MS 账户之前打开VS,那么ODT仍然是正常工作的,直到你关闭VS。解决这个异常除了上面说的切换MS Account 外,还有下面几个。

    1. 使用Oracle Data Access Components(可能会遇到Credential retrieval failed的问题,见Credential retrieval failed 的解决方法)。

    2. 更换Windows 版本。

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 10:49 , Processed in 0.054698 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表