开发者和DBA-不通过DSN连接TimesTen

本文给出了一种在客户端不用定义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连接TimesTen程序

结论

  • 目前还只发现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

开发者和DBA-不通过DSN连接TimesTen的相关文章

用哪种命名方法连接TimesTen? TNS还是DSN

先来看一下下面这张概念图: Java程序支持DSN文件连接TimesTen(参见极简Java连接TimesTen程序),也支持绕过DSN直接连接目标数据库(参见开发者和DBA-不通过DSN连接TimesTen). 需要指出, JAVA不支持TNS方式,因为对于TimesTen,TNS的支持是在OCI中实现的,而JAVA并不基于OCI而是基于ODBC. 由于Pro*C基于OCI,因此C的API全都支持TNS和DSN两种方式. 详见极简OCI连接TimesTen程序 和 极简ProC连接TimesT

极简OCI连接TimesTen程序

针对Oracle数据库的开发,Java和OCI是最常用的两种编程语言,对于TimesTen也是一样. 相较于Pro*C,OCI编程稍显复杂.但OCI提供更细粒度的控制,提供更丰富的功能和更好的性能.因此,对于熟悉C语言的编程人员,为性能和可控制性,以及易于调试,都应该首选OCI而非Pro*C. 和Pro*C一样, OCI也支持用TNS和easy connect string(DSN)来连接TimesTen. 可以通过connect string和TWO_TASK来指定相应的接口. 由于大部分的概

极简ProC连接TimesTen程序

TimesTen也支持Pro*C接口,从编程的角度来看,除了连接字符串的指定外,其它和针对Oracle的开发几乎一样. Pro*C程序连接TimesTen的框架 我们先来看一下Pro*C程序连接TimesTen的框架: int main(int argc, char** argv) { // 连接数据库,可以用以下三种方法之一 // 法一 EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :svc; // 法二 EXEC SQL CONNECT :

极简.NET连接TimesTen程序

和OCI, PRO*C, JDBC连接Timesten一样,.NET连接TimesTen也非常简单.只不过需要安装的组件比较多些而已. 在运行示例程序之前,需要在Windows上先安装: 1. TimesTen Windows客户端,本例中,由于TimesTen数据库在Windows上,因此完整安装TimesTen 2. Oracle Database or Oracle Data Access Components (ODAC),其中包含了ODP.NET 12.1 3. Miicrosoft

【软件包工头之临时DBA系列】Oracle连接非常慢APPARENT DEADLOCK

我是一名软件包工头,哪里有问题就干哪里. 这次是 Oracle 出毛病了,我就临时兼了DBA的职,没办法,谁叫我是工头呢.打开百度就开干. 这次关键词是:APPARENT DEADLOCK!!! 丫的看这三个感叹号,Tomcat真矫情.一个Oracle跑了5年了,毛病多我可以理解,关键是原因太奇葩,我不能接受. 百度之后,发现是 Oracle 的  listener.log 过大引起的(见此文),我真是日了狗了,这Orale自己不会清理么,还要人工清理. 而解决办法更是简单粗暴,直接删掉就行了!

DSN 建立达梦7(DM)连接

(DSN)Data Source Name 数据源名称 “ODBC数据源管理器”提供了三种DSN,分别为用户DSN.系统DSN和文件DSN.其中:      用户DSN会把相应的配置信息保存在Windows的注册表中,但是只允许创建该DSN的登录用户使用.      系统DSN同样将有关的配置信息保存在系统注册表中,但是与用户DSN不同的是系统DSN允许所有登录服务器的用户使用.       与上述两种数据库DSN不同,文件DSN把具体的配置信息保存在硬盘上的某个具体文件中.文件DSN允许所有登

Qt通过ODBC连接SQL Server2008实践总结

Qt连接数据库的方式很多,这里说明一种最常用也是最实用的方式,因为这种方式在Windows上开发程序使用起来非常方便,并且也是远程连接数据库所需要用到的方式. 前提工作: 在Win7下安装了SQL Server 2008,并在SQL Server中创建了数据库MyDB. Qt通过ODBC连接SQL Server 2008概述: Qt通过ODBC连接数据库时,使用的数据库名不是直接写入数据库名称,而是DSN名. 关于DSN的简要介绍: 原名:Data Source Name 中文名:数据源名称DS

android产品研发(十六)-->开发者选项

转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了android中内存对象的序列化方式.由于android开发涉及到不同Activity的数据传递,对于基本数据类型数据的传递是没有问题的,但是一旦涉及到复杂数据类型,就需要将数据序列化以便传输,在文章中我们主要讲解了两种数据序列化的方式:实现Serializable接口和实现Parcelable接口,同时也比较了它们各自的优缺点和实现方式.具体关于内存对象序列化方面的知识可参考:android产品研发(十五)–>内存对象序列化 本文主要介绍A

C语言连接Excel数据库

一.问题的提出 在ASP编程中会遇到很多大大小小的难题,我有一次为一家书店设计网站的时候就遇到了一个这样的难题.起初使用Access做数据库,该数据库主要是为了保存书店内图书的信息,但是当记录的条目过多时数据库的体积将会变得很大.在实际的应用中,网站的空间是有限的,很多要建设网站的客户都没有自己的主机,网站的空间是向网站空间提供商花钱购买而来的,这就要求在网站空间一定的条件下,尽量减小网站内文件的体积.于是我选择了Excel做数据库. 二.方法与说明 将Excel文件(例如book.xls)看成