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

前
 
次
 

OracleConnectionクラス

OracleConnectionオブジェクトは、Oracle Databaseへの接続を表します。

クラスの継承

System.Object

  System.MarshalByRefObject

    System.ComponentModel.Component

      System.Data.Common.DbConnection

        Oracle.DataAccess.Client.OracleConnection

宣言

// C#
public sealed class OracleConnection : DbConnection, IDbConnection, ICloneable

要件

プロバイダ 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

スレッド安全性

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

// C#
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
 
class OracleConnectionSample
{
  static void Main()
  {  
    // Connect
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    // Execute a SQL SELECT
    OracleCommand cmd = con.CreateCommand();
    cmd.CommandText = "select * from emp";
    OracleDataReader reader = cmd.ExecuteReader();
 
    // Print all employee numbers
    while (reader.Read())
      Console.WriteLine(reader.GetInt32(0));
 
    // Clean up
    reader.Dispose();
    cmd.Dispose();
    con.Dispose();
  }
}

OracleConnectionメンバー

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

OracleConnectionコンストラクタ

OracleConnectionコンストラクタを、表6-24にリストします。

表6-24 OracleConnectionコンストラクタ

コンストラクタ 説明

OracleConnectionコンストラクタ

OracleConnectionクラスの新規インスタンスをインスタンス化します(オーバーロード)


OracleConnection静的プロパティ

OracleConnection静的プロパティを、表6-26にリストします。

表6-25 OracleConnection静的プロパティ

プロパティ 説明

IsAvailable


暗黙的なデータベース接続が使用できるかどうかを示します。


OracleConnection静的メソッド

OracleConnection静的メソッドを、表6-26にリストします。

表6-26 OracleConnection静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)

ClearPool


指定のOracleConnectionオブジェクトに関連付けられている接続プールがクリアされます。

.NETストアド・プロシージャではサポートされません

ClearAllPools


すべての接続プールからすべての接続がクリアされます。

.NETストアド・プロシージャではサポートされません


OracleConnectionプロパティ

OracleConnectionプロパティを、表6-27にリストします。

表6-27 OracleConnectionプロパティ

プロパティ 説明

ActionName


接続のアクション名を指定します。

ClientId


接続のクライアント識別子を指定します

ClientInfo


接続のクライアント情報を指定します

ConnectionString

Oracle Databaseへの接続に使用される接続情報を指定します

ConnectionTimeout

Openメソッドが要求を終了する前にプールされた接続の取得に要する最大時間を示します。

ConnectionType


特定の接続オブジェクトがTimesTenデータベース接続またはOracle Database接続に関連付けられているか、あるいは物理接続に関連付けられていないかを判別します

ODP.NET管理対象ドライバでは使用できません

Container

System.ComponentModel.Componentからの継承

Database


サポート対象外

DatabaseDomainName


接続の設定先データベース・ドメインの名前を指定します

DatabaseName


接続の設定先データベースの名前を指定します

DataSource


接続するデータベースを識別するOracle Netサービス名、接続記述子または簡易接続ネーミングを指定します

HostName


接続の設定先ホストの名前を指定します

InstanceName


接続の設定先インスタンスの名前を指定します

LogicalTransactionId


起動時に接続と関連付ける論理トランザクションIDを指定します

ODP.NET管理対象ドライバでは使用できません

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

ModuleName


接続のモジュール名を指定します。

OracleLogicalTransaction


OracleLogicalTransactionオブジェクトのインスタンスを返します。

ODP.NET管理対象ドライバでは使用できません

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

ServerVersion

OracleConnectionが接続を確立するOracle Databaseのバージョン番号を指定します

ServiceName


接続の設定先サービスの名前を指定します

Site

System.ComponentModel.Componentからの継承

State

接続の現在の状態を指定します

StatementCacheSize


この接続に関連付けられた文キャッシュの現在のサイズを指定します


OracleConnectionパブリック・メソッド

OracleConnectionパブリック・メソッドを、表6-28にリストします。

表6-28 OracleConnectionパブリック・メソッド

パブリック・メソッド 説明

BeginTransaction

ローカル・トランザクションを開始します(オーバーロード)

コンテキスト接続用の.NETストアド・プロシージャではサポートされません

ChangeDatabase

サポート対象外

Clone


OracleConnectionオブジェクトのコピーを作成します

.NETストアド・プロシージャではサポートされません

Close


データベース接続をクローズします

CreateCommand

OracleConnectionオブジェクトに関連付けられたOracleCommandオブジェクトを作成して戻します

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose

System.ComponentModel.Componentからの継承

EnlistDistributedTransaction


アプリケーションによって、指定された分散トランザクションに明示的に登録できるようにします

.NETストアド・プロシージャではサポートされません

EnlistTransaction


アプリケーションによって、指定された分散トランザクションに登録できるようにします

.NETストアド・プロシージャではサポートされません

Equals

System.Objectからの継承(オーバーロード)

FlushCache


この接続を使用し、REFオブジェクトを通して検索したすべての更新と削除をフラッシュします

ODP.NET管理対象ドライバでは使用できません

GetHashCode

System.Objectからの継承

GetLifetimeService

System.MarshalByRefObjectからの継承

GetLogicalTransactionStatus


接続と関連付けられている現行の論理トランザクションのステータスを戻します

ODP.NET管理対象ドライバでは使用できません

このメソッドはODP.NET 12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。

GetSchema


OracleConnectionのデータ・ソースのスキーマ情報を戻します。

GetSessionInfo

セッションのグローバリゼーションの設定を表すOracleGlobalizationオブジェクトのプロパティ値を戻すか、またはリフレッシュします(オーバーロード)

GetType

System.Objectからの継承

InitializeLifetimeService

System.MarshalByRefObjectからの継承

Open

ConnectionStringにより指定されたプロパティの設定でデータベース接続をオープンします

OpenWithNewPassword

新規パスワードで新規接続をオープンします

コンテキスト接続用の.NETストアド・プロシージャではサポートされません

PurgeStatementCache


文キャッシングが有効な場合、データベースでオープンしているすべてのカーソルをクローズし、文キャッシュをフラッシュします

SetSessionInfo

セッションのグローバリゼーションの設定をOracleGlobalizationオブジェクトにより指定されたプロパティ値で変更します

ToString

System.Objectからの継承


OracleConnectionイベント

OracleConnectionイベントを、表6-29にリストします。

表6-29 OracleConnectionイベント

イベント名 説明

Disposed

System.ComponentModel.Componentからの継承

Failover

Oracleフェイルオーバーが発生するときにトリガーされるイベント

.NETストアド・プロシージャではサポートされません

ODP.NET管理対象ドライバでは使用できません

HAEvent


HAイベントが発生したときにトリガーされるイベント。

InfoMessage

すべてのメッセージにトリガーされるイベントまたはデータベースにより送信される警告

StateChange

接続の状態が変更されたときにトリガーされるイベント


OracleConnectionコンストラクタ

OracleConnectionコンストラクタはOracleConnectionクラスの新規インスタンスをインスタンス化します。

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

  • OracleConnection()

    このコンストラクタは、デフォルト・プロパティ値を使用してOracleConnectionクラスの新規インスタンスをインスタンス化します。

  • OracleConnection(String)

    このコンストラクタは、指定された接続文字列とともにOracleConnectionクラスの新規インスタンスをインスタンス化します。

OracleConnection()

このコンストラクタは、デフォルト・プロパティ値を使用してOracleConnectionクラスの新規インスタンスをインスタンス化します。

宣言

// C#
public OracleConnection();

備考

OracleConnectionのプロパティは次のデフォルト値に設定されます。

  • ConnectionString = 空の文字列

  • ConnectionTimeout = 15(暗黙的なデータベース接続にはデフォルト値の0が使用されます。)

  • DataSource = 空の文字列

  • ServerVersion = 空の文字列

OracleConnection(String)

このコンストラクタは、指定された接続文字列とともにOracleConnectionクラスの新規インスタンスをインスタンス化します。

宣言

// C#
public OracleConnection(String connectionString);

パラメータ

  • connectionString

    接続情報は、Oracle Databaseへの接続に使用されます。

備考

ConnectionStringプロパティは、指定されたconnectionStringに設定されます。ConnectionStringプロパティは解析され、無効な接続文字列属性または属性値が含まれる場合は、例外がスローされます。

OracleConnectionオブジェクトのプロパティは、接続文字列により設定されない場合は、次の値をデフォルトとします。

  • ConnectionString = 空の文字列

  • ConnectionTimeout = 15(暗黙的なデータベース接続にはデフォルト値の0が使用されます。)

  • DataSource = 空の文字列

  • ServerVersion = 空の文字列

