プライマリ・コンテンツに移動
Oracle® Data Provider for .NET開発者ガイド
ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows
E72575-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleLogicalTransactionクラス

OracleLogicalTransactionクラスは、論理トランザクション・ステータスに関する詳細な情報を提供します。アプリケーションは、前回のデータベース停止中に実行中だったトランザクションの結果を最終的に鑑定し、それに基づいてトランザクションのコミット、完了、ロールバックをいずれか実行します。

クラスの継承

System.Object

  System.MarshalByRefObject

    Oracle.DataAccess.Client.OracleLogicalTransaction

宣言

// C#
public sealed class OracleLogicalTransaction

要件

プロバイダ ODP.NET管理対象外ドライバ ODP.NET管理対象ドライバ
アセンブリ Oracle.DataAccess.dll Oracle.ManagedDataAccess.dll
ネームスペース Oracle.DataAccess.Client Oracle.ManagedDataAccess.Client
.NET Framework 3.5, 4.0, 4.5, 4.6 4.0, 4.5, 4.6

スレッド安全性

パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。

OracleLogicalTransactionメンバー

OracleLogicalTransactionメンバーは次の表にリスト表示されています。

OracleLogicalTransactionパブリック読取り専用プロパティ

OracleLoigcalTransactionパブリック読取り専用プロパティを、表6-89にリストします。

表6-89 OracleLogicalTransactionパブリック読取り専用プロパティ

プロパティ 説明

Committed


トランザクションがコミットされたかどうかを指定します

ConnectionString


最後のデータベース停止時に実行しているトランザクションに使用される接続文字列のサブセットを指定します

DataSource


このオブジェクトの取得元である接続に対応するデータ・ソース、たとえばTNS別名を指定します。

このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。

LogicalTransactionId


論理トランザクションIDは、停止後のデータベース・セッション内でオープンになっている最終トランザクションのコミット結果の判別に使用されます。

UserCallCompleted


トランザクションがコミットされたかどうかと、戻される情報が不完全であるか一部の操作が完了していない、またはその両方の可能性があることを示します。

UserId


このオブジェクトの取得元である接続に対応するユーザーIDを指定します。

このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。


OracleLogicalTransactionメソッド

OracleLoigcalTransactionメソッドを、表6-90にリストします

表6-90 OracleLogicalTransactionメソッド

プロパティ 説明

Dispose


このメソッドでは、オブジェクトにより割り当てられたリソースまたはメモリーを解除します

GetOutcome


このメソッドは、データベース・サーバーからトランザクション結果を取得します。このメソッドは、トランザクションがコミットおよび完了されたかどうかを判定します。


OracleLogicalTransactionパブリック読取り専用プロパティ

OracleLoigcalTransactionパブリック読取り専用プロパティを、表6-91にリストします。

表6-91 OracleLogicalTransactionパブリック読取り専用プロパティ

プロパティ 説明

Committed


トランザクションがコミットされたかどうかを指定します

ConnectionString


最後のデータベース停止時に実行しているトランザクションに使用される接続文字列のサブセットを指定します

DataSource


このオブジェクトの取得元である接続に対応するデータ・ソース、たとえばTNS別名を指定します。

このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。

LogicalTransactionId


論理トランザクションIDは、停止後のデータベース・セッション内でオープンになっている最終トランザクションのコミット結果の判別に使用されます。

UserCallCompleted


トランザクションがコミットされたかどうかと、戻される情報が不完全であるか一部の操作が完了していない、またはその両方の可能性があることを示します。

UserId


このオブジェクトの取得元である接続に対応するユーザーIDを指定します。

このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。


Committed

このプロパティは、トランザクションがコミットされたかどうかを指定します。

宣言

// C#
public bool? Committed {get;}

プロパティ値

bool

備考

GetOutcome()を呼び出さない場合、このプロパティはnull値を保持します。

GetOutcome()を呼び出すと、このプロパティはtrueまたはfalse値を保持します。

表6-92に、CommittedおよびUserCallCompletedの各プロパティで想定される結果を示します。

表6-92 コミットしたOracleLogicalTransactionの結果とUserCallCompletedプロパティ

Committedの値 UserCallCompletedの値 結果

false

false

このコールはコミットを実行していません。

true

true

このコールはコミットを実行しており、その他に戻される情報はなく、必要な操作もありません(このコールがPL/SQLプロシージャの場合)。

true

false

このトランザクションはコミットされましたが、戻される情報が不完全であるか、一部の操作が完了してない、またはその両方の可能性があります。たとえば、不完全な情報や未完了の操作には、成功時の自動コミットまたはコミットによって変更される行数、PL/SQLプロシージャをコールしたときのパラメータおよびファンクションの結果、コミット後に実行するPL/SQLプロシージャの操作などがあります。コミット後に戻されるデータを使用する場合、その.NETアプリケーションを正しく機能させるためには、UserCallCompleted値を確認する必要があります。


ConnectionString

このプロパティは最後のデータベース停止時に実行しているトランザクションに使用される接続文字列のサブセットを指定します。

宣言

// C#
public string ConnectionString {get;}

プロパティ値

文字列としてのデータ・ソース。

備考

