ttIsqlの使用によるトランザクションの管理

ttIsqlユーティリティには、トランザクションを管理するためのいくつかの組込みコマンドが用意されています。

次に、これらのコマンドの概要を示します。

  • autocommit: 自動コミット機能を有効または無効にします。これは、setコマンドの属性としても設定できます。

  • commit: 現行のトランザクションをコミットします。

  • commitdurable: 現行のトランザクションをコミットし、データベース障害の場合にコミット済の作業をリカバリできるようにします。

  • rollback: 現行のトランザクションをロールバックします。

  • isolation - トランザクションの分離レベルを変更します。これは、setコマンドの属性としても設定できます。

  • sqlquerytimeout: アプリケーションに戻されるまでのSQL文の実行待機時間(秒)を指定します。これは、setコマンドの属性としても設定できます。

デフォルトでは、ttIsqlを起動すると、SQLスクリプト内でも自動コミット機能が有効になります。このモードでは、データベースに対するすべてのSQL操作が自動的にコミットされます。

自動コミット機能を無効にするには、引数0を指定してttIsqlautocommitコマンドを実行します。自動コミットが無効になっている場合は、ttIsqlcommitコマンド、commitdurableコマンドまたはrollbackコマンドを実行して、トランザクションを手動でコミットまたはロールバックする必要があります。commitdurableコマンドを実行すると、データベース障害が発生した場合でも、トランザクションの結果が保持されます。ttIsqlが終了していて自動コミットが無効な場合、コミットされていない文は、ttIsqlによってロールバックされ報告されます。

ttIsqlisolationコマンドを使用すると、現行の接続のトランザクション独立性プロパティを変更できます。独立性は、トランザクションの開始時にのみ変更できます。isolationコマンドには、READ_COMMITTEDまたはSERIALIZABLEのいずれかを定数として指定できます。isolationコマンドを引数を指定しないで変更すると、現在の分離レベルがレポートされます。

ttIsqlsqlquerytimeoutコマンドでは、SQL文のタイムアウト間隔を設定します。SQL文の実行時間がsqlquerytimeoutコマンドで設定した秒数を超えると、SQL文は実行されず、6111エラーが生成されます。『Oracle TimesTen In-Memory Database Java開発者ガイド』SQL文のタイムアウト期間の設定、および『Oracle TimesTen In-Memory Database C開発者ガイド』SQL文のタイムアウト期間の設定を参照してください。

ノート:

TimesTenのロールバック機能および問合せタイムアウト機能を使用しても、Oracleデータベースで処理中のキャッシュ操作が停止されることはありません。このような操作には、PassThrough文、フラッシング、手動ロード、手動リフレッシュ、SYNCHRONOUS WRITETHROUGH、伝播および動的ロードが含まれます。

次に、ttIsqlの組込みトランザクション管理コマンドの一般的な使用例を示します。

E:\>ttIsql
Copyright (c) 1996, 2024 Oracle.  All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.

Command> connect "DSN=database1";
Connection successful: 
DSN=database1;DataStore=/disk1/databases/database1;DatabaseCharacterSet=AL32UTF8;
ConnectionCharacterSet=AL32UTF8;PermSize=128;
(Default setting AutoCommit=1)
Command> autocommit 0;
Command> CREATE TABLE LOOKUP (KEY NUMBER NOT NULL PRIMARY KEY, VALUE CHAR (64));
Command> commit;
Command> INSERT INTO LOOKUP VALUES (1, 'ABC');
1 row inserted.
Command> SELECT * FROM LOOKUP;
< 1, ABC >
1 row found.
Command> rollback;
Command> SELECT * FROM LOOKUP;
0 rows found.
Command> isolation;
isolation = READ_COMMITTED
Command> commitdurable;
Command> sqlquerytimeout 10;
Command> sqlquerytimeout;
Query timeout = 10 seconds
Command> disconnect;
Disconnecting...
Command> exit;
Done.