プライマリ・コンテンツに移動
Oracle® Data Provider for .NET開発者ガイド
ODAC 12.2c リリース1 (12.2.0.1) for Microsoft Windows
E88311-03
目次へ移動
目次
索引へ移動
索引

前
次

Shutdown(OracleDBShutdownMode, bool)

このメソッドは、指定したモードでデータベース・インスタンスを停止します。

宣言

//C#
public void Shutdown(OracleDBShutdownMode shutdownMode, bool bCloseDismountAndFinalize);

パラメータ

  • shutdownMode

    OracleDBShutdownModeの列挙値。

  • bCloseDismountAndFinalize

    データベースをクローズ、ディスマウントおよびファイナライズするのかどうかを示すboolean

例外

OracleException - データベースの停止要求に失敗しました。

備考

このメソッドは、指定したモードでデータベース・インスタンスを停止します。bCloseDismountAndFinalizeパラメータがtrueである場合、メソッドはOracleDBShutdownMode.Finalモードでデータベースをクローズおよびディスマウントし、インスタンスを停止します。

bCloseDismountAndFinalizeパラメータがtrueで、データベースがすでに適切にクローズ、ディスマウントまたは停止されている場合、このメソッドは例外をスローしません。その他のエラーが発生した場合、例外がスローされます。

bCloseDismountAndFinalizeパラメータがfalseである場合、アプリケーションで明示的にデータベースをクローズおよびディスマウントする必要があります。これを行うことで、OracleDBShutdownMode.Finalモードでメソッドを再度呼び出して適切にデータベースを停止できるようになります。たとえば、dbOracleDatabaseクラスのインスタンスである場合、アプリケーションでは次が呼び出されます。

  1. db.Shutdown(OracleDBShutdownMode.Default, false);

  2. db.ExecuteNonQuery("ALTER DATABASE CLOSE NORMAL");

  3. db.ExecuteNonQuery("ALTER DATABASE DISMOUNT");

  4. db.Shutdown(OracleDBShutdownMode.Final);

注意:

  • 最初にメソッドを呼び出すときに、shutdownModeとしてOracleDBShutdownMode.Final列挙値を使用しないでください。データベースがすでにクローズおよびディスマウントされている場合にのみOracleDBShutdownMode.Finalモードを使用してください。それ以外の場合、メソッドは無期限に待機する可能性があります。

  • 指定したshutdownModeOracleDBShutdownMode.Finalである場合、データベースがクローズおよびディスマウントされている必要があるため、bCloseDismountAndFinalize入力パラメータの値は無視されます。

指定したshutdownModeOracleDBShutdownMode.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);
      }
    }
  }
}