OracleConnection静的プロパティ

OracleConnection静的プロパティを、表6-30にリストします。

表6-30 OracleConnection静的プロパティ

プロパティ 説明

IsAvailable


暗黙的なデータベース接続が使用できるかどうかを示します。


IsAvailable

このプロパティは、暗黙的なデータベース接続が使用できるかどうかを示します。

宣言

// C#
public static bool IsAvailable {get;}

プロパティ値

暗黙的なデータベース接続が使用できる場合はtrueを戻します。

備考

暗黙的なデータベース接続の可用性は、実行時にこの静的プロパティを使用して確認できます。Oracle Data Provider for .NETが.NETストアド・プロシージャ内で使用されている場合、このプロパティは常にtrueを戻します。それ以外の場合は、falseが戻されます。

暗黙的なデータベース接続を表すOracleConnectionオブジェクトを.NETストアド・プロシージャで取得するには、OracleConnectionオブジェクトのConnectionStringプロパティを"context connection=true"に設定し、Openメソッドを起動します。

明示的なユーザー接続に使用できるすべての機能を暗黙的なデータベース接続に使用できるわけではないことに注意してください。詳細は、「暗黙的データベース接続」を参照してください。

// C# (Library/DLL)
using System;
using Oracle.DataAccess.Client;
 
public class IsAvailableSample
{
  static void MyStoredProcedure()
  {
    OracleConnection con = new OracleConnection();
    if (OracleConnection.IsAvailable)
    {
      // This function is invoked as a stored procedure
      // Obtain the implicit database connection by setting
      //   "context connection=true" in the connection string
      con.ConnectionString = "context connection=true";
    }
    else
    {
      // This function is not invoked as a stored procedure
      // Set the connection string for a normal client connection
      con.ConnectionString = "user id=scott;password=tiger;data source=oracle";
    }
 
    con.Open();
    Console.WriteLine("connected!");
  }
}

OracleConnection静的メソッド

OracleConnection静的メソッドを、表6-31にリストします。

表6-31 OracleConnection静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)

ClearPool


指定のOracleConnectionオブジェクトに関連付けられている接続プールがクリアされます。

.NETストアド・プロシージャではサポートされません

ClearAllPools


すべての接続プールからすべての接続がクリアされます。

.NETストアド・プロシージャではサポートされません


ClearPool

このメソッドでは、指定のOracleConnectionオブジェクトに関連付けられている接続プールがクリアされます。

宣言

// C#
public static void ClearPool(OracleConnection connection);

備考

このメソッドが呼び出されると、すべてのアイドル接続はクローズされプールから解放されます。プールに戻されるまで現在使用中の接続は廃棄されません。

ODP.NET 12cリリース1 (12.1)以降のClearPoolでは、新規接続が自動的にプールに再移入されることはありません。これは、クライアントからデータベース・サーバーに接続できない状態が続く場合に、無効な接続でプールが再移入されるのを防止するためです。開発者は、OracleConnection.Open()のコールによってプールが再移入されるときのプログラムを制御して、接続数以上の最小プール・サイズを持つプールに再移入することができます。

このメソッドを呼び出した後に作成された接続は、他のメソッドが呼び出されるまではクリアされません。

ConnectionStringが適切に設定されている場合、このメソッドは接続をオープンする前およびオープンした後に、OracleConnectionオブジェクトに対して起動できます。

例外

InvalidOperationException - 接続プールが見つからないか、指定された接続文字列が無効です。

// C#
// Sample demonstrating the use of ClearPool API in OracleConnection class
 
using System;
using Oracle.DataAccess.Client;
 
class ClearPoolSample
{
  static void Main()
  {
    Console.WriteLine("Running ClearPool sample..." );
    // Set the connection string
    string strConn = "User Id=scott;Password=tiger;Data Source=oracle;" +
                     "Min pool size=5;";
    OracleConnection conn = new OracleConnection(strConn);
 
    // Open the connection
    conn.Open();
  
    // Clears the connection pool associated with connection 'conn'
    OracleConnection.ClearPool (conn);
 
    // This connection will be placed back into the pool
    conn.Close ();
 
    // Open the connection again to create additional connections in the pool
    conn.Open();
 
    // Create a new connection object
    OracleConnection connNew = new OracleConnection(strConn);
 
    // Clears the pool associated with Connection 'connNew'
    // Since the same connection string is set for both the connections,
    // connNew and conn, they will be part of the same connection pool.
    // We need not do an Open() on the connection object before calling
    // ClearPool
    OracleConnection.ClearPool (connNew);
 
    // cleanup
    conn.Close();
    Console.WriteLine("Done!");
  }
}

ClearAllPools

このメソッドでは、すべての接続プールからすべての接続がクリアされます。

宣言

// C#
public static void ClearAllPools();

備考

これは、アプリケーション用に作成されたすべての接続プールに対して、ClearPoolを呼び出す操作に似ています。

例外

InvalidOperationException - アプリケーション用の接続プールが見つかりません。

// C#
// Sample demonstrating the use of ClearAllPools API in OracleConnection class
 
using System;
using Oracle.DataAccess.Client;
 
class ClearAllPoolsSample
{
  static void Main()
  {
    Console.WriteLine("Running ClearAllPools sample..." );
    // Set the connection string
    string strConn = "User Id=scott;Password=tiger;Data Source=oracle;" +
           "Min pool size=5;";
    OracleConnection conn = new OracleConnection(strConn);
    
    // Create another connection object with a different connection string
    string strConnNew = "User Id=scott;Password=tiger;Data Source=oracle;";
    OracleConnection connNew = new OracleConnection(strConnNew);
 
    // Open the connections. Separate pools are created for conn and connNew
    conn.Open();
    connNew.Open();
    
    // Clears the pools associated with conn and connNew
    OracleConnection.ClearAllPools ();
 
    // cleanup
    conn.Close();
    connNew.Close();
    Console.WriteLine("Done!");
  }
}

OracleConnectionプロパティ

OracleConnectionプロパティを、表6-32にリストします。

表6-32 OracleConnectionプロパティ

プロパティ 説明

ActionName


接続のアクション名を指定します。

ClientId


接続のクライアント識別子を指定します

ClientInfo


接続のクライアント情報を指定します

ConnectionString

Oracle Databaseへの接続に使用される接続情報を指定します

ConnectionTimeout

Openメソッドが要求を終了する前にプールされた接続の取得に要する最大時間を示します。

ConnectionType


特定の接続オブジェクトがTimesTenデータベース接続またはOracle Database接続に関連付けられているか、あるいは物理接続に関連付けられていないかを判別します

ODP.NET管理対象ドライバでは使用できません

Container

System.ComponentModel.Componentからの継承

Database


サポート対象外

DatabaseDomainName


接続の設定先データベース・ドメインの名前を指定します

DatabaseName


接続の設定先データベースの名前を指定します

DataSource


接続するデータベースを識別するOracle Netサービス名、接続記述子または簡易接続ネーミングを指定します

HostName


接続の設定先ホストの名前を指定します

InstanceName


接続の設定先インスタンスの名前を指定します

LogicalTransactionId


起動時に接続と関連付ける論理トランザクションIDを指定します

ODP.NET管理対象ドライバでは使用できません

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

ModuleName


接続のモジュール名を指定します。

OracleLogicalTransaction


OracleLogicalTransactionオブジェクトのインスタンスを返します。

ODP.NET管理対象ドライバでは使用できません

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

ServerVersion

OracleConnectionが接続を確立するOracle Databaseのバージョン番号を指定します

ServiceName


接続の設定先サービスの名前を指定します

Site

System.ComponentModel.Componentからの継承

State

接続の現在の状態を指定します

StatementCacheSize


この接続に関連付けられた文キャッシュの現在のサイズを指定します


ActionName

このプロパティでは、接続のアクション名を指定します。

宣言

// C#
public string ActionName {set;}

プロパティ値

アクション名として使用される文字列。

備考

デフォルト値はnullです。

ActionNameプロパティを使用すると、アプリケーションで特定のOracleConnectionオブジェクトに対してアプリケーション・コンテキスト内にアクション名を設定できます。

OracleConnectionオブジェクト上でCloseまたはDisposeメソッドが呼び出されると、ActionNameプロパティはnullにリセットされます。

ClientId

このプロパティでは、接続のクライアント識別子を指定します。

宣言

// C#
public string ClientId {set;}

プロパティ値

クライアント識別子として使用される文字列

備考

デフォルト値はnullです。

ClientIdプロパティを使用すると、アプリケーションで特定のOracleConnectionオブジェクトに対してアプリケーション・コンテキスト内にクライアント識別子を設定できます。

