Oracle中Basic与TNS的区别及与Oracle三种连接⽅式的关系
Oracle JDBC连接⼀共有三种⽅式,分别是:SERVICE_NAME、SID和TNSName。
1.SERVICE_NAME⽅式:jdbc:oracle:thin:@//<host>:<port>/<SERVICE_NAME>
2.SID连接⽅式:jdbc:oracle:thin:@<host>:<port>:<SID>
或:jdbc:oracle:thin:@<host>:<port>/<SID>
3.TNSName连接⽅式:jdbc:oracle:thin:@<TNSName>
打开oracle路径下的D:\oraclexe\app\oracle\product\11.2.0\server\network\a⽂件
红线框内的db25就是TNSName,是属于客户端的参数,其余内容都是服务端的参数。
SERVICE_NAME和SID的⽐较:
SID是对内的,是实例级别的⼀个名字,⽤来内部之间称呼⽤。
SERVICE_NAME是对外的,是数据库级别的⼀个名字,⽤来告诉外⾯的⼈,我数据库叫"SERVICE_NAME"。
访问数据库的过程:
要想访问数据库,必须把数据库⽂件加载进实例中。SID即INSTANCE_NAME是⽤来唯⼀标⽰实例的。SERVICE_NAME是oracle8i新引进的,8i之前,⼀个数据库只能由⼀个实例对应,但是随着⾼性能的需求,并⾏技术的使⽤,⼀个数据库可以由多个实例对应了,⽐较典型的应⽤如RAC。为了充分利⽤所有实例,并且令客户端连接配置简单,ORACLE提出了SERVICE_NAME的概念,该参数直接对应数据库,⽽不是某个实例。⾃此Oracle JDBC连接多使⽤SERVICE_NAME⽅式连接,逐渐替代SID⽅式连接。
===========================================================
oracle连接是TNSName格式,之前没有见过这样的格式,于是研究了下。
⾸先附上oracle连接:
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.32)(PORT = 1551)) (CONNECT_DATA = (SERVER = CWDB) (SERVICE_NAME = CWDB) ) )
然后百度了下这种连接⽅式,发现Oracle其实是有三种连接⽅式的,感谢这位博主的⽂章:
然后尝试⽤Navicat 12.1连接数据库,发现⼀些连接参数看不懂。百度了下没到类似的问题解答,下⾯说下⾃⼰的感悟吧,不⼀定对,不对的地⽅希望⼤神帮忙改正:
1:连接类型。
这⾥连接类型有两种:Basic和TNS两种。
我的理解是。Basic是基础的连接类型,可以⽀持SID和ServiceName两种连接⽅式连接Oracle,TNS⽀持⽤TNSName的⽅式连接Oracle。
测试⽤连接类型改为TNS,参数改为上⾯的,可以连接成功:
(TNS⽹络服务名其实可以读取⽂件中的⼏个服务,选中就可以如下:)
2.服务名和SID
服务名对应ServiceName的连接⽅式,SID对应的是SID的连接⽅式。只要将对应的service_name和sid输⼊即可。(此处没有测试。)
另Navicat12.1有时候会因为和oracle版本不⼀样连接不上,需要修改这⾥的配置:
jdbc连接oracle⼯具—选项—环境:
这个⽹上很多,可以多备⽤⼏个。更改完需要重启。
转: blog.csdn/qq_40391559/article/details/87936681 blog.csdn/qq_39688195/article/details/103579926

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。