Shutdown(OracleDBShutdownMode, bool)
このメソッドは、指定したモードでデータベース・インスタンスを停止します。
宣言
//C# public void Shutdown(OracleDBShutdownMode shutdownMode, bool bCloseDismountAndFinalize);
パラメータ
-
shutdownModeOracleDBShutdownModeの列挙値。 -
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.Final列挙値を使用しないでください。データベースがすでにクローズおよびディスマウントされている場合にのみOracleDBShutdownMode.Finalモードを使用してください。それ以外の場合、メソッドは無期限に待機する可能性があります。 -
指定した
shutdownModeがOracleDBShutdownMode.Finalである場合、データベースがクローズおよびディスマウントされている必要があるため、bCloseDismountAndFinalize入力パラメータの値は無視されます。
指定した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);
}
}
}
}