ClientIdnullに設定すると、接続のクライアント接続子がリセットされます。OracleConnectionオブジェクトでCloseメソッドまたはDisposeメソッドがコールされると、ClientIdnullに設定されます。

ClientInfo

このプロパティでは、接続のクライアント情報を指定します。

宣言

// C#
public string ClientInfo {set;}

プロパティ値

クライアント情報として使用される文字列。

備考

デフォルト値はnullです。

ClientInfoプロパティを使用すると、アプリケーションで特定のOracleConnectionオブジェクトに対してアプリケーション・コンテキスト内にクライアント情報を設定できます。

OracleConnectionオブジェクト上でCloseまたはDisposeメソッドが呼び出されると、ClientInfoプロパティはnullにリセットされます。

ConnectionString

このプロパティは、Oracle Databaseへの接続に使用される接続情報を指定します。

宣言

// C#
public override string ConnectionString{get; set;}

プロパティ値

接続文字列がコンストラクタを介して指定される場合、このプロパティはその文字列に設定されます。

実装

IDbConnection

例外

ArgumentException - 無効な構文が接続文字列に指定されました。

InvalidOperationException - ConnectionStringが接続がオープン中に設定されました。

備考

デフォルト値が空の文字列です。

ConnectionStringは、セミコロンで区切られた属性名と値のペアにする必要があります。次に例を示します。

"User Id=scott;password=tiger;data source=oracle"

ConnectionStringの形式が正しくない場合、例外がスローされます。二重引用符で囲まれていない場合、すべてのスペースは無視されます。

ConnectionStringプロパティが設定されている場合、OracleConnectionオブジェクトはすぐに文字列のエラーを解析します。ArgumentExceptionは、ConnectionStringに無効な属性または無効な値が含まれている場合に、スローされます。User IdPasswordProxy User IdProxy Password、およびData Source(提供されている場合)の属性値は、Openメソッドがコールされるまで検証されません。

接続はクローズして、ConnectionStringプロパティに設定する必要があります。ConnectionStringプロパティがリセットされる場合、事前に設定された値は、新しい値が適用される前にそれぞれのデフォルト値に再初期化されます。

ODP.NET 11.1で開始する場合、パスワードおよびプロキシ・パスワードの接続文字列属性の値は大/小文字が区別されます。そのため、接続文字列に指定された大文字または小文字が認証用としてデータベースに渡されます。したがって、データベースが大/小文字が区別されているパスワードをサポートするよう構成されている場合、パスワードは正しい大/小文字で渡される必要があります。

接続文字列属性が2回以上設定されている場合、最新の設定が実行され、例外はスローされません。

ブール接続文字列属性は、truefalseyesまたはnoのいずれかに設定できます。

備考(.NETストアド・プロシージャ)

暗黙的なデータベース接続を表すOracleConnectionオブジェクトを.NETストアド・プロシージャで取得するには、OracleConnectionオブジェクトのConnectionStringプロパティを"context connection=true"に設定し、Openメソッドを起動します。context connectionがtrueに設定されている場合、その他の接続文字列属性を一緒に使用することはできません。

サポートされている接続文字列属性

表6-33には、サポートされている接続文字列属性をリストします。

表6-33 サポートされている接続文字列属性

接続文字列属性 説明 デフォルト値

Connection Lifetime

接続の最小存続時間(秒)。

この属性は、接続の存続期間を秒単位で指定します。ConnectionClose()またはDispose()コールによってプールに戻される前に、接続の存続期間がチェックされます。接続の存続期間がこのプロパティ値を超える場合、接続は破棄されます。このプロパティ値が0の場合、接続存続期間は1度もチェックされません。

0

Connection Timeout

プールから使用可能な接続を待機する最小時間(秒)。

この属性では、Open()メソッドがプールされた接続を取得するときに、その要求を終了するまでの最小時間(秒)を指定します。この値は、接続プールからの使用可能な接続がない場合、およびMax Pool Sizeに達した場合にのみ有効になります。使用可能な接続が指定された時間内に使用できない場合、例外がスローされます。Connection Timeoutは、新規接続のオープン時に必要とする時間を制限しません。

この属性値はプールされた接続要求に対して有効となりますが、新規接続要求に対しては有効にはなりません。

(.NETストアド・プロシージャにおける暗黙的なデータベース接続のデフォルト値は0です。)

15

Context Connection

trueに設定した場合、暗黙的なデータベース接続が戻されます。

暗黙的なデータベース接続は、.NETストアド・プロシージャ内からのみ取得できます。context connectiontrueに設定されている場合、その他の接続文字列属性を一緒に使用することはできません。

.NETストアド・プロシージャでのみサポートされています。

false

Data Source

接続するデータベースを識別するOracle Netサービス名、接続記述子または簡易接続ネーミング。

空の文字列

DBA Privilege

管理者権限SYSDBAまたはSYSOPER

この接続文字列属性は、属性値としてSYSDBAまたはSYSOPERのみを受け入れます。大/小文字を区別します。

空の文字列

Decr Pool Size

未使用の確立済接続量が過剰となり、クローズされる接続数。

この接続文字列の属性は、プール・レギュレータが定期的なチェックを行う場合、クローズされる未使用の最大接続数を制御します。このレギュレータ・スレッドは3分ごとに生成され、プールされた接続が使用されていない場合、その接続のDecr Pool Size量に達するまでクローズします。プール・レギュレータは、プールされた接続をクローズすることによりMin Pool Size未満の接続の合計数を取りません。

1

Enlist

COM+トランザクションまたはSystem.Transactionsのコンテキストでの接続の登録動作と機能を制御します。

この属性がtrueに設定されている場合、接続は自動的にスレッドのトランザクション・コンテキストに登録されます。この属性がfalseの場合、登録は行われません。この属性がdynamicに設定されている場合は、アプリケーションで分散トランザクションに動的に登録できます。この属性は、truefalseyesnoまたはdynamicのいずれかに設定できます。

true

HA Events

ODP.NET接続プールを使用して、Oracleデータベース・サービス、サービス・メンバーまたはノードの停止時に、プールから接続を事前に削除できます。

この機能は、Oracle RAC、Data Guard、GoldenGateおよび単一インスタンスへのデプロイを含め、Global Data Servicesで使用できます。"pooling=true"も設定する必要があります。

この属性は、truefalseyesまたはnoのいずれかに設定できます。

false

Load Balancing

ODP.NET接続プールを使用して、ロード・バランシング・アドバイザリおよびサービスの目的に基づき、Oracleデータベース・インスタンス間の作業要求のバランスを調整できます。

この機能は、Oracle RAC、Active Data Guard、GoldenGateを含め、Global Data Servicesで使用できます。"pooling=true"も設定する必要があります。

この属性は、truefalseyesまたはnoのいずれかに設定できます。

false

Incr Pool Size

プール内のすべての接続が使用された場合に作成される新しい接続の数。

この接続文字列属性は、プールされた接続が要求されたときに確立される新規接続の数を決定しますが、未使用の接続は使用不可であり、Max Pool Sizeに達しません。新規接続がプールに作成された場合、レギュレータ・スレッドはサイクルをスキップし、すべての接続は6分間クローズされません。ただし、接続の存続期間を超過している場合は、この間に一部の接続がまだクローズ可能なことに注意してください。

5

Max Pool Size

プール内の接続の最大数。

この属性は、OracleConnectionにより使用された特定のプール内に許可された接続の最大数を指定します。接続文字列でこの属性を変更するだけでは、現在すでに存在するプールのMax Pool Size制限は変更されません。このようにして、異なるMax Pool Size制限で新規プールが容易に作成できます。この属性は、Min Pool Sizeより大きな値に設定する必要があります。この値は、Poolingが稼働していない場合、無視されます。

100

Metadata Pooling

メタデータ情報をキャッシュします。

この属性は、実行した問合せのメタデータ情報をパフォーマンス向上のためにキャッシュするかどうかを示します。

True

Min Pool Size

プール内の接続の最小数。

この属性は、プールのすべての存続期間中、プールにより保持される接続の最小数を指定します。接続文字列でこの属性を変更するだけでは、現在すでに存在するプールのMin Pool Size制限は変更されません。このようにして、異なるMin Pool Size制限で新規プールが容易に作成できます。この値は、Poolingが稼働していない場合、無視されます。

1

Password

User Idにより指定されたユーザーのパスワード。

この属性はOracleユーザーのパスワードを指定します。Oracle Database 11gリリース1(11.1)以降では、デフォルトではPasswordは大/小文字を区別します。

空の文字列

Persist Security Info

接続文字列でのパスワード検索。

