ttIsqlの使用によるトランザクションの管理
ttIsql
ユーティリティには、トランザクションを管理するためのいくつかの組込みコマンドが用意されています。
次に、これらのコマンドの概要を示します。
-
autocommit
: 自動コミット機能を有効または無効にします。これは、set
コマンドの属性としても設定できます。 -
commit
: 現行のトランザクションをコミットします。 -
commitdurable
: 現行のトランザクションをコミットし、データベース障害の場合にコミット済の作業をリカバリできるようにします。 -
rollback
: 現行のトランザクションをロールバックします。 -
isolation
- トランザクションの分離レベルを変更します。これは、set
コマンドの属性としても設定できます。 -
sqlquerytimeout
: アプリケーションに戻されるまでのSQL文の実行待機時間(秒)を指定します。これは、set
コマンドの属性としても設定できます。
デフォルトでは、ttIsql
を起動すると、SQLスクリプト内でも自動コミット機能が有効になります。このモードでは、データベースに対するすべてのSQL操作が自動的にコミットされます。
自動コミット機能を無効にするには、引数0を指定してttIsql
のautocommit
コマンドを実行します。自動コミットが無効になっている場合は、ttIsql
のcommit
コマンド、commitdurable
コマンドまたはrollback
コマンドを実行して、トランザクションを手動でコミットまたはロールバックする必要があります。commitdurable
コマンドを実行すると、データベース障害が発生した場合でも、トランザクションの結果が保持されます。ttIsql
が終了していて自動コミットが無効な場合、コミットされていない文は、ttIsql
によってロールバックされ報告されます。
ttIsql
のisolation
コマンドを使用すると、現行の接続のトランザクション独立性プロパティを変更できます。独立性は、トランザクションの開始時にのみ変更できます。isolation
コマンドには、READ_COMMITTED
またはSERIALIZABLE
のいずれかを定数として指定できます。isolation
コマンドを引数を指定しないで変更すると、現在の分離レベルがレポートされます。
ttIsql
のsqlquerytimeout
コマンドでは、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.