达梦和oracle都支持服务名的方式连接数据库,两者的这个服务名集成了很多客户端功能和特性。
DM安装时生成一个配置文件dm_svc.conf,不同的平台所在目录有所不同。
-
32位的DM安装在Win32操作平台下,此文件位于%SystemRoot%\system32目录;
-
64位的DM安装在Win64操作平台下,此文件位于%SystemRoot%\system32目录;
-
32位的DM安装在Win64操作平台下,此文件位于%SystemRoot%\SysWOW64目录;
-
在Linux平台下,此文件位于/etc目录。
dm_svc.conf文件中包含DM各接口及客户端需要配置的一些参数,具体的配置项如表2.5所示。
表2.5 dm_svc.conf配置项介绍
配置项 | 缺省值 | 简述 |
服务名 | 无 | 连接服务名,参数值格式为ip[:port],ip[:port],...... |
TIME_ZONE | 操作系统当前时区 | 指明客户端的默认时区,设置范围为:-779~840m,如60对应+1:00时区 |
LANGUAGE | 操作系统语言 | 当前数据库服务器使用的语言,会影响帮助信息错误和提示信息。支持的选项为:CN(表示中文)和EN(表示英文)。可以不指定,若不指定,系统会读取操作系统信息获得语言信息,建议有需要才指定。 |
CHAR_CODE | 操作系统编码格式 | 客户端使用的编码格式,会影响帮助信息和错误提示信息,要与客户端使用的编码格式一致。支持的选项为:PG_UTF8(表示utf8编码);PG_GBK/PG_GB18030(两者都表示GBK编码);PG_BIG5(表示BIG5编码);PG_ISO_8859_9(表示ISO88599编码);PG_EUC_JP(表示EUC_JP编码);PG_EUC_KR(表示EUC_KR编码);PG_KOI8R(表示KOI8R编码);PG_ISO_8859_1(表示ISO_8859_1编码)。 可以不指定,若不指定,系统会读取操作系统信息获得编码信息,建议有需要才指定。 |
CLUSTER | 无 | 配合AUTO_RECONNECT=2,EP_SELECTOR=1使用,用于检测DSC集群节点故障恢复是否成功。取值:DSC,说明用于DSC环境中 |
COMPRESS_MSG | 0 | 是否启用消息压缩。0:不启用;1:启用 |
LOGIN_ENCRYPT | 1 | 是否进行通信加密。0:不加密;1:加密 |
DIRECT | Y | 是否使用快速装载。y:使用;n:不使用 |
DEC2DOUB | 0 | 指明在DPI、DMODBC、DCI、DMPHP和DM PRO\*C中,是否将DEC类型转换为DOUBLE类型。0:不转换;1:转换 |
KEYWORDS | 无 | 标识用户关键字,所有在列表中的字符串,如果以单词的形式出现在sql语句中,则这个单词会被加上双引号。该参数主要用来解决用户需要使用DM8中的保留字作为对象名使用的状况。 |
ENABLE_RS_CACHE | 0 | 是否进行客户端结果集缓存。0:不进行;1:进行 |
RS_CACHE_SIZE | 10 | 设置结果集缓冲区大小,以M为单位。有效值为1~65535,如果设置太大,可能导致空间分配失败,进而使缓存失效 |
RS_REFRESH_FREQ | 10 | 结果集缓存检查更新的频率,以秒为单位,有效值为0~10000,如果设置为0,则不需检查更新 |
CONNECT_TIMEOUT | 5000 | 连接超时时间,单位为毫秒。0表示无限制 |
LOGIN_MODE | 4 | 指定优先登录的服务器模式。0:优先连接Primary模式的库,Normal模式次之,最后选择Stantby模式;1:只连接主库;2:只连接备库;3:优先连接Standby模式的库,Primary模式次之,最后选择Normal模式;4:优先连接Normal模式的库,Primary模式次之,最后选择Standby模式 |
SWITCH_TIMES | 1 | 以服务名连接数据库时,若未找到符合条件的库成功建立连接,将尝试遍历服务名中库列表的次数。有效值范围1~9223372036854775807 |
SWITCH_INTERVAL | 200 | 在服务器之间切换的时间间隔,单位为毫秒,有效值范围1~9223372036854775807 |
RW_SEPARATE | 0 | 是否启用读写分离。0:不启用;1:启用;2:启用,备库由客户端进行选择,且只会选择服务名中配置的节点 |
RW_PERCENT | 25 | 读写分离分发比例,有效值范围0~100 |
LOGIN_CERTIFICATE | 无 | 指定登录加密用户名密码公钥所在的路径,一旦配置即认为开启了客户端的证书加密用户名密码模式 |
CIPHER_PATH | 无 | 第三方加密算法的路径 |
LOGIN_DSC_CTRL | 0 | 服务名连接数据库时是否只选择DSC CONTROL节点的库。0:否;1:是 |
ADDRESS_REMAP | 无 | 库地址重定向,格式为ADDRESS_REMAP =(IP:PORT, IP:PORT),支持指定多个,格式为:ADDRESS_REMAP =(IP:PORT, IP:PORT) ADDRESS_REMAP =(IP:PORT, IP:PORT) |
EP_SELECTOR | 0 | 连接数据库时采用何种模型建立连接。0:依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上;1:选择列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接 |
AUTO_RECONNECT | 0 | 连接发生异常或一些特殊场景下连接处理策略。0:关闭连接;1:当连接发生异常时自动切换到其他库,无论切换成功还是失败都会抛一个SQLEXCEPTION,用于通知上层应用进行事务执行失败时的相关处理;2 配合EP_SELECTOR=1使用,如果服务名列表前面的节点恢复了,将当前连接切换到前面的节点上 |
DEXP配置项 | ||
DUMMY | 2 | 写文件时,发现文件已存在的处理方式。0:报错;1:直接覆盖文件;2:询问用户,有交互信息 |
DPC_NEW配置项 | ||
DPC_TRACE | 无 | DPC_NEW的TRACE文件路径,不配置时不写TRACE信息 |
ENABLE_SSL | 0 | 是否启用SSL。1/Y/y:启用SSL;其他值:不启用 |
SSL_CONFIG | 无 | 在启用SSL的前提下,设置SSL值,格式如下:SSL_CONFIG=((USER=(用户名1) SSL_PATH=(SSL路径1) SSL_PWD=(SSL key1)) (USER=(用户名2) SSL_PATH=(SSL路径2) SSL_PWD=(SSL key2))) |
DPI配置项 | ||
DPI_TRACE | 0 | 是否生成DPI接口调用TRACE信息。0:不生成;1:生成 |
DCI配置项 | ||
DCI_TRACE | 0 | 是否生成DCI接口调用TRACE信息。0:不生成;1:生成 |
JDBC配置项 | ||
* | * | JDBC连接属性均可进行配置,具体请参考《DM8程序员手册》表4.1 |
.Net provider配置项 | ||
TRACE | NONE | 是否启用.NET PROVIDER的TRACE功能。NONE:不启用;DEBUG:打印到控制台;NORMAL:打印到执行目录下的“PROVIERTRACE.TXT”文件中;TRACE:打印到执行目录下的“PROVIERTRACE.TXT”文件中,比NORMAL内容要更详细一些;THREAD:每个线程的TRACE分别打印到执行目录下的“PROVIERTRACE线程号.TXT”文件中 |
dm_svc.conf配置文件的内容分为全局配置区和服务配置区。全局配置区在前,可配置表2.5中所有的配置项,服务配置区在后,以“[服务名]”开头,可配置除了服务名外的所有配置项。服务配置区中的配置优先级高于全局配置区。
下面以一个普通环境中dm_svc.conf为例:
## 以##开头的行表示是注释 ## 全局配置区 NORMAL=(192.168.0.1:5000,192.168.0.2:5236) Data_Watch=(192.168.0.3:5236,192.168.0.4:4350) TIME_ZONE=(+480) ##表示+8:00时区 LOGIN_ENCRYPT=(0) DIRECT=(Y) ## 服务配置区 ## 常规环境,两个没有关系的IP [NORMAL] TIME_ZONE=(+540) ##表示+9:00时区 LOGIN_MODE=(4) SWITCH_TIMES=(3) SWITCH_INTERVAL=(100) ## 服务配置区 ## 数据守护环境,一主一备 [Data_Watch] TIME_ZONE=(+540) ##表示+9:00时区 LOGIN_MODE=(2) SWITCH_TIMES=(3) SWITCH_INTERVAL=(100) |
下面以DSC场景中dm_svc.conf为例:
## 以##开头的行表示是注释 ## 全局配置区 DMDSC1=(192.168.1.1:5236,192.168.1.3:5236) DMDSC2=(192.168.1.5:5236,192.168.1.7:5236) TIME_ZONE=(+480) ##表示+8:00时区 ##DMDSC1 服务配置区 ##以下配置是每次定向连接 DMDSC1 服务器名的的第一个服务,当服务器故障后,尝试 60次,间隔1s 的节奏一直连接第一个服务,若连接不上,在循环下一个服务,连接上之后进行使用。假设2号服务(192.168.1.3)先起来,1号服务(192.168.1.1)后起来。因为AUTO_RECONNECT=(1),所以客户端连接在2号的当前连接不会切回1号服务。 [DMDSC1] SWITCH_TIMES=(60) SWITCH_INTERVAL=(1000) EP_SELECTOR=(1) AUTO_RECONNECT=(1) ##DMDSC2 服务配置区 ##以下配置是每次定向连接 DMDSC2 服务器名的的第一个服务,当服务器故障后,尝试60次,间隔1s 的节奏一直连接第一个服务,若连接不上,在循环下一个服务,连接上之后进行使用。假设2号服务(192.168.1.7)先起来,1号服务(192.168.1.5)后起来。因为AUTO_RECONNECT=(2),所以客户端连接在2号的当前连接会再切回1号服务。 [DMDSC2] CLUSTER=(DSC) SWITCH_TIMES=(60) SWITCH_INTERVAL=(1000) EP_SELECTOR=(1) AUTO_RECONNECT=(2) |
需要说明的是,如果对dm_svc.conf的配置项进行了修改,需要重启客户端程序,修改的配置才能生效。
tnsnames.ora文件是一个配置文件,其中包含映射到本地命名方法连接描述符的网络服务名称,或映射到监听程序协议地址的网络服务名称。
网络服务名称是映射到包含的数据库网络地址的别名的连接描述符。连接描述符包含通过协议地址的监听程序的位置以及要连接的数据库的服务名称。客户端和数据库服务器(即其他数据库服务器的客户端)在与应用程序建立连接时使用网络服务名称。
默认情况下,该tnsnames.ora文件位于ORACLE_HOME/network/admin目录中。Oracle Net将检查配置文件的其他目录。例如,检查tnsnames.ora文件的顺序如下:
- TNS_ADMIN环境变量指定的目录。如果在指定的目录中找不到该文件,则假定该文件不存在。
- 如果TNS_ADMIN未设置环境变量,则Oracle Net将检查该ORACLE_HOME/network/admin目录。
oracle tnsname也有非常复杂的功能和各种用法,详见官方文档https://docs.oracle.com/database/121/NETRF/tnsnames.htm#NETRF431
更多资讯请上达梦技术社区了解: https://eco.dameng.com