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 |
スレッド安全性
パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。
例
// 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-48にリストします。
OracleDatabaseプロパティ
OracleDatabaseプロパティを、表6-49にリストします。
OracleDatabaseパブリック・メソッド
OracleDatabaseパブリック・メソッドを、表6-50にリストします。
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-51にリストします。
OracleDatabaseパブリック・メソッドを、表6-52にリストします。
表6-52 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");