ヘッダーをスキップ
Oracle® Data Provider for .NET開発者ガイド
11g リリース2 (11.2.0.4)
B66456-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleDatabaseクラス

OracleDatabaseオブジェクトは、Oracle Databaseインスタンスを表します。

クラスの継承

System.Object

  Oracle.DataAccess.Client.OracleDatabase

宣言

// C#
public sealed class OracleDatabase : IDisposable

スレッド安全性

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

// C#

using System;
using Oracle.DataAccess.Client;
 
namespace Startup
{
  class Test
  {
    static void Main()
    {
      OracleConnection con = null;
      OracleDatabase db = null;
      string constring = "dba privilege=sysdba;user id=scott;password=tiger;data source=oracle";
 
      try
      {
        // Open a connection to see if the DB is up
        con = new OracleConnection(constring);
        con.Open();
 
        Console.WriteLine("The Oracle database is already up.");
      }
      catch (OracleException ex)
      {
        // If the database is down, start up the DB
        if (ex.Number == 1034)
        {
          Console.WriteLine("The Oracle database is down.");
 
          // Create an instance of an OracleDatbase object
          db = new OracleDatabase(constring);
 
          // Start up the database
          db.Startup();
 
          Console.WriteLine("The Oracle database is now up.");
 
          // Executing Startup() is the same as the following:
          // db.Startup(OracleDBStartupMode.NoRestriction, null, true);
          // which is also the same as:
          // db.Startup(OracleDBStartupMode.NoRestriction, null, false);
          // db.ExecuteNonQuery("ALTER DATABASE MOUNT");
          // db.ExecuteNonQuery("ALTER DATABASE OPEN");
 
          // Dispose the OracleDatabase object
          db.Dispose();
        }
        else
        {
          Console.WriteLine("Error: " + ex.Message);
        }
      }
      finally
      {
        // Dispose the OracleConnetion object
        con.Dispose();
      }
    }
  }
}

要件

ネームスペース: Oracle.DataAccess.Client

アセンブリ: Oracle.DataAccess.dll

ODP.NETのバージョン: ODP.NET for .NET Framework 2.0またはODP.NET for .NET Framework 4


OracleDatabaseメンバー

次の表に、OracleDatabaseメンバーを示します。

OracleDatabaseコンストラクタ

OracleDatabaseコンストラクタを、表5-38にリストします。

表5-38 OracleDatabaseコンストラクタ

コンストラクタ 説明

OracleDatabaseコンストラクタ

指定された接続文字列を使用して、OracleDatabaseクラスの新規インスタンスをインスタンス化します。


OracleDatabaseプロパティ

OracleDatabaseプロパティを、表5-39にリストします。

表5-39 OracleDatabaseプロパティ

プロパティ 説明

ServerVersion

接続を作成するOracle Databaseインスタンスのデータベース・バージョン番号を指定します。


OracleDatabaseパブリック・メソッド

OracleDatabaseパブリック・メソッドを、表5-40にリストします。

表5-40 OracleDatabaseパブリック・メソッド

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

ExecuteNonQuery


指定されたSELECT以外の文をデータベースに対して実行します。

Shutdown


データベースを停止します(オーバーロード)。

Startup


データベースを起動します(オーバーロード)。



OracleDatabaseコンストラクタ

OracleDatabaseコンストラクタは、指定された接続文字列を使用してOracleDatabaseクラスの新規インスタンスをインスタンス化します。

宣言

// C#
public OracleDatabase(String connetionString);

パラメータ

  • connectionString

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

備考

connectionStringの形式は、OracleConnectionオブジェクトで使用される形式と同じです。ただし、OracleDatabaseコンストラクタでは、user idpassworddata sourceおよびdba privilege接続文字列属性のみが受け入れられます。その他の属性値は無視されます。指定されたconnectionStringには、SYSDBAまたはSYSOPERのいずれかに設定されたdba privilege接続文字列属性が含まれている必要があります。

OracleDatabaseオブジェクトによって作成時に接続が作成され、存続期間中保持されます。OracleDatabaseオブジェクトが処理されると、この接続は破棄されます。この接続は、別のOracleDatabaseオブジェクトでの使用を目的としてプールされることはありません。


OracleDatabaseプロパティ

OracleDatabaseプロパティを、表5-41にリストします。

表5-41 OracleDatabaseプロパティ

プロパティ 説明

ServerVersion

接続を作成するOracle Databaseインスタンスのデータベース・バージョン番号を指定します。


ServerVersion

このプロパティは、接続を作成するOracle Databaseインスタンスのデータベース・バージョン番号を戻します。

宣言

Public string ServerVersion {get;}

