| Oracle® Data Provider for .NET開発者ガイド ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows E72575-01 |
|
![]() 前 |
![]() 次 |
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パブリック読取り専用プロパティ
OracleLoigcalTransactionパブリック読取り専用プロパティを、表6-89にリストします。
表6-89 OracleLogicalTransactionパブリック読取り専用プロパティ
| プロパティ | 説明 |
|---|---|
|
|
トランザクションがコミットされたかどうかを指定します |
|
|
最後のデータベース停止時に実行しているトランザクションに使用される接続文字列のサブセットを指定します |
|
|
このオブジェクトの取得元である接続に対応するデータ・ソース、たとえばTNS別名を指定します。 このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。 |
|
|
論理トランザクションIDは、停止後のデータベース・セッション内でオープンになっている最終トランザクションのコミット結果の判別に使用されます。 |
|
|
トランザクションがコミットされたかどうかと、戻される情報が不完全であるか一部の操作が完了していない、またはその両方の可能性があることを示します。 |
|
|
このオブジェクトの取得元である接続に対応するユーザーIDを指定します。 このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。 |
OracleLogicalTransactionメソッド
OracleLoigcalTransactionメソッドを、表6-90にリストします
OracleLoigcalTransactionパブリック読取り専用プロパティを、表6-91にリストします。
表6-91 OracleLogicalTransactionパブリック読取り専用プロパティ
| プロパティ | 説明 |
|---|---|
|
|
トランザクションがコミットされたかどうかを指定します |
|
|
最後のデータベース停止時に実行しているトランザクションに使用される接続文字列のサブセットを指定します |
|
|
このオブジェクトの取得元である接続に対応するデータ・ソース、たとえばTNS別名を指定します。 このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。 |
|
|
論理トランザクションIDは、停止後のデータベース・セッション内でオープンになっている最終トランザクションのコミット結果の判別に使用されます。 |
|
|
トランザクションがコミットされたかどうかと、戻される情報が不完全であるか一部の操作が完了していない、またはその両方の可能性があることを示します。 |
|
|
このオブジェクトの取得元である接続に対応するユーザーIDを指定します。 このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。 |
このプロパティは、トランザクションがコミットされたかどうかを指定します。
宣言
// C#
public bool? Committed {get;}
プロパティ値
bool。
備考
GetOutcome()を呼び出さない場合、このプロパティはnull値を保持します。
GetOutcome()を呼び出すと、このプロパティはtrueまたはfalse値を保持します。
表6-92に、CommittedおよびUserCallCompletedの各プロパティで想定される結果を示します。
表6-92 コミットしたOracleLogicalTransactionの結果とUserCallCompletedプロパティ
| Committedの値 | UserCallCompletedの値 | 結果 |
|---|---|---|
|
|
|
このコールはコミットを実行していません。 |
|
|
|
このコールはコミットを実行しており、その他に戻される情報はなく、必要な操作もありません(このコールがPL/SQLプロシージャの場合)。 |
|
|
|
このトランザクションはコミットされましたが、戻される情報が不完全であるか、一部の操作が完了してない、またはその両方の可能性があります。たとえば、不完全な情報や未完了の操作には、成功時の自動コミットまたはコミットによって変更される行数、PL/SQLプロシージャをコールしたときのパラメータおよびファンクションの結果、コミット後に実行するPL/SQLプロシージャの操作などがあります。コミット後に戻されるデータを使用する場合、その.NETアプリケーションを正しく機能させるためには、 |
このプロパティは最後のデータベース停止時に実行しているトランザクションに使用される接続文字列のサブセットを指定します。
宣言
// C#
public string ConnectionString {get;}
プロパティ値
文字列としてのデータ・ソース。
備考
この接続文字列は、停止しているサービスのために例外がスローされた時点で結果が不明の場合に便利です。そのようなシナリオでは、データベースまたはサービスがバックアップされた後、LogicalTransactionIdとともにこのプロパティから接続文字列を使用し、静的OracleConnection.GetOutcome()メソッドを起動することで、論理トランザクションの結果を判断します。
このプロパティから戻されたこの文字列には次の属性のみが含まれます: User Id、Proxy user Id (nullまたは空でない場合)、Data SourceおよびPooling (これはfalseに設定されます)。
このプロパティは、このオブジェクトの取得元である接続に対応するデータ・ソース、たとえばTNS別名を指定します。
宣言
// C#
public string DataSource {get;}
プロパティ値
文字列としてのデータ・ソース。
論理トランザクションIDは、停止後のデータベース・セッション内でオープンになっている最終トランザクションのコミット結果の判別に使用されます。
宣言
// C#
public byte LogicalTransactionId {get;}
プロパティ値
byte[]
備考
この論理トランザクションIDは、停止しているサービスのために例外がスローされた時点で結果が不明の場合に便利です。そのようなシナリオでは、データベースまたはサービスがバックアップされた後、(ConnectionStringとともに)このプロパティから戻されたbyte[]を使用し、静的OracleConnection.GetOutcome()メソッドを起動することで、論理トランザクションの結果を判断します。
結果が不明の場合、このプロパティはnull以外の値のみを戻します。たとえば、データベースまたはサービスが停止している場合、結果は不明です。
接続が分散トランザクションに参加している場合、LogicalTransactionIdプロパティはnullを戻します。
このプロパティは、トランザクションがコミットされたかどうかと、戻される情報が不完全であるか一部の操作が完了していない、またはその両方の可能性があることを示します。
宣言
// C#
public bool? UserCallCompleted {get;}
プロパティ値
bool
備考
GetOutcome()を呼び出さない場合、このプロパティはnull値を保持します。
GetOutcome()を呼び出すと、このプロパティはtrueまたはfalse値を保持します。
表6-92に、CommittedおよびUserCallCompletedの各プロパティで想定される結果を示します。
OracleLoigcalTransactionメソッドを、表6-93にリストします
表6-93 OracleLogicalTransactionメソッド
| プロパティ | 説明 |
|---|---|
|
|
このメソッドでは、オブジェクトにより割り当てられたリソースまたはメモリーを解除します |
|
|
このメソッドは、データベース・サーバーからトランザクション結果を取得します。このメソッドは、トランザクションがコミットおよび完了されたかどうかを判定します。 |
このメソッドでは、オブジェクトにより割り当てられたリソースまたはメモリーを解除します
宣言
// C# public void Dispose();
実装
IDisposable
備考
Disposeメソッドでは、OracleLogicalTransactionオブジェクトもクローズします。
GetOutcomeメソッドは、データベース・サーバーからトランザクション結果を取得します。このメソッドは、トランザクションがコミットおよび完了されたかどうかを判定します。
オーバーロード・リスト:
GetOutcome()
このメソッドは、OracleLogicalTransactionオブジェクトがインスタンス化または戻したOracleConnectionが使用する文字列と同じ接続文字列を使用します。
このメソッドにより作成された接続は、戻るときにクローズされます。
このメソッドの同じインスタンス上での繰返しの呼出しは、サーバーのラウンドトリップは発生しません。
このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。
GetOutcome(string userid, string password, string dataSource)
このメソッドは、このメソッドにパラメータで渡された接続情報を使用します。
このメソッドにより作成された接続は、戻るときにクローズされます。
このメソッドの同じインスタンス上での繰返しの呼出しは、サーバーのラウンドトリップは発生しません。
このプロパティは12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。
GetOutcome(string constring、byte[] ltxid、out bool? bCommitted、out bool? bUserCallCompleted)
アプリケーションは、例外が発生したときに結果が不明の場合、この静的メソッドを使用できます。
アプリケーションは、このメソッドを呼び出す前に接続文字列およびlogical transaction idをOracleException.OracleLogicalTransactionオブジェクトから取得する必要があります。
指定された論理トランザクションIDの結果を判断するためにデータベースへの接続を確立するには、提供された接続文字列が使用されます。
ODP.NETは、次の条件で明示的にGetOutcomeをコールします。
トランザクション・ガードがサービス上で使用可能
OracleExceptionが発生
例外がリカバリ可能エラー
上記すべてがtrueの場合、OracleException.OracleLogicalTransactionプロパティはnull以外になります。
接続が分散トランザクションに含まれている場合、GetOutcomeは明示的にコールされず、OracleException.OracleLogicalTransaction.LogicalTransactionIdプロパティはnullを戻します。
|
注意: GetOutcome() invocationに対してサーバー・ラウンドトリップが1回実行されると、指定したOracleLogicalTransactionオブジェクトについてPL/SQLのForceOutcomeは二度とサーバーに対して呼び出されなくなります。 |