この属性がfalseに設定されている場合、Passwordの値の設定はOpen()メソッドにより接続が正常にオープンされた後にアプリケーションがConnectionStringを要求する場合には戻されません。この属性は、truefalseyesまたはnoのいずれかに設定できます。

false

Pooling

接続プーリング。

この属性は、接続プーリングを使用する必要があるかどうかを指定します。プールは、属性値が一致するアルゴリズムを使用して作成されます。つまり、接続文字列内で単にスペースの数が異なる接続文字列は、同じプールを使用することを意味します。一方の接続文字列では属性をデフォルト値に設定し、もう一方の接続文字列でその属性を設定しないという点を除いて、2つの接続文字列が一致する場合、両方の要求とも同じプールから接続を取得します。この属性は、truefalseyesまたはnoのいずれかに設定できます。

true

Promotable Transaction

Promotableが分散トランザクションかどうか。

"promotable"が指定されている場合、同じTransactionScopeでオープンされる最初と後続の接続は、同じ分散トランザクション内で登録されます。"local"が指定されている場合、TransactionScopeでオープンした最初の接続ではローカル・トランザクションが使用されます。

promotable

Proxy User Id

プロキシ・ユーザーのユーザー名。

この接続文字列属性は、User Id属性により指定されたクライアント・ユーザーのかわりに接続を確立する中間層のユーザーまたはプロキシ・ユーザーを指定します。ODP.NETは、Proxy User IdまたはProxy Password属性のいずれかが空ではない文字列に設定されている場合、プロキシ接続の確立を試みます。

空の文字列

 

プロキシ・ユーザーがオペレーティング・システム認証を使用してOracle Databaseに接続するには、Proxy User Idを「/」に設定する必要があります。Proxy Passwordは、この場合無視されます。User Idは、プロキシ接続を確立している場合、「/」に設定できません。この場合の属性値は保持されます。

 


Proxy Password

プロキシ・ユーザーのパスワード。

この接続文字列属性は、中間層のユーザーまたはプロキシ・ユーザーのパスワードを指定します。このユーザーは、User Id属性により指定されたクライアント・ユーザーのかわりに接続を確立します。ODP.NETは、Proxy User IdまたはProxy Password属性のいずれかが空ではない文字列に設定されている場合、プロキシ接続の確立を試みます。

二重引用符によりこの属性値が囲まれている場合、この場合の属性値は保持されます。

空の文字列

Statement Cache Purge

接続がプールに戻るときの文キャッシュの消去。

文キャッシングが有効な場合、この属性をtrueに設定すると、接続がプールに戻される際に文キャッシュがパージされます。

false

Statement Cache Size

文キャッシュを有効にして、キャッシュ・サイズ、つまりキャッシュ可能な文の最大数のサイズを設定します。

文キャッシングはゼロより大きい値で可能で、キャッシュ・サイズはその値に設定されます。この値は、init.oraデータベース・コンフィギュレーション・ファイルにあるOPEN_CURSORSパラメータ・セットの値以下にする必要があります。

0

Self Tuning

接続の自動チューニングを有効化または無効化します。

自動チューニングが有効な場合、レジストリ、構成ファイルおよび接続文字列のStatementCacheSize設定は無視されます。

自動チューニングが無効な場合、レジストリ、構成ファイルまたは接続文字列でStatementCachSizeが指定されていないかぎり、StatementCacheSize値として0が使用されます。

true

User Id

Oracleユーザー名。

この属性は、Oracleユーザー名を指定します。二重引用符によりこの属性値が囲まれている場合、この場合の属性値は保持されます。ユーザーがオペレーティング・システム認証を使用してOracle Databaseに接続するには、User Idを「/」に設定する必要があります。すべてのPassword属性の設定は、この場合無視されます。

空の文字列

Validate Connection

プールから発生した接続の検証。

検証により、各接続に対してデータベースにラウンドトリップが発生します。このため、必要な場合のみ使用してください。

false


ConnectionTimeout

このプロパティは、Openメソッドがプールされた接続を取得するときに、その要求を終了するまでの最小時間を示します。

宣言

// C#
public override int ConnectionTimeout {get;}

プロパティ値

プールされた接続要求に対する有効な最小時間(秒)

実装

IDbConnection

備考

このプロパティは、ConnectionString属性のConnection TimeOutを使用して設定されている接続タイムアウトを示します。

このプロパティは読取り専用です。

備考(.NETストアド・プロシージャ)

アプリケーションによって指定された接続文字列がなく、暗黙的なデータベースでの接続が常に使用可能であるため、このプロパティは0に設定されます。

ConnectionType

このプロパティを使用すると、ODP.NETアプリケーションによって、特定の接続オブジェクトがOracle Database接続またはTimesTenデータベース接続に関連付けられているか、あるいは物理接続に関連付けられていないかを判別できます。

宣言

// C#
public OracleConnectionType ConnectionType {get;}

プロパティ値

この接続オブジェクトが関連付けられているOracleConnectionType

Database

このプロパティは、サポートされていません。

宣言

// C#
public override string Database {get;}

プロパティ値

文字列

実装

IDbConnection.Database

備考

このプロパティは、サポートされていません。これは常に空の文字列を戻します。

DatabaseDomainName

このプロパティは、この接続の接続先データベース・ドメインの名前を指定します。

宣言

// C#
public string DatabaseDomainName {get;}

プロパティ値

この接続の接続先データベース・ドメイン。

DatabaseName

このプロパティは、この接続の接続先データベースの名前を指定します。

宣言

// C#
public string DatabaseName {get;}

プロパティ値

この接続の接続先データベース。

DataSource

このプロパティは、接続するデータベースを識別するOracle Netサービス名、接続記述子または簡易接続ネーミングを指定します。

宣言

// C#
public override string DataSource {get;}

プロパティ値

接続するデータベースを識別するOracle Netサービス名、接続記述子または簡易接続ネーミング。

備考(.NETストアド・プロシージャ)

暗黙的なデータベース接続の場合、このプロパティの値は常に空の文字列です。

HostName

このプロパティは、この接続の接続先ホストの名前を指定します。

宣言

// C#
public string HostName {get;}

プロパティ値

この接続の接続先ホスト。

InstanceName

このプロパティは、この接続の接続先インスタンスの名前を指定します。

宣言

// C#
public string InstanceName {get;}

プロパティ値

この接続の接続先インスタンス。

LogicalTransactionId

このプロパティは、接続と関連付けられる論理トランザクションIDを示します。

宣言

// C#
public string LogicalTransactionId {get;}

プロパティ値

LogicalTransactionIdは、起動時に接続と関連付けられる論理トランザクションIDを表すbyte [ ]を戻します。

備考

LogicalTransactionIdは、GetLogicalTransactionStatusを呼び出して、入力パラメータにbyte[ ]を渡し、論理トランザクションのステータスを取得する場合に使用します。

データベース・バージョンが12.1より前の場合、戻り値はNULLです。

ローカル・トランザクションのみが、LogicalTransactionIdの使用をサポートしています。このプロパティは、分散トランザクションではサポートされません。

ModuleName

このプロパティでは、接続のモジュール名を指定します。

宣言

// C#
public string ModuleName {set;}

プロパティ値

モジュール名として使用される文字列。

備考

デフォルト値はnullです。

ModuleNameプロパティを使用すると、アプリケーションで特定のOracleConnectionオブジェクトに対してアプリケーション・コンテキスト内にモジュール名を設定できます。

OracleConnectionオブジェクト上でCloseまたはDisposeメソッドが呼び出されると、ModuleNameプロパティはnullにリセットされます。

OracleLogicalTransaction

これは、OracleLogicalTransactionオブジェクトのインスタンスを返す読取り専用のプロパティです。

宣言

// C#
public string OracleLogicalTransaction {get;}

プロパティ値

OracleLogicalTransactionオブジェクトのインスタンス。

備考

OracleConnectionオブジェクトで論理トランザクションIDが変わらないかぎり、同じOracleLogicalTransactionオブジェクトが返されます。

データベース・サーバーのバージョンが11.2より前の場合、このプロパティはNULLを返します。

ServerVersion

このプロパティは、OracleConnectionが接続を確立するOracle Databaseのバージョン番号を指定します。

宣言

// C#
public override string ServerVersion {get;}

プロパティ値

Oracle Databaseのバージョン

例外

InvalidOperationException - 接続がクローズされています。

備考

デフォルトは空の文字列です。

ServiceName

このプロパティは、この接続の接続先サービスの名前を指定します。

宣言

// C#
public string ServiceName {get;}

プロパティ値

この接続の接続先サービス。

State

このプロパティは、接続の現在の状態を指定します。

宣言