プロパティ値

Oracle Databaseインスタンスのデータベース・バージョンを戻します。


OracleDatabaseパブリック・メソッド

OracleDatabaseパブリック・メソッドを、表5-42にリストします。

表5-42 OracleDatabaseパブリック・メソッド

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

ExecuteNonQuery


指定されたSELECT以外の文をデータベースに対して実行します。

Shutdown


データベースを停止します(オーバーロード)。

Startup


データベースを起動します(オーバーロード)。


ExecuteNonQuery

このメソッドでは、指定されたSELECT以外の文をデータベースに対して実行します。

宣言

// C#
public void ExecuteNonQuery(string sql);

例外

OracleException - コマンドの実行に失敗しました。

備考

このメソッドは、データベースのOPENMOUNTを行うALTER DATABASE文などのDDL文を実行するためのものです。このメソッドを使用してSQL SELECT文を実行しないでください。このメソッドは、パラメータ・バインドをサポートしません。

Shutdown

Shutdownメソッドは、データベース・インスタンスを停止します。

オーバーロード・リスト

Shutdown()

このメソッドはデータベースを停止します。

宣言

// C#
public void Shutdown();

例外

OracleException - データベースの停止要求に失敗しました。

備考

このメソッドは、OracleDBShutdownMode.Defaultモードでデータベース・インスタンスを停止します。新規接続は拒否され、メソッドは既存の接続が終了するまで待ちます。


注意:

停止はOracleDBShutdownMode.Defaultモードで行われるため、OracleDatabaseオブジェクトで作成された接続以外にオープンな接続がある場合、停止要求は保留中のままになる可能性があります。

接続がクローズしたら、メソッドはOracleDBShutdownMode.Finalモードでデータベースをクローズおよびディスマウントし、インスタンスを停止します。

データベースがすでに適切にクローズ、ディスマウントまたは停止されている場合、このメソッドは例外をスローしません。その他のエラーが発生した場合、例外がスローされます。

Oracle Real Application Clusters(Oracle RAC)データベースに対してこのメソッドが呼び出されると、OracleDatabaseオブジェクトが接続されているデータベース・インスタンスのみが停止します。

Shutdown(OracleDBShutdownMode, bool)

このメソッドは、指定したモードでデータベース・インスタンスを停止します。

宣言

//C#
public void Shutdown(OracleDBShutdownMode shutdownMode, bool bCloseDismountAndFinalize);

パラメータ

  • shutdownMode

    OracleDBShutdownModeの列挙値。

  • bCloseDismountAndFinalize

    データベースをクローズ、ディスマウントおよびファイナライズするのかどうかを示すboolean

例外

OracleException - データベースの停止要求に失敗しました。

備考

このメソッドは、指定したモードでデータベース・インスタンスを停止します。bCloseDismountAndFinalizeパラメータがtrueである場合、メソッドはOracleDBShutdownMode.Finalモードでデータベースをクローズおよびディスマウントし、インスタンスを停止します。

bCloseDismountAndFinalizeパラメータがtrueで、データベースがすでに適切にクローズ、ディスマウントまたは停止されている場合、このメソッドは例外をスローしません。その他のエラーが発生した場合、例外がスローされます。

bCloseDismountAndFinalizeパラメータがfalseである場合、アプリケーションで明示的にデータベースをクローズおよびディスマウントする必要があります。これを行うことで、OracleDBShutdownMode.Finalモードでメソッドを再度呼び出して適切にデータベースを停止できるようになります。たとえば、dbOracleDatabaseクラスのインスタンスである場合、アプリケーションでは次が呼び出されます。

  1. db.Shutdown(OracleDBShutdownMode.Default, false);

  2. db.ExecuteNonQuery("ALTER DATABASE CLOSE NORMAL");

  3. db.ExecuteNonQuery("ALTER DATABASE DISMOUNT");

  4. db.Shutdown(OracleDBShutdownMode.Final);


注意:

  • 最初にメソッドを呼び出すときに、shutdownModeとしてOracleDBShutdownMode.Final列挙値を使用しないでください。データベースがすでにクローズおよびディスマウントされている場合にのみOracleDBShutdownMode.Finalモードを使用してください。それ以外の場合、メソッドは無期限に待機する可能性があります。

  • 指定したshutdownModeOracleDBShutdownMode.Finalである場合、データベースがクローズおよびディスマウントされている必要があるため、bCloseDismountAndFinalize入力パラメータの値は無視されます。


指定したshutdownModeOracleDBShutdownMode.Abortである場合、Abortモードではデータベースがクローズ、ディスマウントおよびファイナライズされている必要があるため、bCloseDismountAndFinalize入力パラメータの値は無視されます。

