プライマリ・コンテンツに移動

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`モードでメソッドを再度呼び出して適切にデータベースを停止できるようになります。たとえば、`db`が`OracleDatabase`クラスのインスタンスである場合、アプリケーションでは次が呼び出されます。

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`モードを使用してください。それ以外の場合、メソッドは無期限に待機する可能性があります。

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

関連項目:

- Oracle.DataAccess.ClientおよびOracle.ManagedDataAccess.Clientのネームスペース

- OracleDatabaseクラス

- OracleDatabaseメンバー

- OracleDBShutdownModeの列挙