本文给出了一种在客户端不用定义DSN文件,直接连接服务器端DSN的方法。
当然,这并非一种主流的方法,只是为了开拓思路而已,比较有用的场景倒是可以用在ttisql实用程序,用来测试automatic client failover。
这种场景可以参见前文: TimesTen 数据库复制学习:16. 一个缓存组,复制,客户端自动切换的串烧实验
通过ttisql测试
以下为服务器端的DSN文件。
[sampledb_1122]
Driver=/home/oracle/TimesTen/tt1122/lib/libtten.so
DataStore=/home/oracle/TimesTen/tt1122/info/DemoDataStore/sampledb_1122
PermSize=40
TempSize=32
PLSQL=1
DatabaseCharacterSet=US7ASCII
在客户端我们不定义DSN,然后使用ttisqlcs连接,注意是ttisqlcs而非ttisql。这也说明此法只适用于C/S连接而非direct连接。
$ ttisqlcs "ttc_server=localhost;tcp_port=53393;ttc_server_dsn=sampledb_1122;uid=tthr;pwd=timesten"
Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
connect "ttc_server=localhost;tcp_port=53393;ttc_server_dsn=sampledb_1122;uid=tthr;pwd=timesten";
Connection successful: DSN=;TTC_SERVER=localhost;TTC_SERVER_DSN=sampledb_1122;UID=tthr;DATASTORE=/home/oracle/TimesTen/tt1122/info/DemoDataStore/sampledb_1122;DATABASECHARACTERSET=US7ASCII;CONNECTIONCHARACTERSET=US7ASCII;PERMSIZE=40;TEMPSIZE=32;TYPEMODE=0;
(Default setting AutoCommit=1)
Command> exit
实际上用到的三个属性为:ttc_server,tcp_port,ttc_server_dsn。
注意tcp_port是TimesTen 服务器的PID,而非TimesTen守护进程的PID。
通过JAVA程序测试
由于只涉及到连接字符串,因此只需要将在 的源程序中的
String URL = "jdbc:timesten:direct:DSN=sampledb_1122;uid=tthr;pwd=timesten";
改为
String URL = "jdbc:timesten:client:ttc_server=localhost;tcp_port=53393;ttc_server_dsn=sampledb_1122;uid=tthr;pwd=timesten";
即可。
改动前的JAVA源程序参见:
结论
- 目前还只发现JAVA程序可以使用这种方法指定ttc_server等属性。对于C语言,可以直接将这些属性直接写到DSN文件中
- 这种方法只支持C/S连接,性能不如direct连接。对于JAVA倒是有意义。
- 这种方法用处极为有限,在auto client failover场景可以使测试比较简洁。
- 这种方法并不表示在客户端可以不安装timesten客户端程序
*
参考
HOWTO : create a TimesTen JDBC client server connection without using the sys.odbc.ini and sys.ttconnect.ini client configuration files (Doc ID 1311810.1)
时间: 2024-12-14 22:33:48