<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>TimesTen</title>
	<atom:link href="http://www.ttisql.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ttisql.com</link>
	<description>Oracle  In-Memory  DataBase</description>
	<pubDate>Sat, 27 Dec 2008 11:31:27 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>TimesTen 初学者学习路线图</title>
		<link>http://www.ttisql.com/faq/timesten-start.html</link>
		<comments>http://www.ttisql.com/faq/timesten-start.html#comments</comments>
		<pubDate>Sat, 27 Dec 2008 11:21:24 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[常 见 问 题]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=397</guid>
		<description><![CDATA[



&#160;


&#160;


&#160;


&#160;




&#160;


&#160;


&#160;


&#160;




安装介质下载


安装介质下载


TimesTen简介
&#160;


标准文档




安装


安装


TimesTen卸载


存储过程大全




创建数据源


启动和关闭


TimesTen特性


命令大全




初步使用


创建数据源


基本概念


DSN属性大全




C/S配置



C/S配置



DataStore介绍


系统变量




CacheConnect


CacheConnect


用户级别


系统上限阀值




&#160;


复制配置


锁机制


&#160;




&#160;


复制异常恢复


数据持久性


&#160;




&#160;


&#160;


索引


&#160;




&#160;


&#160;


如有疑惑&#8230;


&#160;




]]></description>
			<content:encoded><![CDATA[<table bordercolor="#ffffff" height="850" width="690" align="left" background="http://www.ttisql.com/images/tt-steps.jpg" border="0">
<tbody>
<tr>
<td align="center" width="122" height="94">
<div align="center">&nbsp;</div>
</td>
<td align="center" width="206">
<div align="center">&nbsp;</div>
</td>
<td align="center" width="206">
<div align="center">&nbsp;</div>
</td>
<td align="center" width="128">
<div align="center">&nbsp;</div>
</td>
</tr>
<tr>
<td align="center" height="88">
<div align="center">&nbsp;</div>
</td>
<td align="center">
<div align="center">&nbsp;</div>
</td>
<td align="center">
<div align="center">&nbsp;</div>
</td>
<td align="center">
<div align="center">&nbsp;</div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="58">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/download/ttdownload.html">安装介质下载</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/download/ttdownload.html">安装介质下载</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/ttgeneral.html">TimesTen简介</a></div>
<div class="style-tt" align="center">&nbsp;</div>
</td>
<td align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/download/standarddoc.html">标准文档</a></div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="65">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/download/install-on-windows.html">安装</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/download/ttinstall-linux-x86-32.html">安装</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/download/ttuninstall.html">TimesTen卸载</a></div>
</td>
<td align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/ttref/procedures.html">存储过程大全</a></div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="65">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/faq/tt-windows-usage-1.html">创建数据源</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/tthowtouse-1.html">启动和关闭</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/faq/whyfast.html">TimesTen特性</a></div>
</td>
<td align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/ttref/ttisqlcommand.html">命令大全</a></div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="56">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/faq/tt-windows-usage-2.html">初步使用</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/tthowtouse-2.html">创建数据源</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/concepts.html">基本概念</a></div>
</td>
<td align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/ttref/ttattributes.html">DSN属性大全</a></div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="57">
<p class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/faq/tt-windows-usage-3.html">C/S配置</a></p>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center">
<p><a target="_blank" href="http://www.ttisql.com/faq/clientserver.html">C/S配置</a></p>
</p></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/datastore.html">DataStore介绍</a></div>
</td>
<td align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/ttref/ttsysvarible.html">系统变量</a></div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="78">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/faq/tt-windows-usage-4.html">CacheConnect</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/tthowtouse-3.html">CacheConnect</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/timesten-user.html">用户级别</a></div>
</td>
<td align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/ttref/ttsystemlimit.html">系统上限阀值</a></div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="59">
<div align="center">&nbsp;</div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/replication/pair-disaster-recovery-1.html">复制配置</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/ttlock.html">锁机制</a></div>
</td>
<td align="center">
<div align="center">&nbsp;</div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="76">
<div align="center">&nbsp;</div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/replication/pair-disaster-restore-1.html">复制异常恢复</a></div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/data-persistence.html">数据持久性</a></div>
</td>
<td align="center">
<div align="center">&nbsp;</div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="57">
<div align="center">&nbsp;</div>
</td>
<td valign="middle" align="center">
<div align="center">&nbsp;</div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a target="_blank" href="http://www.ttisql.com/architecture/ttindex.html">索引</a></div>
</td>
<td align="center">
<div align="center">&nbsp;</div>
</td>
</tr>
<tr valign="middle" align="center">
<td valign="middle" align="center" height="51">
<div align="center">&nbsp;</div>
</td>
<td valign="middle" align="center">
<div align="center">&nbsp;</div>
</td>
<td valign="middle" align="center">
<div class="style-tt" align="center"><a href="http://www.ttisql.com/forum/forum/timesten">如有疑惑&#8230;</a></div>
</td>
<td align="center">
<div align="center">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/faq/timesten-start.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>TimesTen的各种端口</title>
		<link>http://www.ttisql.com/faq/timesten-ports.html</link>
		<comments>http://www.ttisql.com/faq/timesten-ports.html#comments</comments>
		<pubDate>Thu, 25 Dec 2008 06:24:30 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[常 见 问 题]]></category>

		<category><![CDATA[port number]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=395</guid>
		<description><![CDATA[&#160;
在TimesTen的安装以及使用过程中，会碰到各种各样的端口，比如主守护进程的监听端口，服务进程的监听端口，webserver的监听端口等等。那么这些端口如何去确定呢？
&#160;
缺省的情况下，TimesTen 7.0 会按照如下的方式去预定端口号：
&#160;
&#160;
&#160;



&#160;
32位平台
64位平台


主守护进程
17000
17001


Server
17002
17003


Web Server
17004
17005



&#160;
&#160;
安装的时候，如果你选择的主守护进程监听端口号不是17000，比如说这个端口号被占了，你选择了17100为端口号，则Server 以及 WebServer&#160; 都会按照17100来确定自己的端口号，分别为 17102，17104 或者 17103，17105。
&#160;
也可以通过如下方式来确定目前使用的端口号是哪些，方法之一是ttstatus：
&#160;
D:\&#62;ttstatus
TimesTen status report as of Thu Dec 25 14:08:20 2008
Daemon pid 364 port 17000 instance tt70_32
TimesTen server pid 3904 started on port 17002
TimesTen webserver pid 2304 started on port 17004
&#160;
方法之二是通过配置文件来查看：
&#160;
主守护进程:
$ cat /etc/TimesTen/instance_info
&#160;
Server :
$ cat $TIMESTEN_HOME/info/sys.ttconnect.ini
&#160;
3) Web Server:
$ cat $TIMESTEN_HOME/info/webserver.config

&#160;
除此之外，还有定义Replication的时候，定义两端Agent监听的端口号，比如：
&#160;
Create replication &#8230;&#8230;
Store DSN_Name on Host_Name Port Port_Number
&#8230;&#8230;
&#160;
这时候可以不用定义端口号，让TimesTen自己自动分配，但我觉得还是人为指定的好。创建完之后如何查看端口号呢？
&#160;
通过 [...]]]></description>
			<content:encoded><![CDATA[<div>&nbsp;</div>
<div>在TimesTen的安装以及使用过程中，会碰到各种各样的端口，比如主守护进程的监听端口，服务进程的监听端口，webserver的监听端口等等。那么这些端口如何去确定呢？</div>
<div>&nbsp;</div>
<div>缺省的情况下，TimesTen 7.0 会按照如下的方式去预定端口号：</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table cellspacing="1" cellpadding="1" width="200" align="center" border="1">
<tbody>
<tr>
<td>&nbsp;</td>
<td>32位平台</td>
<td>64位平台</td>
</tr>
<tr>
<td>主守护进程</td>
<td>17000</td>
<td>17001</td>
</tr>
<tr>
<td>Server</td>
<td>17002</td>
<td>17003</td>
</tr>
<tr>
<td>Web Server</td>
<td>17004</td>
<td>17005</td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>安装的时候，如果你选择的主守护进程监听端口号不是17000，比如说这个端口号被占了，你选择了17100为端口号，则Server 以及 WebServer&nbsp; 都会按照17100来确定自己的端口号，分别为 17102，17104 或者 17103，17105。</div>
<div>&nbsp;</div>
<div>也可以通过如下方式来确定目前使用的端口号是哪些，方法之一是ttstatus：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:\&gt;ttstatus<br />
TimesTen status report as of Thu Dec 25 14:08:20 2008</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Daemon pid 364 port <span style="color: #ff0000"><strong>17000 </strong></span>instance tt70_32<br />
TimesTen server pid 3904 started on port <span style="color: #ff0000"><strong>17002</strong></span><br />
TimesTen webserver pid 2304 started on port </span><span style="color: #ff0000"><strong><span style="background-color: #9999ff">17004</span></strong></span></div>
<div>&nbsp;</div>
<div>方法之二是通过配置文件来查看：</div>
<div>&nbsp;</div>
<div>主守护进程:</div>
<div>$ cat /etc/TimesTen/instance_info</div>
<div>&nbsp;</div>
<div>Server :</div>
<div>$ cat $TIMESTEN_HOME/info/sys.ttconnect.ini</div>
<div>&nbsp;</div>
<div>3) Web Server:</div>
<div>$ cat $TIMESTEN_HOME/info/webserver.config</div>
<div>
&nbsp;</div>
<div>除此之外，还有定义Replication的时候，定义两端Agent监听的端口号，比如：</div>
<div>&nbsp;</div>
<div>Create replication &#8230;&#8230;</div>
<div>Store DSN_Name on Host_Name Port Port_Number</div>
<div>&#8230;&#8230;</div>
<div>&nbsp;</div>
<div>这时候可以不用定义端口号，让TimesTen自己自动分配，但我觉得还是人为指定的好。创建完之后如何查看端口号呢？</div>
<div>&nbsp;</div>
<div>通过 repschemes查看 ：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Command&gt; repschemes;</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Replication Scheme Active Standby:</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&nbsp; Master Store: DSA on WEST-MOUNTAIN<br />
&nbsp; Master Store: DSB on WEST-MOUNTAIN<br />
&nbsp; Master Return Service: Return Receipt</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff"><br />
&nbsp; Excluded Tables:<br />
&nbsp;&nbsp;&nbsp; None</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&nbsp; Excluded Cache Groups:<br />
&nbsp;&nbsp;&nbsp; None</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&nbsp; Excluded sequences:<br />
&nbsp;&nbsp;&nbsp; None</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&nbsp; Store: DSA on WEST-MOUNTAIN<br />
&nbsp;&nbsp;&nbsp; Port: <span style="color: #ff0000"><strong>20000</strong></span><br />
&nbsp;&nbsp;&nbsp; Log Fail Threshold: 5<br />
&nbsp;&nbsp;&nbsp; Retry Timeout: 5 seconds<br />
&nbsp;&nbsp;&nbsp; Compress Traffic: Disabled<br />
&nbsp;&nbsp;&nbsp; Return Service Wait Time: 10 seconds<br />
&nbsp;&nbsp;&nbsp; Return Service on Replication Stop: Disabled<br />
&nbsp;&nbsp;&nbsp; Return Service Failure Policy: (none)</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&nbsp; Store: DSB on WEST-MOUNTAIN<br />
&nbsp;&nbsp;&nbsp; Port: <span style="color: #ff0000"><strong>22000</strong></span><br />
&nbsp;&nbsp;&nbsp; Log Fail Threshold: 5<br />
&nbsp;&nbsp;&nbsp; Retry Timeout: 5 seconds<br />
&nbsp;&nbsp;&nbsp; Compress Traffic: Disabled<br />
&nbsp;&nbsp;&nbsp; Return Service Wait Time: 10 seconds<br />
&nbsp;&nbsp;&nbsp; Return Service on Replication Stop: Disabled<br />
&nbsp;&nbsp;&nbsp; Return Service Failure Policy: (none)</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">1 replication scheme found.<br />
Command&gt; </span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div>或者通过ttRepAdmin -showstatus &lt;DSN&gt; 查看，但此时必须启动Replication Agent：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">[tt705@west-mountain ~]$ ttRepAdmin -showstatus dsa</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Replication Agent Status as of: 2008-12-20 17:41:22</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">DSN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : dsa<br />
Process ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 4586 (Started)<br />
Replication Agent Policy&nbsp;&nbsp;&nbsp; : manual<br />
Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : WEST-MOUNTAIN<br />
RepListener Port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : <span style="color: #ff0000"><strong>20000 </strong></span><br />
Last write LSN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 63.1728920<br />
Last LSN forced to disk&nbsp;&nbsp;&nbsp;&nbsp; : 63.1728920<br />
Replication hold LSN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 63.1725672</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Replication Peers:<br />
&nbsp;&nbsp; Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : DSB<br />
&nbsp;&nbsp; Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : WEST-MOUNTAIN<br />
&nbsp;&nbsp; Port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0&nbsp; (Not Connected)<br />
&nbsp;&nbsp; Replication State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : STARTED<br />
&nbsp;&nbsp; Communication Protocol&nbsp;&nbsp; : 24</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">TRANSMITTER thread(s):<br />
&nbsp;For&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : DSB<br />
&nbsp;&nbsp; Start/Restart count&nbsp;&nbsp; : 1<br />
&nbsp;&nbsp; Send LSN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 63.1725672<br />
&nbsp;&nbsp; Transactions sent&nbsp;&nbsp;&nbsp;&nbsp; : 0<br />
&nbsp;&nbsp; Total packets sent&nbsp;&nbsp;&nbsp; : 0<br />
&nbsp;&nbsp; Tick packets sent&nbsp;&nbsp;&nbsp;&nbsp; : 0<br />
&nbsp;&nbsp; Total Packets received: 0</span></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/faq/timesten-ports.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>缓冲区的大小和数据持久化的关系</title>
		<link>http://www.ttisql.com/faq/logbuff-persistence.html</link>
		<comments>http://www.ttisql.com/faq/logbuff-persistence.html#comments</comments>
		<pubDate>Thu, 25 Dec 2008 03:58:18 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[常 见 问 题]]></category>

		<category><![CDATA[durablecommits logbuffsize]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=391</guid>
		<description><![CDATA[&#160;
在标准文档replication.pdf中，有一段讲了缓冲区的大小和数据持久性之间的关系，现摘录翻译如下：
&#160;
关于日志缓冲去的大小和数据的持久化
&#160;
一个普通的误解就是日志缓冲区的大小和可能丢失的事务之间存在着某种关系，实际上日志缓冲区的大小不会对数据的持久化有影响。
&#160;
当DSN配置为DurableCommits=0的时候，事务在如下情况下被永久化写入磁盘：
&#160;
Log Buffer 满的时候
&#160;
当显式调用ttDurableCommit 或者连接中的事务配置成DurableCommits=1的时候
&#160;
当Replication Agent发送一包数据，且Replication被配置成Transmit Durable的时候
&#160;
当Replication Agent定时执行Durable Commit的时候
&#160;
当DSN配置有LogFlushMethod=2，且在控制返回给应用之前，写入已经完成。
&#160;
所以综上所述，在上述的环境下，日志缓冲区的大小对数据的持久化没有冲击。个人理解是在DurableCommits=1的情况下，没什么好说的，每次提交都是同步到磁盘，所以数据的持久化上最好，但性能很差。在DurableCommits=0的情况下，只要牵涉到其中隐藏有DurableCommits=1的情形，即可导致数据的持久化。所以在此之前的数据也就不用担心事务丢失了。
&#160;
但如果不在上述情况下，发生断电或者其它异常，且DurableCommits=0时，肯定还是存在一定的时间窗口会导致事务的丢失的，但个人觉得和缓冲区的大小也没什么关系，按照TimesTen的架构，异步写入磁盘的过程是能做多快就做多快的，所以即使丢失，也只是丢失最后一部分没有被写入的事务。如果要做到高性能且数据零丢失的话，就只能用Replication了。单节点理论上总是存在着限制。
&#160;
&#160;
&#160;
&#160;
原文如下：
&#160;
A common misconception among TimesTen users is that there is a relationship between the size of the log buffer and lost transactions. The size of the log buffer has no impact on persistence.
If your DSN is configured with DurableCommits=0, then transactions are written durably to disk only under [...]]]></description>
			<content:encoded><![CDATA[<div>&nbsp;</div>
<div>在标准文档replication.pdf中，有一段讲了缓冲区的大小和数据持久性之间的关系，现摘录翻译如下：</div>
<div>&nbsp;</div>
<div>关于日志缓冲去的大小和数据的持久化</div>
<div>&nbsp;</div>
<div>一个普通的误解就是日志缓冲区的大小和可能丢失的事务之间存在着某种关系，实际上日志缓冲区的大小不会对数据的持久化有影响。</div>
<div>&nbsp;</div>
<div>当DSN配置为DurableCommits=0的时候，事务在如下情况下被永久化写入磁盘：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px">Log Buffer 满的时候</div>
<div style="margin-left: 40px">&nbsp;</div>
<div style="margin-left: 40px">当显式调用ttDurableCommit 或者连接中的事务配置成DurableCommits=1的时候</div>
<div style="margin-left: 40px">&nbsp;</div>
<div style="margin-left: 40px">当Replication Agent发送一包数据，且Replication被配置成Transmit Durable的时候</div>
<div style="margin-left: 40px">&nbsp;</div>
<div style="margin-left: 40px">当Replication Agent定时执行Durable Commit的时候</div>
<div style="margin-left: 40px">&nbsp;</div>
<div style="margin-left: 40px">当DSN配置有LogFlushMethod=2，且在控制返回给应用之前，写入已经完成。</div>
<div>&nbsp;</div>
<div>所以综上所述，在上述的环境下，日志缓冲区的大小对数据的持久化没有冲击。个人理解是在DurableCommits=1的情况下，没什么好说的，每次提交都是同步到磁盘，所以数据的持久化上最好，但性能很差。在DurableCommits=0的情况下，只要牵涉到其中隐藏有DurableCommits=1的情形，即可导致数据的持久化。所以在此之前的数据也就不用担心事务丢失了。</div>
<div>&nbsp;</div>
<div>但如果不在上述情况下，发生断电或者其它异常，且DurableCommits=0时，肯定还是存在一定的时间窗口会导致事务的丢失的，但个人觉得和缓冲区的大小也没什么关系，按照TimesTen的架构，异步写入磁盘的过程是能做多快就做多快的，所以即使丢失，也只是丢失最后一部分没有被写入的事务。如果要做到高性能且数据零丢失的话，就只能用Replication了。单节点理论上总是存在着限制。</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>原文如下：</div>
<div>&nbsp;</div>
<div>A common misconception among TimesTen users is that there is a relationship between the size of the log buffer and lost transactions. The size of the log buffer has no impact on persistence.<br />
If your DSN is configured with DurableCommits=0, then transactions are written durably to disk only under the following circumstances:</div>
<div style="margin-left: 40px">
When the log buffer fills up.<br />
When a ttDurableCommit is called or when a transaction on a connection with DurableCommits=1 is committed or rolled back.<br />
When the replication agent sends a batch of transactions to a subscriber and the master has been configured for replication with the TRANSMIT DURABLE attribute (the default). <br />
When the replication agent periodically executes a durable commit, whether the primary store is configured with TRANSMIT DURABLE or not.<br />
When your DSN is configured with LogFlushMethod=2, writes are written to disk before control is returned to the application.<br />
&nbsp;</div>
<div>The size of the log buffer has no influence on the ability of TimesTen to write data to disk under any of the circumstances listed above.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/faq/logbuff-persistence.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>TimesTen for Windows 使用指南(4) Cache Connect</title>
		<link>http://www.ttisql.com/faq/tt-windows-usage-4.html</link>
		<comments>http://www.ttisql.com/faq/tt-windows-usage-4.html#comments</comments>
		<pubDate>Wed, 24 Dec 2008 15:31:18 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[常 见 问 题]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=388</guid>
		<description><![CDATA[&#160;
下面介绍在Windows平台上，TimesTen如何通过Cache Connect访问Oracle。如果试验的时候，Oracle是和TimesTen在同一台机子上，则不用过多的配置。如果Oracle和TimesTen不在同一台机子上，则必须安装Oracle的客户端程序，目前TimesTen支持的Oracle客户端如下：
&#160;
Oracle 10g Release 2 (Oracle 10.2.0.1.0 or above)
Oracle 10g Release 1 (Oracle 10.1.0.5.0 or above)
Oracle 9i Release 2 (Oracle 9.2.0.8.0 or above)
&#160;
不管通过哪种Oracle模式，首先必须启动Oracle数据库以及listener。
&#160;
D:\&#62;oradim -startup -sid orcl -syspwd welcome
D:\&#62;lsnrctl
&#160;
并能成功地通过和TimesTen在同一台服务器上的SqlPlus来成功访问Oracle，才算Oracle配置好。
&#160;
由于Cache Connect访问Oracle的时候，必须有一个用户在TimesTen和Oracle中是一样的，通过这个用户登录TimesTen之后，然后Cache Connect的底层通过这个用户去和Oracle通讯，来进行数据的两边同步。在前面我们已经创建了用户tt，那么现在在oracle中，我们也创建同样的用户tt，并授予相应的Oracle权限。
&#160;
sqlplus / as sysdba
SQL&#62; CREATE USER tt IDENTIFIED BY tt;
SQL&#62; GRANT connect, resource, create any trigger TO testuser;
SQL&#62; COMMIT;
SQL&#62; EXIT
&#160;
现在到控制面板&#8211;&#62;ODBC数据源管理&#8211;&#62;系统DSN&#8211;&#62;test，双击之后，点击General Connection页，在User Id这一栏填上tt，如下：
&#160;
&#160;







&#160;
&#160;
然后再点击Cache Connect页，看到Oracle User ID已经填上了tt，且不能被修改了，这是因为这个用户名必须和TimesTen中的一样。在Oracle ID一栏填上Oracle的Service [...]]]></description>
			<content:encoded><![CDATA[<div>&nbsp;</div>
<div>下面介绍在Windows平台上，TimesTen如何通过Cache Connect访问Oracle。如果试验的时候，Oracle是和TimesTen在同一台机子上，则不用过多的配置。如果Oracle和TimesTen不在同一台机子上，则必须安装Oracle的客户端程序，目前TimesTen支持的Oracle客户端如下：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Oracle 10g Release 2 (Oracle 10.2.0.1.0 or above)<br />
Oracle 10g Release 1 (Oracle 10.1.0.5.0 or above)<br />
Oracle 9i Release 2 (Oracle 9.2.0.8.0 or above)</span></div>
<div>&nbsp;</div>
<div>不管通过哪种Oracle模式，首先必须启动Oracle数据库以及listener。</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:\&gt;oradim -startup -sid orcl -syspwd welcome</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:\&gt;lsnrctl</span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div>并能成功地通过和TimesTen在同一台服务器上的SqlPlus来成功访问Oracle，才算Oracle配置好。</div>
<div>&nbsp;</div>
<div>由于Cache Connect访问Oracle的时候，必须有一个用户在TimesTen和Oracle中是一样的，通过这个用户登录TimesTen之后，然后Cache Connect的底层通过这个用户去和Oracle通讯，来进行数据的两边同步。在前面我们已经创建了用户tt，那么现在在oracle中，我们也创建同样的用户tt，并授予相应的Oracle权限。</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">sqlplus / as sysdba</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">SQL&gt; CREATE USER tt IDENTIFIED BY tt;<br />
SQL&gt; GRANT connect, resource, create any trigger TO testuser;<br />
SQL&gt; COMMIT;<br />
SQL&gt; EXIT</span></div>
<div>&nbsp;</div>
<div>现在到控制面板&#8211;&gt;ODBC数据源管理&#8211;&gt;系统DSN&#8211;&gt;test，双击之后，点击General Connection页，在User Id这一栏填上tt，如下：</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="384" cellspacing="1" cellpadding="1" width="509" align="center" border="0">
<tbody>
<tr>
<td><img alt="" src="http://www.ttisql.com/images/win-usage-10.jpg" /></td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>然后再点击Cache Connect页，看到Oracle User ID已经填上了tt，且不能被修改了，这是因为这个用户名必须和TimesTen中的一样。在Oracle ID一栏填上Oracle的Service Name，在Oracle Password一栏填上对应的密码。如下图所示：</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="386" cellspacing="1" cellpadding="1" width="510" align="center" border="0">
<tbody>
<tr>
<td><img alt="" src="http://www.ttisql.com/images/win-usage-11.jpg" /></td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>点击确定即可。现在用tt用户登录Oracle数据库，并创建测试用的表。</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">SQL&gt; connect </span><a href="mailto:tt/tt@orcl"><span style="background-color: #9999ff">tt/tt@orcl</span></a><span style="background-color: #9999ff"><br />
已连接。<br />
SQL&gt; create table test(a int primary key, b char(10));</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">表已创建。</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">SQL&gt; insert into test values(1,&#8217;aaa&#8217;);</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">已创建 1 行。</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">SQL&gt; insert into test values(2,&#8217;bbb&#8217;);</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">已创建 1 行。</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">SQL&gt; commit;</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">提交完成。</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">SQL&gt;</span></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>用ttisql登录到test数据源，设置好cacheuidpwd，启动cache agent，并创建只读的cache group，如下：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:\&gt;ttisql test</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Copyright (c) 1996-2008, Oracle.&nbsp; All rights reserved.<br />
Type ? or &quot;help&quot; for help, type &quot;exit&quot; to quit ttIsql.<br />
All commands must end with a semicolon character.</span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">connect &quot;DSN=test&quot;;<br />
Enter password for &#8216;tt&#8217;:<br />
Connection successful: DSN=test;UID=tt;DataStore=C:\TimesTen\ds\test;DatabaseCha<br />
racterSet=ZHS16GBK;ConnectionCharacterSet=US7ASCII;DRIVER=C:\TimesTen\tt70_32\bi<br />
n\ttdv70.dll;OracleId=orcl;TypeMode=0;<br />
(Default setting AutoCommit=1)<br />
Command&gt; call ttcacheuidpwdset(&#8217;tt&#8217;,'tt&#8217;);<br />
Command&gt; call ttcachestart;<br />
Command&gt; create readonly cache group read<br />
&gt;&nbsp; autorefresh interval 5 seconds<br />
&gt;&nbsp; from test<br />
&gt; (a int primary key, b char(10));<br />
Command&gt;</span></div>
<div>&nbsp;</div>
<div>这里要说明的是，如果前面创建test的时候的字符集和Oracle数据库中的字符集不一样的话，就会报错而不能登录。这时候要统一两者的字符集，为方便起见，修改test数据源的字符集。首先必须destroy掉test数据源（通过控制台命令ttdestroy test完成），因为字符集是在数据源创建的时候起作用的，所以只能destroy掉，然后在ODBC数据源管理中修改test数据源的字符集，使得它和Oracle的一样，然后执行上面的步骤即可。</div>
<div>&nbsp;</div>
<div>创建完之后可以通过cachegroups命令检查一下，并通过load加载初始化数据：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Command&gt; cachegroups ;</span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Cache Group TT.READ:</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&nbsp; Cache Group Type: Read Only<br />
&nbsp; Autorefresh: Yes<br />
&nbsp; Autorefresh Mode: Incremental<br />
&nbsp; Autorefresh State: Paused<br />
&nbsp; Autorefresh Interval: 5 Seconds</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&nbsp; Root Table: TT.TEST<br />
&nbsp; Table Type: Read Only</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">1 cache group found.</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff"><br />
Command&gt; load cache group read commit every 10 rows;<br />
2 cache instances affected.<br />
Command&gt; select * from test;<br />
&lt; 1, aaa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br />
&lt; 2, bbb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br />
2 rows found.<br />
Command&gt;</span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div>此后，在Oracle数据库中插入到test表的数据，5秒钟之后都会被刷新到TimesTen中来，Cache Connect正常运转了。通过ttstatus命令可以看到cache agent已经启动：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:\&gt;ttstatus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cache<br />
TimesTen status report as of Wed Dec 24 23:28:50 2008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
Daemon pid 284 port 17000 instance tt70_32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
TimesTen server pid 3284 started on port 17002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
TimesTen webserver pid 3360 started on port 17004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; <br />
Data store c:\timesten\ds\test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
There are 11 connections to the data store&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
Data store is in shared mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
Shared Memory KEY Global\test.SHM.2 HANDLE 0&#215;248&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PID&nbsp;&nbsp;&nbsp;&nbsp; Context&nbsp;&nbsp;&nbsp;&nbsp; Connection Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ConnID&nbsp; <br />
<span style="color: #ff0000"><strong>Cache Agent&nbsp;&nbsp;&nbsp;&nbsp; 3396&nbsp;&nbsp;&nbsp; 0&#215;00b5d310&nbsp; Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp; <br />
Cache Agent&nbsp;&nbsp;&nbsp;&nbsp; 3396&nbsp;&nbsp;&nbsp; 0&#215;00bccf18&nbsp; Timer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp; <br />
Cache Agent&nbsp;&nbsp;&nbsp;&nbsp; 3396&nbsp;&nbsp;&nbsp; 0&#215;06591ce0&nbsp; Aging&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp; <br />
Cache Agent&nbsp;&nbsp;&nbsp;&nbsp; 3396&nbsp;&nbsp;&nbsp; 0&#215;06601260&nbsp; ttora70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp; <br />
Cache Agent&nbsp;&nbsp;&nbsp;&nbsp; 3396&nbsp;&nbsp;&nbsp; 0&#215;06662fb8&nbsp; ttora70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp; <br />
</strong></span>Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;006cc398&nbsp; Worker&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2042&nbsp; <br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;066d1170&nbsp; Flusher&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2043&nbsp; <br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;06700628&nbsp; Checkpoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2044&nbsp; <br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;0674f8b0&nbsp; Aging&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2045&nbsp; <br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;0679eb38&nbsp; HistGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2046&nbsp; <br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;067eded0&nbsp; Monitor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2047&nbsp; <br />
Replication policy&nbsp; : Manual&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
Cache agent policy&nbsp; : Manual&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<span style="color: #ff0000"><strong>TimesTen&#8217;s Cache agent is running for this data store&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong></span><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; <br />
Access control enabled.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
End of report&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
D:\&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div>&nbsp;</div>
<div>而且还多了一堆辅助的子线程。</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/faq/tt-windows-usage-4.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>TimesTen for Windows 使用指南(3) 远程客户端配置</title>
		<link>http://www.ttisql.com/faq/tt-windows-usage-3.html</link>
		<comments>http://www.ttisql.com/faq/tt-windows-usage-3.html#comments</comments>
		<pubDate>Wed, 24 Dec 2008 13:43:43 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[常 见 问 题]]></category>

		<category><![CDATA[client server 配置]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=382</guid>
		<description><![CDATA[&#160;
有的时候需要Client/Server模式的连接方式，那么针对前面的test 数据源，如果把它作为Server端的话，如何配置Client端呢？
&#160;
和Oracle数据库类似，如果要配置TimesTen的客户端，必须首先安装包含有TimesTen客户端的软件，当然如果你选择的是完全安装的话，就已经包含了客户端的。现在我们在同一台机子上模拟Client/Server模式的连接。
&#160;
前面安装TimesTen的时候，我们已经选择了完全安装，现在我们直接创建Client端的数据源，这个Client端的数据源是一个逻辑的概念，它会指向客户端的数据源。
&#160;
在控制面板&#8211;&#62;ODBC数据源管理&#8211;&#62;系统DSN&#8211;&#62;添加，这时候不象前面创建数据源的时候选择TimesTen Data Manager 7.0，而是选择TimesTen Client 7.0。如下：
&#160;
&#160;









&#160;
&#160;
点击完成。在弹出的Oracle TimesTen Client DSN Setup窗口中点击右边的Servers&#8230;按钮，弹出Oracle TimesTen Logic Server List窗口，现在还是空白的，点击Add&#8230;按钮，弹出如下的界面：
&#160;
&#160;







&#160;
&#160;
这里面的Server Name是你想给你的服务器端的机子起一个什么样的名字，比如说我们这里命名为west。Description可不填，是针对服务器端的一个说明。Network则比较重要了，填你服务器端的IP地址，我们因为是在同一台机子上，所以可填上 127.0.0.1，端口号怎么确定呢？一般来说，32位平台上缺省的是17002，我们也可以通过如下控制台命令去确认：
&#160;
D:&#62;ttdaemonadmin -start
TimesTen Data Manager 7.0 服务正在启动 .
TimesTen Data Manager 7.0 服务已经启动成功。

D:&#62;ttstatus
TimesTen status report as of Wed Dec 24 21:05:19 2008
Daemon pid 284 port 17000 instance tt70_32
TimesTen server pid 3284 started on port 17002
TimesTen webserver pid 3360 started on port [...]]]></description>
			<content:encoded><![CDATA[<div>&nbsp;</div>
<div>有的时候需要Client/Server模式的连接方式，那么针对前面的test 数据源，如果把它作为Server端的话，如何配置Client端呢？</div>
<div>&nbsp;</div>
<div>和Oracle数据库类似，如果要配置TimesTen的客户端，必须首先安装包含有TimesTen客户端的软件，当然如果你选择的是完全安装的话，就已经包含了客户端的。现在我们在同一台机子上模拟Client/Server模式的连接。</div>
<div>&nbsp;</div>
<div>前面安装TimesTen的时候，我们已经选择了完全安装，现在我们直接创建Client端的数据源，这个Client端的数据源是一个逻辑的概念，它会指向客户端的数据源。</div>
<div>&nbsp;</div>
<div>在控制面板&#8211;&gt;ODBC数据源管理&#8211;&gt;系统DSN&#8211;&gt;添加，这时候不象前面创建数据源的时候选择TimesTen Data Manager 7.0，而是选择TimesTen Client 7.0。如下：</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="341" cellspacing="1" cellpadding="1" width="470" align="center" border="0">
<tbody>
<tr>
<td>
<div><img alt="" src="http://www.ttisql.com/images/win-usage-5.jpg" /></div>
</td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>点击完成。在弹出的Oracle TimesTen Client DSN Setup窗口中点击右边的Servers&#8230;按钮，弹出Oracle TimesTen Logic Server List窗口，现在还是空白的，点击Add&#8230;按钮，弹出如下的界面：</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="378" cellspacing="1" cellpadding="1" width="470" align="center" border="0">
<tbody>
<tr>
<td><img alt="" src="http://www.ttisql.com/images/win-usage-6.jpg" /></td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>这里面的Server Name是你想给你的服务器端的机子起一个什么样的名字，比如说我们这里命名为west。Description可不填，是针对服务器端的一个说明。Network则比较重要了，填你服务器端的IP地址，我们因为是在同一台机子上，所以可填上 127.0.0.1，端口号怎么确定呢？一般来说，32位平台上缺省的是17002，我们也可以通过如下控制台命令去确认：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:&gt;ttdaemonadmin -start<br />
TimesTen Data Manager 7.0 服务正在启动 .<br />
TimesTen Data Manager 7.0 服务已经启动成功。</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff"><br />
</span><span style="background-color: #9999ff">D:&gt;ttstatus<br />
TimesTen status report as of Wed Dec 24 21:05:19 2008</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Daemon pid 284 port 17000 instance tt70_32<br />
TimesTen server pid 3284 started on port 17002<br />
TimesTen webserver pid 3360 started on port 17004</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Data store c:timestendstest<br />
There are no connections to the data store<br />
Replication policy&nbsp; : Manual<br />
Cache agent policy&nbsp; : Manual<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Access control enabled.<br />
End of report</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:&gt;</span><br />
&nbsp;</div>
<div>&nbsp;</div>
<div>这里可以看到 TimesTen server pid 3284 started on port 17002。则确定端口号确实是17002。所以最终填的信息如下图：</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="374" cellspacing="1" cellpadding="1" width="469" align="center" border="0">
<tbody>
<tr>
<td>&nbsp;<img alt="" src="http://www.ttisql.com/images/win-usage-7.jpg" /></td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>然后点击OK，会看到Oracle TimesTen Logic Server List多了一个Logic Server 叫west，然后点击Close。回到如下的界面，在Server Name or Network下拉式列表框中看到有west选择，点击紧贴着的下面refresh按钮，如果服务器端的IP地址，端口号，以及服务器端的TimesTen Daemon已经起来的话，将会列出所有服务器端的数据源。如下所示：</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="378" cellspacing="1" cellpadding="1" width="466" align="center" border="0">
<tbody>
<tr>
<td><img alt="" src="http://www.ttisql.com/images/win-usage-8.jpg" /></td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>看到其中有我们前面创建的test数据源，选择它。在Client DSN一栏填上你想为客户端数据源的命名；Description可不填，只是一个说明；User ID 填上我们前面已经创建好的用户tt，密码也为tt。在点击OK之前，还可以点击最下面的两个大按钮，&quot;Test Oracle TimesTen Server Connection&quot; 以及 &quot;Test Data Source Connection&quot; ，应该可以看到成功的提示。所以这个弹出窗口填的信息如下：</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="375" cellspacing="1" cellpadding="1" width="471" align="center" border="0">
<tbody>
<tr>
<td><img alt="" src="http://www.ttisql.com/images/win-usage-9.jpg" /></td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>点击OK之后可以看到系统DSN定义中多了一个test_client的新数据源。这时候可以通过ttisql去连接一下试试：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">C:TimesTentt70_32bin&gt;ttisql test_client</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Copyright (c) 1996-2008, Oracle.&nbsp; All rights reserved.<br />
Type ? or &quot;help&quot; for help, type &quot;exit&quot; to quit ttIsql.<br />
All commands must end with a semicolon character.</span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">connect &quot;DSN=test_client&quot;;<br />
Connection successful: DSN=test_client;TTC_SERVER=west;TTC_SERVER_DSN=test;UID=t<br />
t;DATASTORE=C:TimesTendstest;DATABASECHARACTERSET=AL32UTF8;CONNECTIONCHARACTE<br />
RSET=US7ASCII;TYPEMODE=0;<br />
(Default setting AutoCommit=1)<br />
Command&gt;</span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div>可以看到反馈的信息有TTC_SERVER和TTC_SERVER_DSN。再次通过ttstatus可以看到不一样的信息：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:&gt;ttstatus<br />
TimesTen status report as of Wed Dec 24 21:39:15 2008</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Daemon pid 284 port 17000 instance tt70_32<br />
TimesTen server pid 3284 started on port 17002<br />
TimesTen webserver pid 3360 started on port 17004</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Data store c:timestendstest<br />
There are 7 connections to the data store<br />
Data store is in shared mode<br />
Shared Memory KEY Globaltest.SHM.2 HANDLE 0&#215;1f8<br />
Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PID&nbsp;&nbsp;&nbsp;&nbsp; Context&nbsp;&nbsp;&nbsp;&nbsp; Connection Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Conn<br />
<span style="color: #ff0000"><strong>Server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2852&nbsp;&nbsp;&nbsp; 0&#215;0092db50&nbsp; test_client<br />
&nbsp;&nbsp;&nbsp; (Client Information: pid: 2160; IPC: TCP/IP;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node: west(127.0.0.1))<br />
</strong></span>Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;006cc398&nbsp; Worker&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;06661d20&nbsp; Flusher&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;066d1218&nbsp; Checkpoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;067204a0&nbsp; Aging&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;0676f728&nbsp; HistGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3120&nbsp;&nbsp;&nbsp; 0&#215;067be9b0&nbsp; Monitor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20<br />
Replication policy&nbsp; : Manual<br />
Cache agent policy&nbsp; : Manual<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Access control enabled.<br />
End of report</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:&gt;</span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div>至此，windows上的客户端服务器模式配置完成。要注意的是，在UNIX平台上，只能通过ttisqlcs去连接客户端的数据源，而不是和windows平台一样通过ttisql。</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/faq/tt-windows-usage-3.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>TimesTen for Windows 使用指南(2)</title>
		<link>http://www.ttisql.com/faq/tt-windows-usage-2.html</link>
		<comments>http://www.ttisql.com/faq/tt-windows-usage-2.html#comments</comments>
		<pubDate>Tue, 23 Dec 2008 06:30:22 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[常 见 问 题]]></category>

		<category><![CDATA[使用]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=337</guid>
		<description><![CDATA[&#160;
针对刚创建的test数据源，现在可以直接通过ttisql访问了。
&#160;
启动一个Windows命令行控制台：
&#160;
D:\&#62;ttisql test
Copyright (c) 1996-2008, Oracle.&#160; All rights reserved.
Type ? or &#34;help&#34; for help, type &#34;exit&#34; to quit ttIsql.
All commands must end with a semicolon character.
&#160;
connect &#34;DSN=test&#34;;
Connection successful: DSN=test;UID=canoe;DataStore=C:\TimesTen\ds\test;Database
CharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;DRIVER=C:\TimesTen\tt70_32
\bin\ttdv70.dll;TypeMode=0;
(Default setting AutoCommit=1)
Command&#62;
&#160;
可以看到连接到test之后，有些相应的反馈信息。比如UID=canoe，因为我们现在没有创建TimesTen的内部用户，所以缺省地使用安装TimesTen时候的操作系统用户，该用户就相当于TimesTen的DBA用户，类似于Oracle的sys用户。另外还可以看到放置DataStore的目录，进入这个目录下查看，发现已有如下的文件存在：
&#160;
&#160;C:\TimesTen\ds 的目录
2008-12-23&#160; 13:54&#160;&#160;&#160; &#60;DIR&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .
2008-12-23&#160; 13:54&#160;&#160;&#160; &#60;DIR&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ..
2008-12-23&#160; 13:54&#160;&#160;&#160;&#160;&#160;&#160;&#160; 11,782,364 test.ds0
2008-12-23&#160; 13:54&#160;&#160;&#160;&#160;&#160;&#160;&#160; 11,782,364 test.ds1
2008-12-23&#160; 13:54&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 524,288 test.log0
2008-12-23&#160; 13:54&#160;&#160;&#160;&#160;&#160;&#160;&#160; 67,108,864 test.res0
2008-12-23&#160; 13:54&#160;&#160;&#160;&#160;&#160;&#160;&#160; 67,108,864 test.res1
2008-12-23&#160; 13:54&#160;&#160;&#160;&#160;&#160;&#160;&#160; 67,108,864 test.res2
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<div>&nbsp;</div>
<div>针对刚创建的test数据源，现在可以直接通过ttisql访问了。</div>
<div>&nbsp;</div>
<div>启动一个Windows命令行控制台：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">D:\&gt;ttisql test</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Copyright (c) 1996-2008, Oracle.&nbsp; All rights reserved.<br />
Type ? or &quot;help&quot; for help, type &quot;exit&quot; to quit ttIsql.<br />
All commands must end with a semicolon character.</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&nbsp;</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">connect &quot;DSN=test&quot;;<br />
Connection successful: DSN=test;UID=canoe;DataStore=C:\TimesTen\ds\test;Database<br />
CharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;DRIVER=C:\TimesTen\tt70_32<br />
\bin\ttdv70.dll;TypeMode=0;<br />
(Default setting AutoCommit=1)<br />
Command&gt;</span></div>
<div>&nbsp;</div>
<div>可以看到连接到test之后，有些相应的反馈信息。比如UID=canoe，因为我们现在没有创建TimesTen的内部用户，所以缺省地使用安装TimesTen时候的操作系统用户，该用户就相当于TimesTen的DBA用户，类似于Oracle的sys用户。另外还可以看到放置DataStore的目录，进入这个目录下查看，发现已有如下的文件存在：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&nbsp;C:\TimesTen\ds 的目录</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">2008-12-23&nbsp; 13:54&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br />
2008-12-23&nbsp; 13:54&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br />
2008-12-23&nbsp; 13:54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11,782,364 test.ds0<br />
2008-12-23&nbsp; 13:54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11,782,364 test.ds1<br />
2008-12-23&nbsp; 13:54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 524,288 test.log0<br />
2008-12-23&nbsp; 13:54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 67,108,864 test.res0<br />
2008-12-23&nbsp; 13:54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 67,108,864 test.res1<br />
2008-12-23&nbsp; 13:54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 67,108,864 test.res2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 个文件&nbsp;&nbsp;&nbsp; 225,415,608 字节<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 个目录&nbsp; 2,556,182,528 可用字节</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">C:\TimesTen\ds&gt;</span></div>
<div>&nbsp;</div>
<div>有两个DataStore的文件(ds0,ds1)，这个是放真实的数据的文件，和内存中的数据想对应，是内存中数据的一个镜像。要创建两个DS文件的目的是为了安全起见，当正在写一个DS文件时，如果因为故障导致该文件被破坏，还可以从另一个文件中恢复。所以每次TimesTen写到DS文件的时候，总是写比较旧的那个。一般的情况下可能两个文件的大小稍微有点差异，当做完checkpoint的时候，两个文件可以确定是一样大的。</div>
<div>&nbsp;</div>
<div>另外还有一个日志文件(test.log0)，如果没有定义LogDir的话，缺省就和DataStore文件放在同一个目录下。日志文件名字的最后一位是阿拉伯数字，随着系统的使用，这个数字会增长。旧的日志会被自动清除。</div>
<div>&nbsp;</div>
<div>还可以看到，有三个res的文件(res0,res1,res2)，res是reserve的缩写，即储备的意思。每个和LogFileSize一样大。它们的作用是保证当某些极端的情况下，如果磁盘因为某些其它原因快被耗尽，TimesTen会从这三个文件中释放出一定的空间来保证最后的事务可以正常提交或者回滚，而不至于导致系统被hang在那。</div>
<div>&nbsp;</div>
<div>另起一个控制台，执行ttstatus命令：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">C:\TimesTen\ds&gt;ttstatus<br />
TimesTen status report as of Tue Dec 23 14:09:22 2008</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Daemon pid 3296 port 17000 instance tt70_32<br />
TimesTen server pid 1860 started on port 17002<br />
TimesTen webserver pid 3308 started on port 17004</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Data store c:\timesten\ds\test<br />
There are 7 connections to the data store<br />
Data store is in shared mode<br />
Shared Memory KEY Global\test.SHM.2 HANDLE 0&#215;240<br />
Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PID&nbsp;&nbsp;&nbsp;&nbsp; Context&nbsp;&nbsp;&nbsp;&nbsp; Connection Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ConnID<br />
Process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2600&nbsp;&nbsp;&nbsp; 0&#215;00daada8&nbsp; test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2248&nbsp;&nbsp;&nbsp; 0&#215;006cc398&nbsp; Worker&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2042<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2248&nbsp;&nbsp;&nbsp; 0&#215;06661db0&nbsp; Flusher&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2043<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2248&nbsp;&nbsp;&nbsp; 0&#215;066c1040&nbsp; Checkpoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2044<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2248&nbsp;&nbsp;&nbsp; 0&#215;067102c8&nbsp; Aging&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2045<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2248&nbsp;&nbsp;&nbsp; 0&#215;0675f550&nbsp; HistGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2046<br />
Subdaemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2248&nbsp;&nbsp;&nbsp; 0&#215;067ae7d8&nbsp; Monitor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2047<br />
Replication policy&nbsp; : Manual<br />
Cache agent policy&nbsp; : Manual<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Access control enabled.<br />
End of report</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">C:\TimesTen\ds&gt;</span></div>
<div>&nbsp;</div>
<div>可以看到 DataStore c:\timesten\ds\test 已经在运行了，且有一些后台的服务线程也已经启动。 且显示了相应的TimesTen监听端口号。比如主守护进程(Daemon)的端口号是17000；Server端的监听端口号是17002，这个端口号是当Client/Server配置的时候，远程Client端连接过来时，Server端这边的服务端口号；还有WebServer的端口号17004，TimesTen自身带有一个自用的webserver的。<br />
&nbsp;</div>
<div>在后台的服务线程中（都是同一个进程号2248），worker子线程负责死锁的检测等相关任务，flusher子线程负责将日志写入磁盘，checkpoint子线程负责做checkpoint，保持数据的完整性，aging子线程负责数据的定时过期，HistGC负责垃圾回收，monitor子线程负责锁的等待相关的机制。</div>
<div>&nbsp;</div>
<div>&nbsp;现在回到ttisql test登录后的控制台界面上，创建一个新的TimesTen内部用户，要注意的是ttisql里面的命令都是以分号作为命令的结束符的：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Command&gt; create user tt identified by &#8216;tt&#8217;;<br />
Command&gt; grant all to tt;<br />
Command&gt;</span></div>
<div>&nbsp;</div>
<div>可以敲入问号(?) 查看所有在ttisql上<a target="popup" href="http://www.ttisql.com/ttref/ttisqlcommand.html"><span style="color: #3333ff"><strong>可用的命令</strong></span></a>，还可以输入procedures查看所有可用的<a target="popup" href="http://www.ttisql.com/ttref/procedures.html"><span style="color: #3333ff"><strong>内部存储过程</strong></span></a>。</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Command&gt;?</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Command&gt;procedures;</span></div>
<div>&nbsp;</div>
<div>可以查看目前系统中所有的表：</div>
<div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Command&gt;tables;</span></div>
<div>&nbsp;</div>
<div>以及创建自己的表和插入数据：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Command&gt; create table student(id int primary key,name char(20));<br />
Command&gt; insert into student values(1,&#8217;china&#8217;);<br />
1 row inserted.<br />
Command&gt; insert into student values(2,&#8217;us&#8217;);<br />
1 row inserted.<br />
Command&gt; commit;<br />
Command&gt; select * from student;<br />
&lt; 1, china&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br />
&lt; 2, us&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br />
2 rows found.<br />
Command&gt; drop table student;<br />
Command&gt;</span></div>
<div>&nbsp;</div>
<div>所有的语法基本上和Oracle类似，具体可以参考<a target="popup" href="http://www.ttisql.com/download/standarddoc.html"><span style="color: #3333ff"><strong>标准文档</strong></span></a>中的sql.pdf</div>
<div>&nbsp;</div>
</div>
<div>&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/faq/tt-windows-usage-2.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>TimesTen for Windows 使用指南(1)</title>
		<link>http://www.ttisql.com/faq/tt-windows-usage-1.html</link>
		<comments>http://www.ttisql.com/faq/tt-windows-usage-1.html#comments</comments>
		<pubDate>Fri, 19 Dec 2008 14:51:24 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[常 见 问 题]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=353</guid>
		<description><![CDATA[&#160;
基于前面介绍的TimesTen for Windows 安装之后，下面介绍如何登录TimesTen？如何创建数据库？如何创建表？等等相关的概念。
&#160;
在安装完之后，在开始菜单的程序里面有一项是TimesTen的，如下：
&#160;
&#160;








&#160;
其中有很多Demo可以去试试，关于Demo的说明可以参考编程索引，比较典型的一个是Throughput Benchmark Demo，试运行如下：
&#160;
Connecting to the data source
Populating benchmark data store
Beginning execution with 1 process: 80% read, 20% update, 0% insert, 0% delete
Elapsed time:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 171.0 msec
Transaction rate:&#160;&#160;&#160; 58479.5 transactions/second
&#160;
发现性能还是不错的，虽然只是在单CPU的笔记本上运行。可以通过下面的命令来查看这个Demo的参数，比如线程的个数，以及Select 、Update、Insert 和 Delete 的比例等等。
&#160;
C:\TimesTen\tt70_32\demo\PERFOR~1&#62;tptbm -help
&#160;
&#160;所有的文档也都在这里面。以及TimesTen的重要工具，ttisql，它类似于Oracle 的Sqlplus。通过它可以直接访问TimesTen，查看数据，创建表等等。
&#160;
在进行下一步之前，先创建一个TimesTen的数据库，也叫DataStore。打开Windows 的控制面板中的数据源(ODBC)，可以看到在系统DSN（DataStore Name）中已经有很多TimesTen的DSN定义了，这些DataStore是为TimesTen的Demo准备的，我们刚才运行Throughput Benchmark Demo的时候，实际上已经连接了其中的一个库。&#160;
&#160;
&#160;









&#160;

&#160;接下来，创建一个新的DataStore，名字叫 test。在控制面板的 ODBC数据源管理器中，点击添加：
&#160;
&#160;









&#160;
&#160;
有两个针对TimesTen的驱动，一个是Client，一个是Data Manager。Client的选择我们稍候具体介绍，它一般意味着TimesTen的Server端在另一台机子上。现在我们选择 TimesTen Data Manager 。点击完成。&#160;
&#160;
&#160;









&#160;
正式进入到了DSN的配置了，一共有 DataStore / FirstConnection/General Connection/NLS Connection/Cache Connect/Server 六个配置页。第一页是DataStore：
&#160;

DataSource [...]]]></description>
			<content:encoded><![CDATA[<div>&nbsp;</div>
<div>基于前面介绍的<a target="popup" href="http://www.ttisql.com/download/install-on-windows.html"><span style="color: #3333ff"><strong>TimesTen for Windows 安装</strong></span></a>之后，下面介绍如何登录TimesTen？如何创建数据库？如何创建表？等等相关的概念。</div>
<div>&nbsp;</div>
<div>在安装完之后，在开始菜单的程序里面有一项是TimesTen的，如下：<br />
&nbsp;<br />
&nbsp;</div>
<table height="208" cellspacing="1" cellpadding="1" width="536" align="center" border="0">
<tbody>
<tr>
<td><img alt="" src="http://www.ttisql.com/images/win-usage-1.jpg" /></td>
</tr>
</tbody>
</table>
<div>
&nbsp;</div>
<div>其中有很多Demo可以去试试，关于Demo的说明可以参考<a target="popup" href="http://www.ttisql.com/develope/coding-doc-index.html">编程索引</a>，比较典型的一个是Throughput Benchmark Demo，试运行如下：</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Connecting to the data source<br />
Populating benchmark data store<br />
Beginning execution with 1 process: 80% read, 20% update, 0% insert, 0% delete</span></div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">Elapsed time:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 171.0 msec<br />
Transaction rate:&nbsp;&nbsp;&nbsp; 58479.5 transactions/second</span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div>发现性能还是不错的，虽然只是在单CPU的笔记本上运行。可以通过下面的命令来查看这个Demo的参数，比如线程的个数，以及Select 、Update、Insert 和 Delete 的比例等等。</div>
<div>&nbsp;</div>
<div style="margin-left: 40px"><span style="background-color: #9999ff">C:\TimesTen\tt70_32\demo\PERFOR~1&gt;tptbm -help</span></div>
<div style="margin-left: 40px">&nbsp;</div>
<div>&nbsp;所有的文档也都在这里面。以及TimesTen的重要工具，ttisql，它类似于Oracle 的Sqlplus。通过它可以直接访问TimesTen，查看数据，创建表等等。</div>
<div>&nbsp;</div>
<div>在进行下一步之前，先创建一个TimesTen的数据库，也叫DataStore。打开Windows 的控制面板中的数据源(ODBC)，可以看到在系统DSN（DataStore Name）中已经有很多TimesTen的DSN定义了，这些DataStore是为TimesTen的Demo准备的，我们刚才运行Throughput Benchmark Demo的时候，实际上已经连接了其中的一个库。&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="376" cellspacing="1" cellpadding="1" width="464" align="center" border="0">
<tbody>
<tr>
<td>
<div><img height="376" alt="" width="464" src="http://www.ttisql.com/images/win-usage-2.jpg" /></div>
</td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>
&nbsp;接下来，创建一个新的DataStore，名字叫 test。在控制面板的 ODBC数据源管理器中，点击添加：</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="341" cellspacing="1" cellpadding="1" width="469" align="center" border="0">
<tbody>
<tr>
<td>
<div><img height="341" alt="" width="469" src="http://www.ttisql.com/images/win-usage-3.jpg" /></div>
</td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>有两个针对TimesTen的驱动，一个是Client，一个是Data Manager。Client的选择我们稍候具体介绍，它一般意味着TimesTen的Server端在另一台机子上。现在我们选择 TimesTen Data Manager 。点击完成。&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<table height="387" cellspacing="1" cellpadding="1" width="508" align="center" border="0">
<tbody>
<tr>
<td>
<div><img alt="" src="http://www.ttisql.com/images/win-usage-4.jpg" /></div>
</td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>正式进入到了DSN的配置了，一共有 DataStore / FirstConnection/General Connection/NLS Connection/Cache Connect/Server 六个配置页。第一页是DataStore：</div>
<div>&nbsp;</div>
<ul>
<li>DataSource Name ：数据源的名称，我们填上test；</li>
<li>Description：可填可不填，我们这里填上 &lsquo;just for testing&rsquo;，只是一个说明而已。</li>
<li>Data Store Path +：将要放置数据库的地址，外加你想命令的DataStore的名字，为了好记起见，也命名为test。要注意的是，如果通过右边的Browse选择的话，选择好目录之后，一定要文件名里面写上将要命名的DataStore的名字，否则确定不了。</li>
<li>LogDirectory：存放日志的目录，也可以不选，缺省的是和DataStore在同一个目录下。</li>
<li>DatabaseCharacter Set：数据库的字符集，如果选错的话，只能将数据库drop掉，重新创建。现在我们选择 Al32UTF8。</li>
<li>TypeMode&nbsp;：数据类型以哪个为准，Oracle还是TimesTen，这个选项出现的原因是TimesTen以前的版本和Oracle的数据类型是不一样的，为了保证数据类型的兼容而已。缺省是Oracle，一般不选，使用缺省的值。特殊情况下具体定义数据类型。</li>
<li>DataStore Attributes：确定要创建的库是否是临时的，绝大部分情况下，都不选择创建临时库。是否允许Client端的连接，缺省为选上。</li>
<li>OS Group Restrict：哪个操作系统用户组的用户有访问TimesTen的权限。</li>
</ul>
<div>&nbsp;</div>
<div>&nbsp;我们按照上图的样子填上相应的信息，定义Data Store Path +的时候，要注意相关的路进要存在，最后加上DataStore的名字。然后点击确定，会看到多了一个名字叫 test 的数据源。后面就可以通过ttisql来访问这个test数据源了。&nbsp;</div>
<div>&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/faq/tt-windows-usage-1.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Flush Cache Group 简介</title>
		<link>http://www.ttisql.com/cachegroup/flush-cache-group.html</link>
		<comments>http://www.ttisql.com/cachegroup/flush-cache-group.html#comments</comments>
		<pubDate>Wed, 17 Dec 2008 04:50:58 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[CacheConnect]]></category>

		<category><![CDATA[flush]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=327</guid>
		<description><![CDATA[
&#160;&#160;&#160; 在TimesTen的Cache Group 有 ReadOnly， AWT，SWT 以及 UserManaged 几种类型。ReadOnly / AWT / SWT 三种类型的数据同步机制都是自动，也就是说在创建的时候就设置好了。但针对UserManaged来说，却有很多独特的特性功能，下面我们介绍一下Flush这个操作。
&#160;
&#160;&#160;&#160; 首先，Flush的使用有一些要注意的地方：
&#160;

只能在UserManaged上使用
不能Flush Delete操作
不能Flush被定义为ReadOnly&#160;或者Propagate 的表

&#160;
&#160;&#160;&#160; 如果要Flush的行已经在Oracle中数据库存在，则Flush的时候Update该行；如果要Flush的行在Oracle数据库中不存在，则Flush的时候Insert该行。
&#160;
&#160;&#160;&#160; 另外Flush的时候也可以带Where或者WithID子句来定义Flush的数据范围。
&#160;

试验如下，首先在Oracle数据库中创建一个测试表，并插入一些记录：

&#160;
SQL&#62; desc tt;
&#160;Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Null?&#160;&#160;&#160; Type
&#160;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
&#160;ID&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; NOT NULL NUMBER(38)
&#160;NAME&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;VARCHAR2(15)
&#160;
SQL&#62; select * from tt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; ID NAME
&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 china
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2 us
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 3 haha
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 4 you
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 5 and
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 6 me
6 rows selected.
&#160;

在TimesTen中创建UserManaged Cache Group：

&#160;
Command&#62; call ttcacheuidpwdset(&#8217;test&#8217;,'test&#8217;);
Command&#62; call ttcachestart;
Command&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small"><span style="font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp; 在TimesTen的Cache Group 有 ReadOnly， AWT，SWT 以及 UserManaged 几种类型。ReadOnly / AWT / SWT 三种类型的数据同步机制都是自动，也就是说在创建的时候就设置好了。但针对UserManaged来说，却有很多独特的特性功能，下面我们介绍一下Flush这个操作。<br />
</span></span><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; 首先，Flush的使用有一些要注意的地方：<br />
</span></span><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">只能在UserManaged上使用</span></span></li>
<li><span style="font-size: small"><span style="font-family: 宋体">不能Flush Delete操作</span></span></li>
<li><span style="font-size: small"><span style="font-family: 宋体">不能Flush被定义为ReadOnly&nbsp;或者Propagate 的表</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; 如果要Flush的行已经在Oracle中数据库存在，则Flush的时候Update该行；如果要Flush的行在Oracle数据库中不存在，则Flush的时候Insert该行。<br />
</span></span><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; 另外Flush的时候也可以带Where或者WithID子句来定义Flush的数据范围。<br />
</span></span><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">试验如下，首先在Oracle数据库中创建一个测试表，并插入一些记录：</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">SQL&gt; desc tt;</span></span></strong><span style="font-size: small"><span style="font-family: 宋体"><br />
&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Null?&nbsp;&nbsp;&nbsp; Type<br />
&nbsp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
&nbsp;ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NOT NULL NUMBER(38)<br />
&nbsp;NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR2(15)</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">SQL&gt; select * from tt;</span></span></strong></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID NAME<br />
&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 china<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 us<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 haha<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 you<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 and<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 me</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">6 rows selected.</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">在TimesTen中创建UserManaged Cache Group：</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">Command&gt; call ttcacheuidpwdset(&#8217;test&#8217;,'test&#8217;);<br />
Command&gt; call ttcachestart;<br />
Command&gt; create usermanaged cache group tt_ucg from tt(id tt_bigint primary key,name varchar2(15),<span style="color: #ff0000">not propagate</span>);<br />
Command&gt; cachegroups;</span></span></strong></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">Cache Group TEST.TT_UCG:</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&nbsp; Cache Group Type: User Managed<br />
&nbsp; Autorefresh: No</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&nbsp; Root Table: TEST.TT<br />
&nbsp; Table Type: Not Propagate</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">1 cache group found.</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">加载初始数据：</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">Command&gt; load cache group tt_ucg commit every 10 rows;<br />
</span></span></strong><span style="font-size: small"><span style="font-family: 宋体">6 cache instances affected.<br />
<strong>Command&gt; select * from tt;</strong><br />
&lt; 1, china &gt;<br />
&lt; 2, us &gt;<br />
&lt; 3, haha &gt;<br />
&lt; 4, you &gt;<br />
&lt; 5, and &gt;<br />
&lt; 6, me &gt;<br />
6 rows found.</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">在TimesTen中插入新的数据：</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">Command&gt; insert into tt values(7,&#8217;just&#8217;);<br />
</span></span></strong><span style="font-size: small"><span style="font-family: 宋体">1 row inserted.<br />
<strong>Command&gt; insert into tt values(8,&#8217;for&#8217;);<br />
</strong>1 row inserted.<br />
<strong>Command&gt; insert into tt values(9,&#8217;testing&#8217;);</strong><br />
1 row inserted.<br />
</span><strong><span style="font-family: 宋体">Command&gt; commit;</span></strong></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">这时候，新增的数据是不会提交到Oracle那边去的。</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">Flush 数据：</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">Command&gt; flush cache group tt_ucg;<br />
</span></span></strong><span style="font-size: small"><span style="font-family: 宋体">9 cache instances affected.<br />
Command&gt;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">再次到Oracle那边确认，可以看到数据已经过来了：</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">SQL&gt; select * from tt;</span></span></strong></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID NAME<br />
&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 china<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 us<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 haha<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 you<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 and<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 me<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7 just<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 for<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9 testing</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">9 rows selected.</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">SQL&gt;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; 可以看到，定义的时候必须在表之后定义 not propagate 才能使用Flush操作；另外每次Flush的时候都是同步全部的数据的。</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">我们再验证一下Delete的表现：</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">Command&gt; select * from tt;<br />
</span></span></strong><span style="font-size: small"><span style="font-family: 宋体">&lt; 1, china &gt;<br />
&lt; 2, us &gt;<br />
&lt; 3, haha &gt;<br />
&lt; 4, you &gt;<br />
&lt; 5, and &gt;<br />
&lt; 6, me &gt;<br />
&lt; 7, just &gt;<br />
&lt; 8, for &gt;<br />
&lt; 9, testing &gt;<br />
9 rows found.<br />
<strong>Command&gt; delete from tt where id=2;</strong><br />
1 row deleted.<br />
<strong>Command&gt; commit;<br />
Command&gt; flush cache group tt_ucg;</strong><br />
8 cache instances affected.<br />
Command&gt;<br />
</span></span><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">在TimesTen中，一行数据确实被删除了，而且Flush的时候貌似也是只Flush 8 行数据，检查一下Oracle：</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<div>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">SQL&gt; select * from tt;</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID NAME<br />
&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 china<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 us<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 haha<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 you<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 and<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 me<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7 just<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 for<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9 testing</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">9 rows selected.</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">SQL&gt;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; 发现还是 9 行数据，所以确实如文档所说，Delete操作不能被Flush过来。按照文档提示，Delete只能被手工提交到Oracle，或者打开propagate的开关同步到Oracle那边。由于打开propagate开关涉及到重建Cache Group，所以个人觉得实际中使用不大。<br />
</span></span><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; 手工提交方式，我想一种就是在应用中直接连接到Oracle去做相应的Delete，另一种就是通过PassThrough的方式提交到Oracle那边，相对来说，个人觉得PassThrough要方便一些，如果Delete不是很多的话，PassThrough还是有很大优势的，但如果Delete很多的话，直接连接到Oracle去做Delete，性能上可能要好一些。<br />
</span></span><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">在TimesTen中设置PassThrough来删除一行记录：</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
</span></span></p>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">Command&gt; autocommit 0;<br />
Command&gt; passthrough 3;<br />
Command&gt; delete from tt where id=3;</span></span></strong><span style="font-size: small"><span style="font-family: 宋体"><br />
1 row deleted.<br />
Command&gt; commit;<br />
Command&gt;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">这时候再去Oracle确认，发现该行数据确实已经被Delete了：</span></span></li>
</ul>
<p>&nbsp;</p>
<div>
<p style="margin-left: 40px"><strong><span style="font-size: small"><span style="font-family: 宋体">SQL&gt; select * from tt;</span></span></strong></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID NAME<br />
&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 china<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 us<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 you<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 and<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 me<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7 just<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 for<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9 testing</span></span></p>
</div>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">8 rows selected.</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">SQL&gt;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; 总体来看，Flush操作在有些情况下还是很有好处的。在使用Cache Group的时候，由于TimesTen和Oracle性能上的差异，导致TimesTen那边做完的很多事务无法及时同步到Oracle，而累积在TimesTen的磁盘上，数据的自动同步过程不仅占用了TimesTen的一些宝贵资源，而且给Oracle数据库带来巨大的压力。那么针对实际中的很多应用，比如白天的时候业务繁忙，晚上很空闲，那么我们建立 UserManaged Cache Group ，而不是平常的 AWT / ReadOnly 。这时候因为没有数据的同步，性能会更高，到了空闲的时候，我们再Flush到Oracle那边，或者白天的时候，定时Flush。这样就避免了AWT 或者 Propagate的时候，总是不停地在那数据同步，从而节省了宝贵的资源。</span></span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/cachegroup/flush-cache-group.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>TimesTen for Windows 平台安装指南</title>
		<link>http://www.ttisql.com/download/install-on-windows.html</link>
		<comments>http://www.ttisql.com/download/install-on-windows.html#comments</comments>
		<pubDate>Tue, 16 Dec 2008 06:01:12 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[下 载 安 装]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=310</guid>
		<description><![CDATA[&#160;&#160;&#160; TimesTen 的介质可以到&#160;OTN上直接下载，&#160;选择Windows平台的安装介质，要注意的是Windows平台是32位还是64位的。然后解压即可开始安装。下面以 TimesTen 7.0.5 为例。
&#160;&#160;&#160; 如果你以后的开发或者测试和Java有关，那么可以先准备好JDK，在下面的安装开始之前，已经准备好了JDK 1.5。

D:\&#62;java -version
java version &#34;1.5.0_11&#34;
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode)
D:\&#62;
&#160;

步骤一: 在解压开安装包后，有个 Setup.exe 文件，双击即可开始安装。
    







第二步：显示将安装 TimesTen 7.0.5(32bit) ，点击Next 







&#160;

第三步：选择安装路径 




&#160;


第四步：选择安装类型，有三种类型可选择，客户端(compact)，自定义(custom)，典型(typical)。一般选择典型安装类型即可。






第五步：是否要安装 In-Memory Database Cache，即Cache Connect to Oracle，使得TimesTen可以和Oracle一起工作。选择Yes。



&#160;
&#160;

&#160;第六步：选择存放数据库（DataStore）的路径。
    



&#160;

&#160;第七步：创建相应的程序文件夹名。
    





第八步：选择相应的设置。缺省的只有环境变量注册被选上。



&#160;



第九步：选择 Enable Database Access Control [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; TimesTen 的介质可以到&nbsp;</span></span><span style="font-size: small"><span style="font-family: 宋体"><u><strong>OTN</strong></u>上直接下载，&nbsp;选择Windows平台的安装介质，要注意的是Windows平台是32位还是64位的。然后解压即可开始安装。下面以 TimesTen 7.0.5 为例。</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; 如果你以后的开发或者测试和Java有关，那么可以先准备好JDK，在下面的安装开始之前，已经准备好了JDK 1.5。<br />
</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">D:\&gt;java -version<br />
java version &quot;1.5.0_11&quot;<br />
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)<br />
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode)</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">D:\&gt;</span></span></p>
<p>&nbsp;</p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">步骤一: 在解压开安装包后，有个 Setup.exe 文件，双击即可开始安装。<br />
    </span></span></li>
</ul>
<p><a href="http://www.ttisql.com/images/win-step1.jpg"><span style="font-size: small"><span style="font-family: 宋体"><img hspace="121" align="middle" vspace="2" alt="" src="http://www.ttisql.com/images/win-step1.jpg" /></span></span></a><br />
<span style="font-size: small"><span style="font-family: 宋体"><br />
</span></span></p>
<div><span style="font-size: small"><span style="font-family: 宋体"><br />
</span></span></div>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">第二步：显示将安装 TimesTen 7.0.5(32bit) ，点击Next </span></span></li>
</ul>
<div><span style="font-size: small"><span style="font-family: 宋体"></p>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体"><img hspace="120" align="middle" vspace="2" alt="" src="http://www.ttisql.com/images/win-step2.jpg" /></p>
<p></span></span></p>
<p></span></span></div>
<div>&nbsp;</div>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">第三步：选择安装路径 </span></span></li>
</ul>
<div><span style="font-size: small"><span style="font-family: 宋体"></p>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step3.jpg" /></span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;<br />
</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">第四步：选择安装类型，有三种类型可选择，客户端(compact)，自定义(custom)，典型(typical)。一般选择典型安装类型即可。</span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step4.jpg" /></p>
<p>
</span></span></p>
<ul>
<li>第五步：是否要安装 In-Memory Database Cache，即Cache Connect to Oracle，使得TimesTen可以和Oracle一起工作。选择Yes。</li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step5.jpg" /></span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">&nbsp;第六步：选择存放数据库（DataStore）的路径。<br />
    </span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step6.jpg" /></span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">&nbsp;第七步：创建相应的程序文件夹名。<br />
    </span></span></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step7.jpg" /></p>
<p></span></span></p>
<ul>
<li>第八步：选择相应的设置。缺省的只有环境变量注册被选上。</li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step8.jpg" /></span></span></p>
<p>&nbsp;</p>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">第九步：选择 Enable Database Access Control ，以便可以在TimesTen中创建用户。</span></span></li>
</ul>
<p>&nbsp;</p>
<p><span style="font-size: small"><span style="font-family: 宋体"><img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step9.jpg" /></p>
<p>
</span></span></p>
<ul>
<li>第十步：确定JDK的版本。</li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step10.jpg" /></p>
<p>
</span></span></p>
<ul>
<li>第十一步：显示已经选择的安装特性。</li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step11.jpg" /></p>
<p>
</span></span></p>
<ul>
<li>第十二步：开始安装。</li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step12.jpg" /></p>
<p></span></span></p>
<ul>
<li>第十三步：正在安装。</li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step13.jpg" /></p>
<p>
</span></span></p>
<ul>
<li>第十四步：安装结束。</li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
<img alt="" hspace="120" align="middle" src="http://www.ttisql.com/images/win-step14.jpg" /></p>
<p>
至此，安装已经结束。</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">如果进入到TimesTen安装目录下，能通过ttstatus命令看到类似如下的信息，即可决定一切正常。</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">D:\&gt;cd C:\TimesTen\tt70_32\bin</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">D:\&gt;ttstatus<br />
TimesTen status report as of Tue Dec 16 13:41:59 2008</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">Daemon pid 3888 port 17000 instance tt70_32<br />
TimesTen server pid 2336 started on port 17002<br />
TimesTen webserver pid 2696 started on port 17004</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Access control enabled.<br />
End of report<br />
</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体">最后，设置相应的系统环境。参考如下：</span></span>&nbsp;</p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">CLASSPATH=C:\TimesTen\tt70_32\lib\ttjdbc5.jar;&#8230;</span></span><br />
<span style="font-size: small"><span style="font-family: 宋体"><br />
Lib=C:\TimesTen\tt70_32\lib;&#8230;<br />
</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">Path=C:\TimesTen\tt70_32\bin;&#8230;</span></span></p>
<p></span></span></div>
<div>&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/download/install-on-windows.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>TimesTen 中的 SNMP 配置范例</title>
		<link>http://www.ttisql.com/architecture/snmp.html</link>
		<comments>http://www.ttisql.com/architecture/snmp.html#comments</comments>
		<pubDate>Fri, 12 Dec 2008 03:01:24 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[基 本 概 念]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=308</guid>
		<description><![CDATA[&#160;
&#160;&#160;&#160; TimesTen支持SNMP，且在其安装目录下，有一个模拟网络管理的软件[$install_dir/demo/snmp/snmptrapd]，可以接收SNMP协议。下面是一个如何配置的例子：

配置snmp.ini，设置 &#8211;enable 为 1
    
    $ vi $TIMESTEN/info/snmp.ini
    $ cat snmp.ini
    # snmp.ini - Resides in /var/TimesTen.
    #
    # An environment variable TT_SNMP_INI can be set to specify an alternate path for this file.
   [...]]]></description>
			<content:encoded><![CDATA[<div><span id="1229050239103S" style="display: none">&nbsp;</span></div>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; TimesTen支持SNMP，且在其安装目录下，有一个模拟网络管理的软件[$install_dir/demo/snmp/snmptrapd]，可以接收SNMP协议。下面是一个如何配置的例子：</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">配置snmp.ini，设置 &ndash;enable 为 1<br />
    </span></span><span style="font-size: small"><span style="font-family: 宋体"><br />
    <strong>$ vi $TIMESTEN/info/snmp.ini<br />
    $ cat snmp.ini<br />
    </strong># snmp.ini - Resides in /var/TimesTen.<br />
    #<br />
    # An environment variable TT_SNMP_INI can be set to specify an alternate path for this file.<br />
    # <br />
    # Modify this file to set an alternate trap destination. <br />
    # <br />
    # disable snmp trap generation (remove the line or set to 1 to enable)<br />
    <strong>-enabled 1<br />
    </strong># default community is &quot;public&quot;<br />
    -community &quot;public&quot;<br />
    # default trap destination is &quot;localhost&quot;<br />
    -trapdest &quot;localhost&quot;<br />
    # default trap port is 162, the default SNMP trap port<br />
    <strong>-trapport 162</strong><br />
    </span></span></li>
<li><span style="font-size: small"><span style="font-family: 宋体">切换到root用户，启动snmp后台监听。这个监听程序需要root权限启动。</span></span></li>
</ul>
<p style="margin-left: 40px"><span style="font-size: small"><strong><span style="font-family: 宋体">$ su - root<br />
# export MIBS=all<br />
# /usr/sbin/snmptrapd -f -Lo -M /home/tt705/TimesTen/tt705/mibs/TimesTen-MIB.txt </span></strong></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">2008-07-29 11:44:37 NET-SNMP version 5.1.2 Started.<br />
</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">另一个 shell 窗口中，登录一个DataStore<br />
    </span></span><br />
    <strong><span style="font-size: small"><span style="font-family: 宋体">$ ttisql tt_test</span></span></strong></li>
</ul>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">再起一个shell 窗口中，强制停止TimesTen Daemon。模拟TimesTen的异常终止。<br />
    </span></span><br />
    <span style="font-size: small"><span style="font-family: 宋体">$ ttdaemonadmin -stop -force<br />
    </span></span></li>
<li><span style="font-size: small"><span style="font-family: 宋体">回到snmp的监听终端，将看到捕捉到的信息</span></span></li>
</ul>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体"><strong># /usr/sbin/snmptrapd -f -Lo -M /home/tt705/TimesTen/tt705/mibs/TimesTen-MIB.txt <br />
</strong><br />
2008-07-29 11:44:37 NET-SNMP version 5.1.2 Started.</span></span></p>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">2008-07-29 11:55:44 localhost.localdomain [127.0.0.1] (via 127.0.0.1) TRAP, SNMP v1, community public<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.5.10 Enterprise Specific Trap (5) Uptime: 0:03:03.73<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.1.1 = STRING: &quot;2008-07-29 03:55:44 (GMT)&quot;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.1.3 = INTEGER: 4731&nbsp; iso.3.6.1.4.1.5549.1.5 = STRING: &quot;506&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.1.2 = STRING: &quot;@(#)TimesTen: Release: 7.0.3.0.0 Date: 2007-09-20T21:18:25Z, instance tt705&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.2.1 = STRING: &quot;Data store going Invalid (from master daemon)&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.10.2 = STRING: &quot;tt_test&quot;&nbsp; iso.3.6.1.4.1.5549.10.4 = STRING: &quot;0&#215;1f037894&quot;&nbsp; iso.3.6.1.4.1.5549.10.7 = INTEGER: 7<br />
2008-07-29 11:55:45 localhost.localdomain [127.0.0.1] (via 127.0.0.1) TRAP, SNMP v1, community public<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.5.40 Enterprise Specific Trap (3) Uptime: 0:03:04.85<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.1.1 = STRING: &quot;2008-07-29 03:55:45 (GMT)&quot;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.1.3 = INTEGER: 4731&nbsp; iso.3.6.1.4.1.5549.1.5 = STRING: &quot;506&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.1.2 = STRING: &quot;@(#)TimesTen: Release: 7.0.3.0.0 Date: 2007-09-20T21:18:25Z, instance tt705&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.2.1 = STRING: &quot;<strong>Main Daemon Exiting</strong>&quot;&nbsp; iso.3.6.1.4.1.5549.40.2 = STRING: &quot;/home/tt705/TimesTen/tt705/bin/timestend&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.40.6 = INTEGER: 0</span></span></p>
<p><span style="font-size: small"><span style="font-family: 宋体"><br />
</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">再次启动TimesTen Daemon</span></span></li>
</ul>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">$ ttdaemonadmin &ndash;start<br />
</span></span></p>
<ul>
<li><span style="font-size: small"><span style="font-family: 宋体">回到snmp的监听终端，将看到捕捉到的信息<br />
    </span></span></li>
</ul>
<p style="margin-left: 40px"><span style="font-size: small"><span style="font-family: 宋体">&#8230;<br />
2008-07-29 11:56:20 localhost.localdomain [127.0.0.1] (via 127.0.0.1) TRAP, SNMP v1, community public<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.5.40 Enterprise Specific Trap (2) Uptime: 0:00:00.00<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.1.1 = STRING: &quot;2008-07-29 03:56:20 (GMT)&quot;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.1.3 = INTEGER: 4801&nbsp; iso.3.6.1.4.1.5549.1.5 = STRING: &quot;506&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.1.2 = STRING: &quot;@(#)TimesTen: Release: 7.0.3.0.0 Date: 2007-09-20T21:18:25Z, instance tt705&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.2.1 = STRING: &quot;<strong>Main Daemon Ready</strong>&quot;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.40.2 = STRING: &quot;/home/tt705/TimesTen/tt705/bin/timestend&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iso.3.6.1.4.1.5549.40.6 = INTEGER: 0</span></span></p>
<p>&nbsp;</p>
<p><span style="font-size: small"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; TimesTen预定义了一些可以被监控的信息，比如内存耗尽，Agent没起来等等。你还可以在MIB文件中定义需要监控的其它信息。</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ttisql.com/architecture/snmp.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Linux内核: 修改TCP/IP调优参数</title>
		<link>http://www.ttisql.com/relatedlink/linux-tcpip.html</link>
		<comments>http://www.ttisql.com/relatedlink/linux-tcpip.html#comments</comments>
		<pubDate>Thu, 11 Dec 2008 07:22:21 +0000</pubDate>
		<dc:creator>canoe</dc:creator>
		
		<category><![CDATA[相 关 知 识]]></category>

		<category><![CDATA[tcp ip]]></category>

		<guid isPermaLink="false">http://www.ttisql.com/?p=293</guid>
		<description><![CDATA[
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 在TimesTen的优化中，如果涉及到 Replication 或者Cache Group的话，那么针对 TCP/IP相关的参数的优化对性能是有益的。因为它们俩都是通过TCP/IP协议进行数据交互的。在安装文档(install.pdf)的39页有具体的说明：
For replication, TCP send and receive buffers should be increased to a minimum of 512KB. To make these changes, add the lines:
net.ipv4.tcp_rmem=&#34;4096 4194304 4194304&#34;
net.ipv4.tcp_wmem=&#34;98304 4194304 4194304&#34;
net.ipv4.tcp_mem=&#34;98304 4194304 4194304&#34;
net.core.rmem_default=65535
net.core.wmem_default=65535
net.core.rmem_max=4194304
net.core.wmem_max=4194304
net.ipv4.tcp_window_scaling=1
to the /etc/sysctl.conf file and reboot.
For Cache Connect, TCP send and receive buffers should be increased to even greater values. To make these [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在TimesTen的优化中，如果涉及到 Replication 或者Cache Group的话，那么针对 TCP/IP相关的参数的优化对性能是有益的。因为它们俩都是通过TCP/IP协议进行数据交互的。在安装文档(install.pdf)的39页有具体的说明：</p>
<p>For replication, TCP send and receive buffers should be increased to a minimum of 512KB. To make these changes, add the lines:</p>
<p>net.ipv4.tcp_rmem=&quot;4096 4194304 4194304&quot;<br />
net.ipv4.tcp_wmem=&quot;98304 4194304 4194304&quot;<br />
net.ipv4.tcp_mem=&quot;98304 4194304 4194304&quot;<br />
net.core.rmem_default=65535<br />
net.core.wmem_default=65535<br />
net.core.rmem_max=4194304<br />
net.core.wmem_max=4194304<br />
net.ipv4.tcp_window_scaling=1</p>
<p>to the /etc/sysctl.conf file and reboot.<br />
For Cache Connect, TCP send and receive buffers should be increased to even greater values. To make these changes, add the lines:</p>
<p>net.ipv4.tcp_rmem=&quot;4096 4194304 4194304&quot;<br />
net.ipv4.tcp_wmem=&quot;98304 4194304 4194304&quot;<br />
net.ipv4.tcp_mem=&quot;98304 4194304 4194304&quot;<br />
net.core.rmem_default=262144<br />
net.core.wmem_default=262144<br />
net.core.rmem_max=4194304<br />
net.core.wmem_max=4194304<br />
net.ipv4.tcp_window_scaling=1<br />
net.ipv4.ip_local_port_range=&quot;1024 65000&quot;</p>
<p>to the /etc/sysctl.conf file and reboot.</p>
<p>&nbsp;下面是一篇参考文章，可能会有些帮助，引用于<a id="IBM" title="IBM" target="popup" href="http://www.ibm.com/developerworks/cn/linux/l-hisock.html">IBM</a>。</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr valign="top">
<td width="100%">
<p>使用 Sockets API，我们可以开发客户机和服务器应用程序，它们可以在本地网络上进行通信，也可以通过 Internet 在全球范围内进行通信。与其他 API 一样，您可以通过一些方法使用 Sockets API，从而提高 Socket 的性能，或者限制 Socket 的性能。本文探索了 4 种使用 Sockets API 来获取应用程序的最大性能并对 GNU/Linux&reg; 环境进行优化从而达到最好结果的方法。</p>
<p>            <!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES--></p>
<p>在开发 socket 应用程序时，首要任务通常是确保可靠性并满足一些特定的需求。利用本文中给出的 4 个提示，您就可以从头开始为实现最佳性能来设计并开发 socket 程序。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。</p>
<p>为了能够开发性能卓越的应用程序，请遵循以下技巧：</p>
<ul>
<li>最小化报文传输的延时。</li>
<li>最小化系统调用的负载。</li>
<li>为 Bandwidth Delay Product 调节 TCP 窗口。</li>
<li>动态优化 GNU/Linux TCP/IP 栈。</li>
</ul>
<p><a name="N10069"><span class="atitle">技巧 1. 最小化报文传输的延时</span></a></p>
<p>在通过 TCP socket 进行通信时，数据都拆分成了数据块，这样它们就可以封装到给定连接的 TCP payload（指 TCP 数据包中的有效负荷）中了。TCP payload 的大小取决于几个因素（例如最大报文长度和路径），但是这些因素在连接发起时都是已知的。为了达到最好的性能，我们的目标是使用尽可能多的可用数据来填充每个报文。当没有足够的数据来填充 payload 时（也称为<i>最大报文段长度（maximum segment size）</i> 或 MSS），TCP 就会采用 Nagle 算法自动将一些小的缓冲区连接到一个报文段中。这样可以通过最小化所发送的报文的数量来提高应用程序的效率，并减轻整体的网络拥塞问题。</p>
<p>尽管 John Nagle 的算法可以通过将这些数据连接成更大的报文来最小化所发送的报文的数量，但是有时您可能希望只发送一些较小的报文。一个简单的例子是 telnet 程序，它让用户可以与远程系统进行交互，这通常都是通过一个 shell 来进行的。如果用户被要求用发送报文之前输入的字符来填充某个报文段，那么这种方法就绝对不能满足我们的需要。</p>
<p>另外一个例子是 HTTP 协议。通常，客户机浏览器会产生一个小请求（一条 HTTP 请求消息），然后 Web 服务器就会返回一个更大的响应（Web 页面）。</p>
<p><a name="N1007C"><span class="smalltitle">解决方案</span></a></p>
<p>您应该考虑的第一件事情是 Nagle 算法满足一种需求。由于这种算法对数据进行合并，试图构成一个完整的 TCP 报文段，因此它会引入一些延时。但是这种算法可以最小化在线路上发送的报文的数量，因此可以最小化网络拥塞的问题。</p>
<p>但是在需要最小化传输延时的情况中，Sockets API 可以提供一种解决方案。要禁用 Nagle 算法，您可以设置 <code>TCP_NODELAY</code> socket 选项，如清单 1 所示。</p>
<p>
            <a name="N10091"><b>清单 1. 为 TCP socket 禁用 Nagle 算法</b></a></p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre class="displaycode">
int sock, flag, ret;
/* Create new stream socket */
sock = <span class="boldcode">socket</span>( AF_INET, SOCK_STREAM, 0 );
/* Disable the Nagle (TCP No Delay) algorithm */
flag = 1;
ret = <span class="boldcode">setsockopt</span>( sock, IPPROTO_TCP, TCP_NODELAY, (char *)&amp;flag, sizeof(flag) );
if (ret == -1) {
  printf(&quot;Couldn't setsockopt(TCP_NODELAY)\n&quot;);
  exit(-1);
}
</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p><b>提示：</b>使用 Samba 的实验表明，在从 Microsoft&reg; Windows&reg; 服务器上的 Samba 驱动器上读取数据时，禁用 Nagle 算法几乎可以加倍提高读性能。</p>
<p></p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
                        &nbsp;</td>
</tr>
</tbody>
</table>
<p><a name="N100A3"><span class="atitle">技巧 2. 最小化系统调用的负载</span></a></p>
<p>任何时候通过一个 socket 来读写数据时，您都是在使用一个<i>系统调用（system call）</i>。这个调用（例如 <code>read</code> 或 <code>write</code>）跨越了用户空间应用程序与内核的边界。另外，在进入内核之前，您的调用会通过 C 库来进入内核中的一个通用函数（<code>system_call()</code>）。从 <code>system_call()</code> 中，这个调用会进入文件系统层，内核会在这儿确定正在处理的是哪种类型的设备。最后，调用会进入 socket 层，数据就是在这里进行读取或进行排队从而通过 socket 进行传输的（这涉及数据的副本）。</p>
<p>这个过程说明系统调用不仅仅是在应用程序和内核中进行操作的，而且还要经过应用程序和内核中的很多层次。这个过程耗费的资源很高，因此调用次数越多，通过这个调用链进行的工作所需要的时间就越长，应用程序的性能也就越低。</p>
<p>由于我们无法避免这些系统调用，因此惟一的选择是最小化使用这些调用的次数。幸运的是，我们可以对这个过程进行控制。</p>
<p><a name="N100C6"><span class="smalltitle">解决方案</span></a></p>
<p>在将数据写入一个 socket 时，尽量一次写入所有的数据，而不是执行多次写数据的操作。对于读操作来说，最好传入可以支持的最大缓冲区，因为如果没有足够多的数据，内核也会试图填充整个缓冲区（另外还需要保持 TCP 的通告窗口为打开状态）。这样，您就可以最小化调用的次数，并可以实现更好的整体性能。</p>
<p></p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
                        &nbsp;</td>
</tr>
</tbody>
</table>
<p><a name="N100D0"><span class="atitle">技巧 3. 为 Bandwidth Delay Product 调节 TCP 窗口</span></a></p>
<p>TCP 的性能取决于几个方面的因素。两个最重要的因素是<i>链接带宽（link bandwidth）</i>（报文在网络上传输的速率）和 <i>往返时间（round-trip time）</i> 或 RTT（发送报文与接收到另一端的响应之间的延时）。这两个值确定了称为 <i>Bandwidth Delay Product</i>（BDP）的内容。</p>
<p>给定链接带宽和 RTT 之后，您就可以计算出 BDP 的值了，不过这代表什么意义呢？BDP 给出了一种简单的方法来计算理论上最优的 TCP socket 缓冲区大小（其中保存了排队等待传输和等待应用程序接收的数据）。如果缓冲区太小，那么 TCP 窗口就不能完全打开，这会对性能造成限制。如果缓冲区太大，那么宝贵的内存资源就会造成浪费。如果您设置的缓冲区大小正好合适，那么就可以完全利用可用的带宽。下面我们来看一个例子：</p>
<p><code>BDP = link_bandwidth * RTT</code></p>
<p>如果应用程序是通过一个 100Mbps 的局域网进行通信，其 RRT 为 50 ms，那么 BDP 就是：</p>
<p><code>100MBps * 0.050 sec / 8 = 0.625MB = 625KB</code></p>
<p><b>注意：</b>此处除以 8 是将位转换成通信使用的字节。</p>
<p>因此，我们可以将 TCP 窗口设置为 BDP 或 1.25MB。但是在 Linux 2.6 上默认的 TCP 窗口大小是 110KB，这会将连接的带宽限制为 2.2MBps，计算方法如下：</p>
<p><code>throughput = window_size / RTT</p>
<p>            110KB / 0.050 = 2.2MBps</code></p>
<p>如果使用上面计算的窗口大小，我们得到的带宽就是 12.5MBps，计算方法如下：</p>
<p><code>625KB / 0.050 = 12.5MBps </code></p>
<p>差别的确很大，并且可以为 socket 提供更大的吞吐量。因此