// C#
public override ConnectionState State {get;}

プロパティ値

接続のConnectionState

実装

IDbConnection

備考

ODP.NETでは、このプロパティに対してConnectionState.ClosedおよびConnectionState.Openがサポートされています。デフォルト値は、ConnectionState.Closedです。

StatementCacheSize

このプロパティは、この接続に関連付けられた文キャッシュの現在のサイズを指定します。

宣言

// C#
public int StatementCacheSize{get;}

プロパティ値

文キャッシュのサイズを示す整数値。

備考

自動チューニングが有効でない場合、このプロパティのデフォルト値は、接続文字列、アプリケーション構成ファイルまたはレジストリに指定した文キャッシュ・サイズによって異なります。これらの値をいずれも指定していない場合、デフォルト値として0が使用されます。

自動チューニングが有効な場合、プロパティ値は自動的に調整されます。接続文字列、アプリケーション構成ファイルまたはレジストリに指定した値は無視されます。

OracleConnectionパブリック・メソッド

OracleConnectionパブリック・メソッドを、表6-34にリストします。

表6-34 OracleConnectionパブリック・メソッド

パブリック・メソッド 説明

BeginTransaction

ローカル・トランザクションを開始します(オーバーロード)

コンテキスト接続用の.NETストアド・プロシージャではサポートされません

ChangeDatabase

サポート対象外

Clone


OracleConnectionオブジェクトのコピーを作成します

.NETストアド・プロシージャではサポートされません

Close


データベース接続をクローズします

CreateCommand

OracleConnectionオブジェクトに関連付けられたOracleCommandオブジェクトを作成して戻します

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose

System.ComponentModel.Componentからの継承

EnlistDistributedTransaction


アプリケーションによって、指定された分散トランザクションに明示的に登録できるようにします

.NETストアド・プロシージャではサポートされません

EnlistTransaction


アプリケーションによって、指定された分散トランザクションに登録できるようにします

.NETストアド・プロシージャではサポートされません

Equals

System.Objectからの継承(オーバーロード)

FlushCache


この接続を使用し、REFオブジェクトを通して検索したすべての更新と削除をフラッシュします

ODP.NET管理対象ドライバでは使用できません

GetHashCode

System.Objectからの継承

GetLifetimeService

System.MarshalByRefObjectからの継承

GetLogicalTransactionStatus


接続と関連付けられている現行の論理トランザクションのステータスを戻します

ODP.NET管理対象ドライバでは使用できません

このメソッドはODP.NET 12.1.0.2で非推奨となりました。今後のリリースでサポートが終了する予定です。

GetSchema


OracleConnectionのデータ・ソースのスキーマ情報を戻します。

GetSessionInfo

セッションのグローバリゼーションの設定を表すOracleGlobalizationオブジェクトのプロパティ値を戻すか、またはリフレッシュします(オーバーロード)

GetType

System.Objectからの継承

InitializeLifetimeService

System.MarshalByRefObjectからの継承

Open

ConnectionStringにより指定されたプロパティの設定でデータベース接続をオープンします

OpenWithNewPassword

新規パスワードで新規接続をオープンします

コンテキスト接続用の.NETストアド・プロシージャではサポートされません

PurgeStatementCache


文キャッシングが有効な場合、データベースでオープンしているすべてのカーソルをクローズし、文キャッシュをフラッシュします

SetSessionInfo

セッションのグローバリゼーションの設定をOracleGlobalizationオブジェクトにより指定されたプロパティ値で変更します

ToString

System.Objectからの継承


BeginTransaction

BeginTransactionメソッドは、ローカル・トランザクションを開始します。

オーバーロード・リスト

  • BeginTransaction()

    このメソッドは、ローカル・トランザクションを開始します。

  • BeginTransaction(IsolationLevel)

    このメソッドは、ローカル・トランザクションを指定された分離レベルで開始します。

BeginTransaction()

このメソッドは、ローカル・トランザクションを開始します。

宣言

// C#
public OracleTransaction BeginTransaction();

戻り値

OracleTransactionオブジェクトは、新規トランザクションを表します。

実装

IDbConnection

例外

InvalidOperationException - トランザクションはすでに開始されています。

備考

トランザクションは、分離レベルで作成され、IsolationLevel.ReadCommittedのデフォルト値に設定されます。トランザクションに関連するすべての後続の操作は、戻されたOracleTransactionオブジェクトで実行する必要があります。

備考(.NETストアド・プロシージャ)

このメソッドをコンテキスト接続用の.NETストアド・プロシージャで使用すると、未サポートの例外が発生します。

BeginTransaction(IsolationLevel)

このメソッドは、ローカル・トランザクションを指定された分離レベルで開始します。

宣言

// C#
public OracleTransaction BeginTransaction(IsolationLevel isolationLevel);

パラメータ

  • isolationLevel

    新規トランザクションの分離レベル

戻り値

OracleTransactionオブジェクトは、新規トランザクションを表します。

実装

IDbConnection

例外

InvalidOperationException - トランザクションはすでに開始されています。

ArgumentException - 指定したisolationLevel値が無効です。

備考

分離レベルIsolationLevel.ReadCommittedおよびIsolationLevel.Serializableがサポートされています。

BeginTransactionメソッドは、IsolationLevel.Serializable分離レベルをサポートしていますが、System.TransactionsおよびTransactionScopeを使用する場合、シリアライズ可能なトランザクションはサポートされません。

他の分離レベルを要求すると、例外が発生します。

備考(.NETストアド・プロシージャ)

このメソッドをコンテキスト接続用の.NETストアド・プロシージャで使用すると、未サポートの例外が発生します。

// C#
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
 
class BeginTransactionSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    // Create an OracleCommand object using the connection object
    OracleCommand cmd = con.CreateCommand();
 
    // Start a transaction
    OracleTransaction txn = con.BeginTransaction(IsolationLevel.ReadCommitted);
 
    // Update EMP table
    cmd.CommandText = "update emp set sal = sal + 100";
    cmd.ExecuteNonQuery();
 
    // Rollback transaction
    txn.Rollback();
    Console.WriteLine("Transaction rolledback");
 
    // Clean up
    txn.Dispose();
    cmd.Dispose();
    con.Dispose();
  }
}

ChangeDatabase

このメソッドは、サポートされていません。

宣言

// C#
public override void ChangeDatabase(string databaseName);

パラメータ

  • databaseName

    現行のデータベース名を置き換えるデータベースの名前

実装

IDbConnection.ChangeDatabase

例外

NotSupportedException - メソッドはサポートされていません。

備考

このメソッドはサポートされておらず、起動されるとNotSupportedExceptionをスローします。

Clone

このメソッドは、OracleConnectionオブジェクトのコピーを作成します。

宣言

// C#
public object Clone();

戻り値

OracleConnectionオブジェクト。

実装

ICloneable

備考

複製されたオブジェクトのプロパティ値は、複製元のオブジェクトのプロパティ値と同じです。

備考(.NETストアド・プロシージャ)

このメソッドは、暗黙的なデータベース接続ではサポートされていません。

// C#
 
using System;
using Oracle.DataAccess.Client; 
 
class CloneSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    // Need a proper casting for the return value when cloned
    OracleConnection clonedCon = (OracleConnection)con.Clone();
 
    // Cloned connection is always closed, regardless of its source,
    //   But the connection string should be identical
    clonedCon.Open();
    if (clonedCon.ConnectionString.Equals(con.ConnectionString)) 
      Console.WriteLine("The connection strings are the same.");
    else
      Console.WriteLine("The connection strings are different.");
 
    // Close and Dispose OracleConnection object
    clonedCon.Dispose();
  }
}

Close

このメソッドは、データベースへの接続をクローズします。

宣言

// C#
public override void Close();

実装

IDbConnection

備考

次を実行します。

  • コミットされていない保留のローカル・トランザクションをロール・バックします。分散トランザクションは、ロール・バックが必要かどうかについて、分散トランザクション・コーディネータに依存します。

  • 接続プーリングが有効な場合、接続を接続プールに配置します。接続プーリングが有効な場合でも、接続が接続文字列に指定された接続存続期間を超える場合、その接続はクローズできます。接続プーリングが無効な場合、接続はクローズされます。

  • データベースへの接続をクローズします。

接続は、Open()を使用して再オープンできます。

CreateCommand

このメソッドは、OracleConnectionオブジェクトに関連付けられたOracleCommandオブジェクトを作成して戻します。

宣言

// C#
public OracleCommand CreateCommand();

戻り値

OracleCommandオブジェクト。

実装

IDbConnection

// C#
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
 
