暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle jdbc连接字符串中的"//"是什么意思?

askTom 2016-09-19
331

问题描述

嗨AskTom团队。

我在java应用程序中测试到数据库的jdbc连接。当我使用以下表单时:

jdbc:oracle:thin:@myhost:1521/myservicename


一切都很好,我的Java应用程序连接到数据库。

当我尝试使用此表单时

jdbc:oracle:thin:@//myhost:1521/myservicename


我得到: ORA-12514, TNS:侦听器当前不知道连接描述符中请求的服务

不过,如果我稍微更改一下,然后添加.world域

jdbc:oracle:thin:@//myhost:1521/myservicename.world


一切又好起来了。所以我的问题是:这个双正斜线是干什么的?为什么在连接到//myhost时没有使用默认域(.world) ?如果我去掉斜杠,为什么还要用它?

谢谢!
马辛

专家解答

真有趣-我不知道

jdbc:oracle:thin:@myhost:1521/myservicename

甚至是有效的语法。我可以给你我的假设,但我不能保证它的准确性。

我相信你知道,你可以用tns条目连接

@my_tns_name

但那只是一个真实描述的简称,即,没有什么可以阻止你去做(例如) :

连接用户/pass@" ( DE描摹=(地址=(PROTOCO=tcp ) (HOST=销售-服务器) (端口=1521)) (连接_DATA=(SER_NAME=销售.us.acme.com ) ))"

在这些情况下,我们仍在使用标准的连接机制,因此我们将考虑sqlnet.ora中的条目(如默认域)等。

所以我的假设是:

@myhost:1521/myservicename

是否有足够的信息使用标准连接车辆进行连接(因此,我们仍然在sqlnet.ora等中查找默认域).

相反地, '//'语法被称为“ez连接”,是专门为没有tnsnames等的时候设计的。因此,整个连接信息都是从该行中收集到的。因此,服务名必须是完全限定的,因为我们不会访问sqlnet.ora (它可能甚至不存在)来查找默认域等。

希望这个能帮上忙。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论