Shutdown(OracleDBShutdownMode, bool)
This method shuts down the database instance using the specified mode.
Declaration
//C# public void Shutdown(OracleDBShutdownMode shutdownMode, bool bCloseDismountAndFinalize);
Parameters
-
shutdownModeA
OracleDBShutdownModeenumeration value. -
bCloseDismountAndFinalizeA
booleansignifying whether the database is to be closed, dismounted, and finalized.
Exceptions
OracleException - The database shutdown request has failed.
Remarks
This method shuts down a database instance in the specified mode. If the bCloseDismountAndFinalize parameter is true, then the method also closes the database, dismounts the database, and shuts down the instance using the OracleDBShutdownMode.Final mode.
If the bCloseDismountAndFinalize parameter is true, then this method does not throw exceptions for cases where the database has been already closed, dismounted, or shutdown appropriately. If other errors are encountered, then an exception is thrown.
If the bCloseDismountAndFinalize parameter is false, then the application needs to explicitly close and dismount the database. The application can then reinvoke the method using the OracleDBShutdownMode.Final mode to properly shut down the database. For example, if db is an instance of the OracleDatabase class, then the application invokes the following:
-
db.Shutdown(OracleDBShutdownMode.Default, false); -
db.ExecuteNonQuery("ALTER DATABASE CLOSE NORMAL"); -
db.ExecuteNonQuery("ALTER DATABASE DISMOUNT"); -
db.Shutdown(OracleDBShutdownMode.Final);
Note:
-
The
OracleDBShutdownMode.Finalenumeration value should not be used as theshutdownModefor the initial method invocation. TheOracleDBShutdownMode.Finalmode should be used only if the database is already closed and dismounted. Otherwise, the method might wait indefinitely. -
If the specified
shutdownModeisOracleDBShutdownMode.Final, then the value of thebCloseDismountAndFinalizeinput parameter is ignored, as the database should have been closed and dismounted already.
If the specified shutdownMode is OracleDBShutdownMode.Abort, then the value of the bCloseDismountAndFinalize input parameter is ignored, as the Abort mode requires the database to be closed, dismounted, and finalized.
Invoking this method against an Oracle Real Application Clusters (Oracle RAC) database shuts down only that database instance to which the OracleDatabase object is connected.
Example
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);
}
}
}
}