class CreateCommandSample
{
  static void Main()
  {  
    // Connect
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    // Execute a SQL SELECT
    OracleCommand cmd = con.CreateCommand();
    cmd.CommandText = "select * from emp";
    OracleDataReader reader = cmd.ExecuteReader();
 
    // Print all employee numbers
    while (reader.Read())
      Console.WriteLine(reader.GetInt32(0));
 
    // Clean up
    reader.Dispose();
    cmd.Dispose();
    con.Dispose();
  }
}

EnlistDistributedTransaction

このメソッドにより、アプリケーションは接続がオープンされた後に特定の分散トランザクションに明示的に登録できます。

宣言

// C#
public void EnlistDistributedTransaction(ITransaction transaction);

パラメータ

  • transaction

    ITransactionインタフェース。

例外

InvalidOperationException - 接続がローカル・トランザクションの一部であるか、または接続がクローズされています。

備考

EnlistDistributedTransactionにより、メソッドに渡された特定のトランザクションにオブジェクトを登録できます。ITransactionインタフェースは、分散トランザクションを開始したコンポーネント内でContexUtil.Transactionプロパティに(ITransaction)キャストを適用することで取得できます。

このメソッドを呼び出す前に接続がオープンされている必要があります。そうしないとInvalidOperationExceptionがスローされます。

接続が、分散トランザクションに登録を試みている最中に暗黙的または明示的に開始されたローカル・トランザクションの一部である場合、ローカル・トランザクションはロールバックされ、例外がスローされます。

デフォルトでは、メソッド・レベルのAutoComplete宣言が設定されていないかぎり、分散トランザクションはロールバックされます。

ITranasctionに対してコミットを起動すると例外が発生します。

ITransactionメソッドに対してロールバックを起動し、同一分散トランザクションに対してContextUtil.SetCompleteを呼び出すと、例外が発生します。

備考(.NETストアド・プロシージャ)

このメソッドを使用すると、未サポートの例外が発生します。

アプリケーション:

// C#
 
/* This is the class that will utilize the Enterprise Services 
   component.  This module needs to be built as an executable.
   
   The Enterprise Services Component DLL must be built first 
   before building this module. 
   In addition, the DLL needs to be referenced appropriately 
   when building this application. 
*/
 
using System;
using System.EnterpriseServices;
using DistribTxnSample;
 
class DistribTxnSample_App
{
  static void Main()
  {
    DistribTxnSample_Comp comp = new DistribTxnSample_Comp();
    comp.DoWork();
  }
}

コンポーネント:

// C#
 
/* This module needs to be
   1) built as a component DLL/Library
   2) built with a strong name
   
  This library must be built first before the application is built.
*/ 
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
using System.EnterpriseServices;
 
namespace DistribTxnSample
{
  [Transaction(TransactionOption.RequiresNew)]
  public class DistribTxnSample_Comp : ServicedComponent
  {
    public void DoWork()
    {   
      string constr = 
        "User Id=scott;Password=tiger;Data Source=oracle;enlist=false";
      OracleConnection con = new OracleConnection(constr);
      con.Open();
 
      // Enlist in a distrubuted transaction
      con.EnlistDistributedTransaction((ITransaction)ContextUtil.Transaction);
 
      // Update EMP table
      OracleCommand cmd = con.CreateCommand();
      cmd.CommandText = "UPDATE emp set sal = sal + .01";
      cmd.ExecuteNonQuery();
 
      // Commit
      ContextUtil.SetComplete();
 
      // Dispose OracleConnection object
      con.Dispose();
    }
  }
}

EnlistTransaction

このメソッドは、指定したトランザクションに接続を登録します。

宣言

// C#
public override void EnlistTransaction(Transaction transaction)
 

パラメータ

  • transaction

    System.Transactions.Transactionオブジェクト。

例外

InvalidOperationException - 接続がローカル・トランザクションの一部であるか、または接続がクローズされています。

備考

このメソッドを起動すると、提供されているトランザクション・パラメータで指定されたトランザクションに、接続がただちに登録されます。

OracleConnectionが、以前のEnlistTransactionメソッドの起動で完了していない分散トランザクションにまだ関連付けられている場合は、このメソッドをコールすると例外がスローされます。

通常、トランザクションの登録が正常に完了するには、Openメソッドの起動前に、"enlist"接続文字列属性が"true"に設定されている必要があります。"enlist"接続文字列属性が"true"に設定されていると、接続がトランザクション・コンテキスト内の場合は、Openメソッドのコール時に接続が暗黙的に登録されます。"enlist"属性は、接続がトランザクションに登録されることがない場合にのみ、"false"または"dynamic"に設定してください。

FlushCache

このメソッドは、接続を使用して取得されたREFオブジェクトから作成されたすべての更新および削除をフラッシュします。

宣言

// c#
public void FlushCache();

例外

InvalidOperationException - 指定された接続がオープンされていません。

備考

オブジェクトをフラッシュする前に、アプリケーションはOracleConnectionオブジェクト上でBeginTransactionメソッドを実行して明示的にトランザクションを開始する必要があります。これは、フラッシュされるオブジェクトがアプリケーションによりロックされていない場合は、オブジェクトに対して暗黙的に排他的ロックが取得されるためです。ロックが解除されるのは、トランザクションがコミットまたはロールバックする場合にかぎります。

GetLogicalTransactionStatus

このメソッドは、既存のOracleConnectionオブジェクトについて、接続と関連付けられている現行の論理トランザクションのステータスを戻します。

宣言

// C#
public OracleLogicalTransactionStatus GetLogicalTransactionStatus(byte);
 

戻り値

接続と関連付けられている現行の論理トランザクションのステータス

例外

このメソッドをLTXIDの取得元と同じOracleConnectionオブジェクトで呼び出すと、「ORA-14906: 現在のセッションでは、LTXID出力の取得操作は実行できません。」という例外がスローされます。

備考

LTXIDNULLの場合や、Oracle Databaseのバージョンが12.1以上でない場合は、このコールによってNULLが戻されます。

// C#
// NOTE: User HR requires execution access on SYS.DBMS_APP_CONT for this demo.
// NOTE: The database service must be set with commit_outcome = true
// FIXME – show this example is used after a session loss
 
using System;
using Oracle.DataAccess.Client;
 
class TransactionGuardDemo
{
  static void Main(string[] args)
  {
    // Establish a connection to an Oracle database for checking the status
    string statusConStr = "user id=hr;password=hr;data source=oracle";
    OracleConnection statusCon = new OracleConnection(statusConStr);
    statusCon.Open();
 
    // Establish a connection to an Oracle database for the transaction
    string txnConStr = "user id=hr;password=hr;data source=oracle";
    OracleConnection txnCon = new OracleConnection(txnConStr);
    txnCon.Open();
 
    // Obtain the logical transaction id
    byte[] logicalTransactionId = txnCon.LogicalTransactionId;
 
    try
    {
      // Begin a local transaction
      OracleTransaction txn = txnCon.BeginTransaction();
 
      // Do transactional work
      OracleCommand cmd = new OracleCommand("update employees set salary=salary+10 where employee_id=100", txnCon);
      cmd.ExecuteNonQuery();
 
      // Commit the transaction
      txn.Commit();
    }
    finally
    {
      // Obtain the transaction status for the specified logical transaction id
      OracleLogicalTransactionStatus status =
        statusCon.GetLogicalTransactionStatus(logicalTransactionId);
 
      // Output the status of the logical transaction
      Console.WriteLine("Has the transaction been committed? " + status.Committed);
      Console.WriteLine("Has the user call been completed? " + status.UserCallCompleted);
    }
  }
}

GetSchema

GetSchemaメソッドは、OracleConnectionのデータ・ソースのスキーマ情報を戻します。

オーバーロード・リスト

  • GetSchema()

    このメソッドは、OracleConnectionのデータ・ソースのスキーマ情報を戻します。

  • GetSchema (string collectionName)

    このメソッドは、コレクション名に指定された文字列を使用して、OracleConnectionのデータ・ソースのスキーマ情報を戻します。

  • GetSchema(string collectionName, string[] restrictions)

    このメソッドは、コレクション名に指定された文字列および制限値に指定された文字列配列を使用して、OracleConnectionのデータ・ソースのスキーマ情報を戻します。

GetSchema()

このメソッドは、OracleConnectionのデータ・ソースのスキーマ情報を戻します。

宣言

// C#
public override DataTable GetSchema();
 

戻り値

DataTableオブジェクト。

例外

InvalidOperationException - 接続がクローズされています。

備考

このメソッドは、データベースから使用できる各メタデータ・コレクションの行を含むDataTableオブジェクトを戻します。

