Lui*_*cia 17 oracle tomcat jdbc
我有一个基于java的服务器(Tomcat),它使用JDBC连接连接到Oracle数据库.有多种方法可以连接到数据库:SID,TNS名称,服务名称.
我想了解每个连接之间的区别是什么,如果连接到集群数据库,建议的连接(SID,TNS或服务)是什么.这是我们为数据库提供的TNS名称:
MY_NICE_TNS_NAME.MY_COMPANY.COM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhostname)(PORT = 1521))
(LOAD_BALANCE = YES)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MY_NICE_SERVICE_NAME.MY_COMPANY.COM)
(FAILOVER_MODE =
(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5)
)
)
)
Run Code Online (Sandbox Code Playgroud)
谢谢!
Pre*_*raj 11
SERVICE_NAME是数据库实例(或许多实例)的别名.这样做的主要目的是运行集群.使用此功能,我们可以连接群集中的特定数据库.和其他的方式,使用SID(小号 ystem ID entifier),我们可以连接到一个数据库实例,这是一个独特的Oracle数据库实例的名称.
简而言之,SID =数据库的唯一名称,SERVICE_NAME =连接时使用的别名.
有几种方法可以提供数据库信息,如Directly Specified,tnsnames.ora(即TNS名称),LDAP目录,网络信息服务.
甲TNS(Ť ransparent Ñ etwork 小号 ubstrate)名称在条目的名称tnsnames.ora,其被保持在文件$ORACLE_HOME/network/admin
该文件包含用于由系统连接到oracle数据库中的信息.使用此客户端可以透明地获取服务器关联信息.它包含以下信息
PROTOCOL
HOST IP ADDRESS
PORTNO
SID or SERVICE_NAME
Run Code Online (Sandbox Code Playgroud)
例如
mydb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.35.15.1)(PORT = 1521))
(CONNECT_DATA = (SID = mydb))
Run Code Online (Sandbox Code Playgroud)
JDBC驱动程序使用TNS连接到连接字符串,如下所示
System.setProperty("oracle.net.tns_admin", PATH_TO_TNSNAMES.ORA);
Class.forName ("oracle.jdbc.OracleDriver");
dbUrl = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST="+IPHOST+")(PORT="+PORT+"))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME="+DBNAME+")))"
conn = DriverManager.getConnection(dbUrl, USERNAME, PASSWORD);
Run Code Online (Sandbox Code Playgroud)
Oracle SID是唯一标识您的实例/数据库的唯一名称,其中Service name是您在远程连接到数据库时提供的TNS别名,并且此服务名称记录在客户端的Tnsnames.ora文件中,它可以是与SID相同,您也可以给它任何您想要的其他名称.
SERVICE_NAME是oracle 8i以后的新功能,其中数据库可以向侦听器注册自己.如果数据库以这种方式向侦听器注册,那么您可以在tnsnames.ora中使用SERVICE_NAME参数,否则 - 在tnsnames.ora中使用SID.
此外,如果您有OPS(RAC),则每个实例都有不同的SERVICE_NAME.
SERVICE_NAMES为此实例连接的数据库服务指定一个或多个名称.您可以指定多个服务名称,以区分同一数据库的不同用途.例如:
SERVICE_NAMES = sales.acme.com,widgetsales.acme.com
您还可以使用服务名称来标识通过使用复制从两个不同数据库中获得的单个服务.
在Oracle Parallel Server环境中,必须为每个实例设置此参数.
TNS是sql*net配置文件,它定义用于建立与它们的连接的数据库地址.
| 归档时间: |
|
| 查看次数: |
68539 次 |
| 最近记录: |