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