| Oracle® Data Provider for .NET開発者ガイド ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows E72575-01 | 
 | 
|  前 |  次 | 
OracleDatabaseオブジェクトは、Oracle Databaseインスタンスを表します。
クラスの継承
System.Object
  Oracle.DataAccess.Client.OracleDatabase
宣言
// C# public sealed class OracleDatabase : IDisposable
要件
| プロバイダ | ODP.NET管理対象外ドライバ | 
| アセンブリ | Oracle.DataAccess.dll | 
| ネームスペース | Oracle.DataAccess.Client | 
| .NET Framework | 3.5, 4.0, 4.5, 4.6 | 
スレッド安全性
パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。
例
// 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();
      }
    }
  }
}
次の表に、OracleDatabaseメンバーを示します。
OracleDatabaseコンストラクタ
OracleDatabaseコンストラクタを、表6-50にリストします。
OracleDatabaseプロパティ
OracleDatabaseプロパティを、表6-51にリストします。
OracleDatabaseパブリック・メソッド
OracleDatabaseパブリック・メソッドを、表6-52にリストします。
OracleDatabaseコンストラクタは、指定された接続文字列を使用してOracleDatabaseクラスの新規インスタンスをインスタンス化します。
宣言
// C#
public OracleDatabase(String connetionString);
パラメータ
connectionString
接続情報は、Oracle Databaseインスタンスへの接続に使用されます。
備考
connectionStringの形式は、OracleConnectionオブジェクトで使用される形式と同じです。ただし、OracleDatabaseコンストラクタでは、user id、password、data sourceおよびdba privilege接続文字列属性のみが受け入れられます。その他の属性値は無視されます。指定されたconnectionStringには、SYSDBAまたはSYSOPERのいずれかに設定されたdba privilege接続文字列属性が含まれている必要があります。
OracleDatabaseオブジェクトによって作成時に接続が作成され、存続期間中保持されます。OracleDatabaseオブジェクトが処理されると、この接続は破棄されます。この接続は、別のOracleDatabaseオブジェクトでの使用を目的としてプールされることはありません。
OracleDatabaseプロパティを、表6-53にリストします。
OracleDatabaseパブリック・メソッドを、表6-54にリストします。
表6-54 OracleDatabaseパブリック・メソッド
| パブリック・メソッド | 説明 | 
|---|---|
|  | オブジェクトにより割り当てられたリソースまたはメモリーを解除します。 | 
|  | 指定された | 
|  | データベースを停止します(オーバーロード)。 | 
|  | データベースを起動します(オーバーロード)。 | 
このメソッドでは、指定されたSELECT以外の文をデータベースに対して実行します。
宣言
// C#
public void ExecuteNonQuery(string sql);
例外
OracleException - コマンドの実行に失敗しました。
備考
このメソッドは、データベースのOPENやMOUNTを行うALTER DATABASE文などのDDL文を実行するためのものです。このメソッドを使用してSQL SELECT文を実行しないでください。このメソッドは、パラメータ・バインドをサポートしません。
Shutdownメソッドは、データベース・インスタンスを停止します。
オーバーロード・リスト
このメソッドはデータベースを停止します。
Shutdown(OracleDBShutdownMode, bool)
このメソッドは、指定したモードでデータベースを停止します。
このメソッドはデータベースを停止します。
宣言
// C# public void Shutdown();
例外
OracleException - データベースの停止要求に失敗しました。
備考
このメソッドは、OracleDBShutdownMode.Defaultモードでデータベース・インスタンスを停止します。新規接続は拒否され、メソッドは既存の接続が終了するまで待ちます。
| 注意:停止は OracleDBShutdownMode.Defaultモードで行われるため、OracleDatabaseオブジェクトで作成された接続以外にオープンな接続がある場合、停止要求は保留中のままになる可能性があります。 | 
接続がクローズしたら、メソッドはOracleDBShutdownMode.Finalモードでデータベースをクローズおよびディスマウントし、インスタンスを停止します。
データベースがすでに適切にクローズ、ディスマウントまたは停止されている場合、このメソッドは例外をスローしません。その他のエラーが発生した場合、例外がスローされます。
Oracle Real Application Clusters(Oracle RAC)データベースに対してこのメソッドが呼び出されると、OracleDatabaseオブジェクトが接続されているデータベース・インスタンスのみが停止します。
このメソッドは、指定したモードでデータベース・インスタンスを停止します。
宣言
//C# public void Shutdown(OracleDBShutdownMode shutdownMode, bool bCloseDismountAndFinalize);
パラメータ
shutdownMode
OracleDBShutdownModeの列挙値。
bCloseDismountAndFinalize
データベースをクローズ、ディスマウントおよびファイナライズするのかどうかを示すboolean。
例外
OracleException - データベースの停止要求に失敗しました。
備考
このメソッドは、指定したモードでデータベース・インスタンスを停止します。bCloseDismountAndFinalizeパラメータがtrueである場合、メソッドはOracleDBShutdownMode.Finalモードでデータベースをクローズおよびディスマウントし、インスタンスを停止します。
bCloseDismountAndFinalizeパラメータがtrueで、データベースがすでに適切にクローズ、ディスマウントまたは停止されている場合、このメソッドは例外をスローしません。その他のエラーが発生した場合、例外がスローされます。
bCloseDismountAndFinalizeパラメータがfalseである場合、アプリケーションで明示的にデータベースをクローズおよびディスマウントする必要があります。これを行うことで、OracleDBShutdownMode.Finalモードでメソッドを再度呼び出して適切にデータベースを停止できるようになります。たとえば、dbがOracleDatabaseクラスのインスタンスである場合、アプリケーションでは次が呼び出されます。
db.Shutdown(OracleDBShutdownMode.Default, false);
db.ExecuteNonQuery("ALTER DATABASE CLOSE NORMAL");
db.ExecuteNonQuery("ALTER DATABASE DISMOUNT");
db.Shutdown(OracleDBShutdownMode.Final);
| 注意: 
 | 
指定したshutdownModeがOracleDBShutdownMode.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(OracleDBStartupMode, string, bool)
このメソッドは、クライアント側パラメータ・ファイルを使用してデータベース・インスタンスを起動します。
このメソッドはデータベースを起動します。
宣言
// C# public void Startup();
例外
OracleException - データベースの起動要求に失敗しました。
備考
このメソッドは、サーバー側パラメータ・ファイル(spfile)を使用して、OracleDbStartupMode.Normalモードでデータベース・インスタンスを起動します。データベースが正常に起動したら、このメソッドはALTER DATABASE MOUNTおよびALTER DATABASE OPEN文も実行します。
データベースがすでに適切にマウント、オープンまたは起動されている場合、このメソッドは例外をスローしません。その他のエラーが発生した場合、例外がスローされます。
このメソッドは、指定した起動モードでデータベースを起動します。
宣言
// 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文も実行します。
bMountAndOpenがtrueになっていて、データベースがすでに適切にマウント、オープンまたは起動されている場合、このメソッドは例外をスローしません。その他のエラーが発生した場合、例外がスローされます。
bMountAndOpenがfalseである場合、アプリケーションによってデータベースを明示的にマウントしてオープンする必要があります。たとえば、dbがOracleDatabaseクラスのインスタンスである場合、アプリケーションでは次が呼び出されます。
db.Startup(OracleDBStartupMode.NoRestriction, null, false);
db.ExecuteNonQuery("ALTER DATABASE MOUNT");
db.ExecuteNonQuery("ALTER DATABASE OPEN");