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
Microsoft .NET Framework Version: 2.0以降
次の表に、OracleDatabase
メンバーを示します。
OracleDatabaseコンストラクタ
OracleDatabase
コンストラクタを、表5-38にリストします。
OracleDatabaseプロパティ
OracleDatabase
プロパティを、表5-39にリストします。
OracleDatabaseパブリック・メソッド
OracleDatabase
パブリック・メソッドを、表5-40にリストします。
表5-40 OracleDatabaseパブリック・メソッド
パブリック・メソッド | 説明 |
---|---|
|
指定された |
|
データベースを停止します(オーバーロード)。 |
|
データベースを起動します(オーバーロード)。 |
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
プロパティを、表5-41にリストします。
このプロパティは、接続を作成するOracle Databaseインスタンスのデータベース・バージョン番号を戻します。
宣言
Public string ServerVersion {get;}
プロパティ値
Oracle Databaseインスタンスのデータベース・バージョンを戻します。
OracleDatabase
パブリック・メソッドを、表5-42にリストします。
表5-42 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(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 DTABASE DISMOUNT");
db.Shutdown(OracleDBShutdownMode.Final);
注意:
|
指定したshutdownMode
がOracleDBShutdownMode.Abort
である場合、Abort
モードではデータベースがクローズ、ディスマウントおよびファイナライズされている必要があるため、bCloseDismountAndFinalize
入力パラメータの値は無視されます。
Oracle Real Application Clusters(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");