このメソッドは、GetSchema(String)メソッドを使用した場合、文字列値"MetaDataCollections"の指定と同じことです。

// C#
 
using System;
using System.Data;
using System.Data.Common;
using Oracle.DataAccess.Client;
 
class GetSchemaSample
{
  static void Main(string[] args)
  {
    string constr = "User Id=scott; Password=tiger; Data Source=oracle;";
    string ProviderName = "Oracle.DataAccess.Client";
 
    DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);
 
    using (DbConnection conn = factory.CreateConnection())
    {
      try
      {
        conn.ConnectionString = constr;
        conn.Open();
 
        //Get all the schema collections and write to an XML file. 
        //The XML file name is Oracle.DataAccess.Client_Schema.xml
        DataTable dtSchema = conn.GetSchema();
        dtSchema.WriteXml(ProviderName + "_Schema.xml");
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.StackTrace);
      }
    }
  }
}

GetSchema(string collectionName)

このメソッドは、コレクション名に指定された文字列を使用して、OracleConnectionのデータ・ソースのスキーマ情報を戻します。

宣言

// C#
public override DataTable GetSchema (string collectionName);

パラメータ

collectionName

メタデータが要求したコレクションの名前。

戻り値

DataTableオブジェクト。

例外

ArgumentException - 要求されたコレクションが定義されていません。

InvalidOperationException - 接続がクローズされています。

InvalidOperationException - 要求されたコレクションは現行バージョンのOracle Databaseではサポートされていません。

InvalidOperationException - 要求されたコレクションに対して移入文字列が指定されていません。

// C#
 
using System;
using System.Data;
using System.Data.Common;
using Oracle.DataAccess.Client;
 
class GetSchemaSample
{
  static void Main(string[] args)
  {
    string constr = "User Id=scott; Password=tiger; Data Source=oracle;";
    string ProviderName = "Oracle.DataAccess.Client";
 
    DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);
 
    using (DbConnection conn = factory.CreateConnection())
    {
      try
      {
        conn.ConnectionString = constr;
        conn.Open();
 
        //Get MetaDataCollections and write to an XML file.
        //This is equivalent to GetSchema()
        DataTable dtMetadata =
          conn.GetSchema(DbMetaDataCollectionNames.MetaDataCollections);
        dtMetadata.WriteXml(ProviderName + "_MetaDataCollections.xml");
 
        //Get Restrictions and write to an XML file.
        DataTable dtRestrictions =
          conn.GetSchema(DbMetaDataCollectionNames.Restrictions);
        dtRestrictions.WriteXml(ProviderName + "_Restrictions.xml");
 
        //Get DataSourceInformation and write to an XML file.
        DataTable dtDataSrcInfo =
          conn.GetSchema(DbMetaDataCollectionNames.DataSourceInformation);
        dtDataSrcInfo.WriteXml(ProviderName + "_DataSourceInformation.xml");
 
        //data types and write to an XML file.
        DataTable dtDataTypes =
          conn.GetSchema(DbMetaDataCollectionNames.DataTypes);
        dtDataTypes.WriteXml(ProviderName + "_DataTypes.xml");
 
        //Get ReservedWords and write to an XML file.
        DataTable dtReservedWords =
          conn.GetSchema(DbMetaDataCollectionNames.ReservedWords);
        dtReservedWords.WriteXml(ProviderName + "_ReservedWords.xml");
 
        //Get all the tables and write to an XML file.
        DataTable dtTables = conn.GetSchema("Tables");
        dtTables.WriteXml(ProviderName + "_Tables.xml");
 
        //Get all the views and write to an XML file.
        DataTable dtViews = conn.GetSchema("Views");
        dtViews.WriteXml(ProviderName + "_Views.xml");
 
        //Get all the columns and write to an XML file.
        DataTable dtColumns = conn.GetSchema("Columns");
        dtColumns.WriteXml(ProviderName + "_Columns.xml");
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.StackTrace);
      }
    }
  }
}

GetSchema(string collectionName, string[] restrictions)

このメソッドは、コレクション名に指定された文字列および制限値に指定された文字列配列を使用して、OracleConnectionのデータ・ソースのスキーマ情報を戻します。

宣言

// C#
public override DataTable GetSchema (string collectionName, 
    string[] restrictions);
 

パラメータ

  • collectionName

    取得されるメタデータのコレクション名。

  • restrictions

    取得されるメタデータに適用される制限の配列。

戻り値

DataTableオブジェクト。

例外

  • ArgumentException - 要求されたコレクションが定義されていません。

  • InvalidOperationException - 次の条件の1つが存在します。

    • 接続がクローズされています。

    • 要求されたコレクションは現行バージョンのOracle Databaseではサポートされていません。

    • 要求されたコレクションがサポートしているよりも多くの制限が指定されています。

    • 要求されたコレクションに対して移入文字列が指定されていません。

備考

このメソッドは、メタデータ・コレクションの名前と、戻されたDataTable内の行をフィルタする制限を指定する文字列値の配列を取得します。これは、指定された制限と一致する指定されたメタデータ・コレクションからの行のみが含まれるDataTableを戻します。

たとえば、Columnsコレクションに3つの制限(ownertablenameおよびcolumnname)がある場合、スキーマにかかわらずEMP表に対するすべての列を取得するには、GetSchemaメソッドで最低でも値nullとEMPを渡す必要があります。

制限値が何も渡されない場合、その制限にはNullを渡すことと同じデフォルト値が使用されます。これは、パラメータ値に空の文字列を渡すこととは異なります。この場合、空の文字列("")は指定されたパラメータの値を考慮します。

collectionNameでは大文字小文字は区別されませんが、制限(文字列値)では区別されます。

// C#
 
using System;
using System.Data;
using System.Data.Common;
using Oracle.DataAccess.Client;
 
class GetSchemaSample
{
  static void Main(string[] args)
  {
    string constr = "User Id=scott; Password=tiger; Data Source=oracle;";
    string ProviderName = "Oracle.DataAccess.Client";
 
    DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);
 
    using (DbConnection conn = factory.CreateConnection())
    {
      try
      {
        conn.ConnectionString = constr;
        conn.Open();
 
        //Get Restrictions
        DataTable dtRestrictions =
          conn.GetSchema(DbMetaDataCollectionNames.Restrictions);
        
        DataView dv = dtRestrictions.DefaultView;
 
        dv.RowFilter = "CollectionName = 'Columns'";
        dv.Sort = "RestrictionNumber";
 
        for (int i = 0; i < dv.Count; i++)
          Console.WriteLine("{0} (default) {1}" , 
                            dtRestrictions.Rows[i]["RestrictionName"], 
                            dtRestrictions.Rows[i]["RestrictionDefault"]);
 
        //Set restriction string array
        string[] restrictions = new string[3];
 
        //Get all columns from all tables owned by "SCOTT"
        restrictions[0] = "SCOTT";
        DataTable dtAllScottCols = conn.GetSchema("Columns", restrictions);
 
        // clear collection
        for (int i = 0; i < 3; i++)
          restrictions[i] = null;
 
        //Get all columns from all tables named "EMP" owned by any 
        //owner/schema
        restrictions[1] = "EMP";
        DataTable dtAllEmpCols = conn.GetSchema("Columns", restrictions);
 
        // clear collection
        for (int i = 0; i < 3; i++)
          restrictions[i] = null;
 
        //Get columns named "EMPNO" from tables named "EMP", 
        //owned by any owner/schema
        restrictions[1] = "EMP";
        restrictions[2] = "EMPNO";
        DataTable dtAllScottEmpCols = conn.GetSchema("Columns", restrictions);
 
        // clear collection
        for (int i = 0; i < 3; i++)
          restrictions[i] = null;
 
        //Get columns named "EMPNO" from all
        //tables, owned by any owner/schema
        restrictions[2] = "EMPNO";
        DataTable dtAllEmpNoCols = conn.GetSchema("Columns", restrictions);
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.Source);
      }
    }
  }
}

GetSessionInfo

GetSessionInfoは、セッションのグローバリゼーションの設定を表すOracleGlobalizationオブジェクトを戻すか、またはリフレッシュします。

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

  • GetSessionInfo()

    このメソッドは、セッションのグローバリゼーションの設定を表すOracleGlobalizationオブジェクトの新規インスタンスを戻します。

  • GetSessionInfo(OracleGlobalization)

    このメソッドは、セッションのグローバリゼーションの設定とともに指定されたOracleGlobalizationオブジェクトをリフレッシュします。

GetSessionInfo()

このメソッドは、セッションのグローバリゼーションの設定を表すOracleGlobalizationオブジェクトの新規インスタンスを戻します。

宣言

// C#
public OracleGlobalization GetSessionInfo();