この接続文字列は、停止しているサービスのために例外がスローされた時点で結果が不明の場合に便利です。そのようなシナリオでは、データベースまたはサービスがバックアップされた後、LogicalTransactionIdとともにこのプロパティから接続文字列を使用し、静的OracleConnection.GetOutcome()メソッドを起動することで、論理トランザクションの結果を判断します。

このプロパティから戻されたこの文字列には次の属性のみが含まれます: User IdProxy user Id (nullまたは空でない場合)、Data SourceおよびPooling (これはfalseに設定されます)。

DataSource

このプロパティは、このオブジェクトの取得元である接続に対応するデータ・ソース、たとえばTNS別名を指定します。

宣言

// C#
public string DataSource {get;}

プロパティ値

文字列としてのデータ・ソース。

LogicalTransactionId

論理トランザクションIDは、停止後のデータベース・セッション内でオープンになっている最終トランザクションのコミット結果の判別に使用されます。

宣言

// C#
public byte LogicalTransactionId {get;}

プロパティ値

byte[]

備考

この論理トランザクションIDは、停止しているサービスのために例外がスローされた時点で結果が不明の場合に便利です。そのようなシナリオでは、データベースまたはサービスがバックアップされた後、(ConnectionStringとともに)このプロパティから戻されたbyte[]を使用し、静的OracleConnection.GetOutcome()メソッドを起動することで、論理トランザクションの結果を判断します。

結果が不明の場合、このプロパティはnull以外の値のみを戻します。たとえば、データベースまたはサービスが停止している場合、結果は不明です。

接続が分散トランザクションに参加している場合、LogicalTransactionIdプロパティはnullを戻します。

UserCallCompleted

このプロパティは、トランザクションがコミットされたかどうかと、戻される情報が不完全であるか一部の操作が完了していない、またはその両方の可能性があることを示します。

宣言

// C#
public bool? UserCallCompleted {get;}

プロパティ値

bool

備考

GetOutcome()を呼び出さない場合、このプロパティはnull値を保持します。

GetOutcome()を呼び出すと、このプロパティはtrueまたはfalse値を保持します。

表6-92に、CommittedおよびUserCallCompletedの各プロパティで想定される結果を示します。

UserId

このプロパティは、このオブジェクトの取得元である接続に対応するユーザーIDを指定します。

宣言

// C#
public string UserId {get;}

プロパティ値

文字列としてのユーザーID。

OracleLogicalTransactionメソッド

OracleLoigcalTransactionメソッドを、表6-93にリストします

表6-93 OracleLogicalTransactionメソッド

プロパティ 説明

Dispose


このメソッドでは、オブジェクトにより割り当てられたリソースまたはメモリーを解除します

GetOutcome


このメソッドは、データベース・サーバーからトランザクション結果を取得します。このメソッドは、トランザクションがコミットおよび完了されたかどうかを判定します。


Dispose

このメソッドでは、オブジェクトにより割り当てられたリソースまたはメモリーを解除します

宣言

// C#
public void Dispose();

実装

IDisposable

備考

Disposeメソッドでは、OracleLogicalTransactionオブジェクトもクローズします。

GetOutcome

GetOutcomeメソッドは、データベース・サーバーからトランザクション結果を取得します。このメソッドは、トランザクションがコミットおよび完了されたかどうかを判定します。

オーバーロード・リスト:

  • GetOutcome()

    このメソッドは、OracleLogicalTransactionオブジェクトがインスタンス化または戻したOracleConnectionが使用する文字列と同じ接続文字列を使用します。

    このメソッドにより作成された接続は、戻るときにクローズされます。

    このメソッドの同じインスタンス上での繰返しの呼出しは、サーバーのラウンドトリップは発生しません。

    このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。

  • GetOutcome(string userid, string password, string dataSource)

    このメソッドは、このメソッドにパラメータで渡された接続情報を使用します。

    このメソッドにより作成された接続は、戻るときにクローズされます。

    このメソッドの同じインスタンス上での繰返しの呼出しは、サーバーのラウンドトリップは発生しません。

    このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。

  • GetOutcome(string constringbyte[] ltxidout bool? bCommittedout bool? bUserCallCompleted)

    アプリケーションは、例外が発生したときに結果が不明の場合、この静的メソッドを使用できます。

    アプリケーションは、このメソッドを呼び出す前に接続文字列およびlogical transaction idOracleException.OracleLogicalTransactionオブジェクトから取得する必要があります。

    指定された論理トランザクションIDの結果を判断するためにデータベースへの接続を確立するには、提供された接続文字列が使用されます。

    ODP.NETは、次の条件で明示的にGetOutcomeをコールします。

    • トランザクション・ガードがサービス上で使用可能

    • OracleExceptionが発生

    • 例外がリカバリ可能エラー

    上記すべてがtrueの場合、OracleException.OracleLogicalTransactionプロパティはnull以外になります。

    接続が分散トランザクションに含まれている場合、GetOutcomeは明示的にコールされずOracleException.OracleLogicalTransaction.LogicalTransactionIdプロパティはnullを戻します。


注意:

GetOutcome() invocationに対してサーバー・ラウンドトリップが1回実行されると、指定したOracleLogicalTransactionオブジェクトについてPL/SQLのForceOutcomeは二度とサーバーに対して呼び出されなくなります。