Oracle Real Application Clusters(Oracle RAC)データベースに対してこのメソッドが呼び出されると、OracleDatabaseオブジェクトが接続されているデータベース・インスタンスのみが停止します。

using System;
using Oracle.DataAccess.Client;
 
namespace Shutdown
{
  class Test
  {
    static void Main()
    {
      OracleConnection con = null;
      OracleDatabase db = null;
      string constring = "user id=scott;password=tiger;data source=oracle;" +
        "pooling=false;dba privilege=sysdba";
 
      try
      {
        // Open a connection to see if the DB is up;
        con = new OracleConnection(constring);
        con.Open();
 
        Console.WriteLine("The Oracle database is currently up.");
 
        // If open succeeds, we know that the database is up.
        // We have to dispose the connection so that we can
        //   shutdown the database.
        con.Dispose();
 
        // Shutdown the database
        db = new OracleDatabase(constring);
        db.Shutdown();
 
        Console.WriteLine("The Oracle database is shut down.");
 
        // Executing Shutdown() above is the same as the following:
        // db.Shutdown(OracleDBShutdownMode.Default, false);
        // db.ExecuteNonQuery("ALTER DATABASE CLOSE NORMAL");
        // db.ExecuteNonQuery("ALTER DATABASE DISMOUNT");
        // db.Shutdown(OracleDBShutdownMode.Final);
 
        // Dispose the OracleDatabase object
        db.Dispose();
      }
      catch (OracleException ex)
      {
        Console.WriteLine("An error has occurred: {0}", ex.Message);
      }
    }
  }
}

Startup

Startupメソッドは、データベース管理者権限を持つユーザーがデータベース・インスタンスを起動できるようにします。

オーバーロード・リスト

  • Startup()

    このメソッドは、サーバー側パラメータ・ファイルを使用してデータベース・インスタンスを起動します。

  • Startup(OracleDBStartupMode, string, bool)

    このメソッドは、クライアント側パラメータ・ファイルを使用してデータベース・インスタンスを起動します。

Startup()

このメソッドはデータベースを起動します。

宣言

// C#
public void Startup();

例外

OracleException - データベースの起動要求に失敗しました。

備考

このメソッドは、サーバー側パラメータ・ファイル(spfile)を使用して、OracleDbStartupMode.Normalモードでデータベース・インスタンスを起動します。データベースが正常に起動したら、このメソッドはALTER DATABASE MOUNTおよびALTER DATABASE OPEN文も実行します。

データベースがすでに適切にマウント、オープンまたは起動されている場合、このメソッドは例外をスローしません。その他のエラーが発生した場合、例外がスローされます。

Startup(OracleDBStartupMode, string, bool)

このメソッドは、指定した起動モードでデータベースを起動します。

宣言

// C#
public void Startup(OracleDbStartupMode startupMode, string pfile, bool bMountAndOpen);

パラメータ

  • startupMode

    OracleDBStartupModeの列挙値。

  • pfile

    クライアント側パラメータ・ファイルの場所と名前。例: c:\\\admin\\init.ora

    パラメータ・ファイルの名前は、オペレーティング・システムによって異なります。たとえば、この名前に小文字のみが使用されたり、大/小文字の両方が使用されたりします。また、論理名や名前init.oraのバリエーションが含まれる場合もあります。通常、デフォルトの場所はORACLE_HOME/dbsまたはORACLE_HOME\databaseです。

  • bMountAndOpen

    データベースをマウントしてオープンするかどうかを示すtrue/falseの値。

例外

OracleException - データベースの起動要求に失敗しました。

備考

このメソッドは、指定したクライアント側パラメータ・ファイルを使用して、指定したモードでデータベース・インスタンスを起動します。データベースが正常に起動し、bMountAndOpen入力パラメータがtrueである場合、このメソッドはALTER DATABASE MOUNTおよびALTER DATABASE OPEN文も実行します。

bMountAndOpentrueになっていて、データベースがすでに適切にマウント、オープンまたは起動されている場合、このメソッドは例外をスローしません。その他のエラーが発生した場合、例外がスローされます。

bMountAndOpenfalseである場合、アプリケーションによってデータベースを明示的にマウントしてオープンする必要があります。たとえば、dbOracleDatabaseクラスのインスタンスである場合、アプリケーションでは次が呼び出されます。

  1. db.Startup(OracleDBStartupMode.NoRestriction, null, false);

  2. db.ExecuteNonQuery("ALTER DATABASE MOUNT");

  3. db.ExecuteNonQuery("ALTER DATABASE OPEN");