戻り値

新規に作成されたOracleGlobalizationオブジェクト

// C#
 
using System;
using Oracle.DataAccess.Client;
 
class GetSessionInfoSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    // Get session info from connection object
    OracleGlobalization info = con.GetSessionInfo();
 
    // Update session info
    info.DateFormat = "YYYY-MM-DD";
    con.SetSessionInfo(info);
 
    // Execute SQL SELECT
    OracleCommand cmd = con.CreateCommand();
    cmd.CommandText = "select TO_CHAR(hiredate) from emp";
    Console.WriteLine("Hire Date ({0}): {1}",
      info.DateFormat, cmd.ExecuteScalar());
 
    // Clean up
    cmd.Dispose();
    con.Dispose();
  }
}

GetSessionInfo(OracleGlobalization)

このメソッドは、セッションのグローバリゼーションの設定とともに指定されたOracleGlobalizationオブジェクトをリフレッシュします。

宣言

// C#
public void GetSessionInfo(OracleGlobalization oraGlob);

パラメータ

  • oraGlob

    更新されるOracleGlobalizationオブジェクト

Open

このメソッドは、接続をOracle Databaseにオープンします。

宣言

// C#
public overide void Open();

実装

IDbConnection

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - 接続がすでにオープンしているか、または接続文字列がNULLまたは空です。

備考

接続プーリングが有効な場合、接続がプールから取得されます。それ以外の場合は、新規接続が確立されます。

Open()メソッドが起動されたときに、プールに未処理の接続が含まれていない可能性があります。この場合、新規接続が確立されます。

指定した接続タイムアウト値内で有効な接続がない場合、Max Pool Sizeに達したときにOracleExceptionがスローされます。

OpenWithNewPassword

このメソッドは、新規パスワードで新規接続をオープンします。

宣言

// C#
public void OpenWithNewPassword(string newPassword);

パラメータ

  • newPassword

    新規パスワードを含む文字列

備考

このメソッドは、新規接続を確立するためにConnectionStringプロパティの設定を使用します。旧パスワードは、Password属性値として接続文字列に指定する必要があります。

このメソッドは、クローズ状態内のOracleConnectionにのみコールされます。

備考(.NETストアド・プロシージャ)

このメソッドは、コンテキスト接続用の.NETストアド・プロシージャではサポートされません


注意:

接続プーリングが有効な場合、OpenWithNewPasswordメソッドを呼び出すと接続プールがクリアされます。その結果、古いパスワードで作成されたアイドル接続はすべてクローズされます。

PurgeStatementCache

このメソッドは、文キャッシングが有効な場合、データベースでオープンしているすべてのカーソルをクローズして文キャッシュをフラッシュします

宣言

// C#
public void PurgeStatementCache();

備考

文キャッシュを繰り返しフラッシュするとパフォーマンスが低下し、文キャッシュを有効にすることによるパフォーマンス上の利点を相殺してしまうことがあります。

PurgeStatementCacheを呼び出した後、文キャッシングは有効なままです。

このメソッドを起動すると、OracleConnectionに関連付けられた、キャッシュされているカーソルがパージされます。データベース内にキャッシュされているすべてのカーソルがパージされるわけではありません。

// C#
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
 
class PurgeStatementCacheSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle;" +
      "Statement Cache Size=20";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleCommand cmd = new OracleCommand("select * from emp", con);
    cmd.CommandType = CommandType.Text;
    OracleDataReader reader = cmd.ExecuteReader();
 
    // Purge Statement Cache
    con.PurgeStatementCache();
 
    // Close and Dispose OracleConnection object
    Console.WriteLine("Statement Cache Flushed");
    con.Close();
    con.Dispose();
  }
}

SetSessionInfo

このメソッドは、セッションのグローバリゼーションの設定を、OracleGlobalizationオブジェクトにより指定されたすべてのプロパティ値で変更します。

宣言

// C#
public void SetSessionInfo(OracleGlobalization oraGlob);

パラメータ

  • oraGlob

OracleGlobalizationオブジェクト。

備考

このメソッドのコールは、セッションにおけるALTER SESSION SQLのコールと同等です。

// C#
 
using System;
using Oracle.DataAccess.Client;
 
class SetSessionInfoSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    // Get session info from connection object
    OracleGlobalization info = con.GetSessionInfo();
 
    // Execute SQL SELECT
    OracleCommand cmd = con.CreateCommand();
    cmd.CommandText = "select TO_CHAR(hiredate) from emp";
    Console.WriteLine("Hire Date ({0}): {1}",
      info.DateFormat, cmd.ExecuteScalar());
 
    // Update session info
    info.DateFormat = "MM-DD-RR";
    con.SetSessionInfo(info);
 
    // Execute SQL SELECT again
    Console.WriteLine("Hire Date ({0}): {1}",
      info.DateFormat, cmd.ExecuteScalar());
 
    // Clean up
    cmd.Dispose();
    con.Dispose(); 
  }
}

OracleConnectionイベント

OracleConnectionイベントを、表6-35にリストします。

表6-35 OracleConnectionイベント

イベント名 説明

Disposed

System.ComponentModel.Componentからの継承

Failover

Oracleフェイルオーバーが発生するときにトリガーされるイベント

.NETストアド・プロシージャではサポートされません

ODP.NET管理対象ドライバでは使用できません

HAEvent


HAイベントが発生したときにトリガーされるイベント。

InfoMessage

すべてのメッセージにトリガーされるイベントまたはデータベースにより送信される警告

StateChange

接続の状態が変更されたときにトリガーされるイベント


Failover

このイベントは、Oracleフェイルオーバーが発生するときにトリガーされるイベントです。

宣言

// C#
public event OracleFailoverEventHandler Failover;

イベント・データ

このイベント・ハンドラは、イベントに関する情報を含む次のプロパティを公開するOracleFailoverEventArgsオブジェクトを受信します。

  • FailoverType

    フェイルオーバーのタイプを示します。

  • FailoverEvent

    フェイルオーバーの状態を示します。

備考

Failoverイベントは、Oracleインスタンスへの接続が予期せずに切断されると発生します。クライアントはこのイベントをリスニングするためにOracleFailoverEventHandlerデリゲートを作成する必要があります。

HAEvent

このイベントは、HAイベントが発生したときにトリガーされます。

宣言

// C#
public static event OracleHAEventHandler HAEvent;

イベント・データ

このイベント・ハンドラは、イベントに関する情報を含む次のプロパティを公開するOracleHAEventArgsオブジェクトを受信します。

  • Source

    イベントのソースを示します。

  • Status

    イベントのステータスを示します。

  • DatabaseName

    このイベントの影響を受けるデータベース名を示します。

  • DatabaseDomainName

    このイベントの影響を受けるデータベース・ドメイン名を示します。

  • HostName

    このイベントの影響を受けるホスト名を示します。

  • InstanceName

    このイベントの影響を受けるインスタンス名を示します。

  • ServiceName

    このイベントの影響を受けるサービス名を示します。

  • Time

    イベントの時間を示します。

備考

HAEventは静的です。つまり、アプリケーション・ドメイン内で発生したすべてのHAイベントがこのイベントをトリガーできます。HAイベント通知を受信するためには、アプリケーションにおいて、アプリケーション・ドメイン内で接続を確立するOracleConnectionオブジェクトに"ha events=true"が指定されている必要があります。指定されていない場合、アプリケーションはHAイベントを受信しません。

InfoMessage

このイベントは、すべてのメッセージにトリガーされるかまたはデータベースにより警告が送信されます。

宣言

// C#
public event OracleInfoMessageEventHandler InfoMessage;

イベント・データ

このイベント・ハンドラは、イベントに関する情報を含む次のプロパティを公開するOracleInfoMessageEventArgsオブジェクトを受信します。

  • Errors

    データ・ソースにより生成されたエラーの収集

  • Message

    データ・ソースにより生成されたエラー・テキスト

  • Source

    エラーを生成するオブジェクトの名前

備考

データベースから警告およびメッセージに応答するには、クライアントはこのイベントをリスニングするためにOracleInfoMessageEventHandlerデリゲートを作成する必要があります。

StateChange

このイベントは、接続の状態が変更されたときにトリガーされます。

宣言

// C#
public override event StateChangeEventHandler StateChange;

イベント・データ

このイベント・ハンドラは、イベントに関する情報を含む次のプロパティを公開するStateChangeEventArgsオブジェクトを受信します。

  • CurrentState

    接続の新しい状態

  • OriginalState

    接続の元の状態

備考

StateChangeイベントは接続が状態を変更した後に発生し、明示的にOpenCloseまたはDisposeがコールされます。


関連項目: