2 Oracleソフトウェアの停止と起動

この章では、Oracle Databaseプロセスを識別する方法と、プロセスを停止および再起動する基本的な方法について説明します。また、Oracle Databaseの起動と停止を自動化する方法についても説明します。内容は次のとおりです。

注意:

Oracle Restartを使用する場合、コマンドライン・インタフェースであるサービス制御ユーティリティ(SRVCTL)を使用して、Oracleプロセス(データベース・インスタンス、リスナー、Oracle ASMインスタンス)を管理できます。SRVCTLを使用すると、Oracle Restart構成の管理、Oracle Restartで管理されるプロセスのステータスの確認、およびOracle Databaseなどのプロセスの開始や停止が可能です。SRVCTLはOracle Clusterwareと、Oracle Restartを使用した1インスタンスのOracle Databaseをサポートするように拡張されています。

2.1 Oracleプロセスの停止と起動

この項では、Oracleプロセスを停止および起動する方法について説明します。次の項目が含まれます。

2.1.1 Oracle DatabaseインスタンスおよびOracle Automatic Storage Managementインスタンスの停止と起動

この項では、Oracle DatabaseインスタンスおよびOracle Automatic Storage Managementインスタンスを停止および起動する方法について説明します。内容は次のとおりです。

2.1.1.1 Oracle DatabaseインスタンスまたはOracle Automatic Storage Managementインスタンスの停止

注意:

Oracle Automatic Storage Managementインスタンスを使用して記憶域を管理しているOracle Databaseインスタンスをすべて停止するまで、Oracle Automatic Storage Managementインスタンスは停止しないでください。

Oracle DatabaseインスタンスまたはOracle Automatic Storage Managementインスタンスを停止するには、次の手順を実行します。

  1. 次のコマンドを実行して、停止する必要があるインスタンスのSIDおよびOracleホーム・ディレクトリを識別します。

    Oracle Solarisの場合:

    $ cat /var/opt/oracle/oratab
    

    その他のオペレーティング・システムの場合

    $ cat /etc/oratab
    

    oratabファイルには、次のような行が含まれています。これによって、システム上の各データベース・インスタンスまたはOracle Automatic Storage ManagementインスタンスのSIDおよび対応するOracleホーム・ディレクトリを識別します。

    $ORACLE_SID:$ORACLE_HOME:<N/Y>
    

    注意:

    Oracle Automatic Storage ManagementインスタンスのSIDには、1文字目にプラス記号(+)を使用することをお薦めします。

  2. デフォルト・シェルに応じてoraenvまたはcoraenvスクリプトを実行し、停止する必要があるインスタンスの環境変数を設定します。
    • Bourne、BashまたはKornシェル:

      $ . /usr/local/bin/oraenv
      
    • Cシェルの場合:

      % source /usr/local/bin/coraenv
      

    プロンプトが表示されたら、インスタンスのSIDを指定します。

  3. 次のコマンドを実行し、インスタンスを停止します。
    $ sqlplus
    SQL> CONNECT SYS AS SYSDBA
    Enter password: sys_password
    SQL> SHUTDOWN NORMAL
    

    インスタンスの停止後、SQL*Plusを終了できます。

2.1.1.2 Oracle DatabaseインスタンスまたはOracle Automatic Storage Managementインスタンスの再起動

注意:

データベース・インスタンスで記憶域管理にOracle Automatic Storage Managementを使用している場合は、データベース・インスタンスを起動する前に、Oracle Automatic Storage Managementインスタンスを起動する必要があります。

Oracle DatabaseインスタンスまたはOracle Automatic Storage Managementインスタンスを再起動するには、次の手順を実行します。

  1. 必要に応じて、ステップ12を繰り返し、環境変数ORACLE_SIDおよびORACLE_HOMEを設定して、起動するインスタンスのSIDおよびOracleホーム・ディレクトリを識別します。
  2. 次のコマンドを実行し、インスタンスを起動します。
    $ sqlplus
    SQL> CONNECT SYS AS SYSDBA
    Enter password: sys_password
    SQL> STARTUP
    

    インスタンスの起動後、SQL*Plusを終了できます。

2.1.2 Oracle Restartの停止と起動

Oracle Restartを停止または起動するには、次のコマンドを実行します。

  • 起動: このオプションを使用して、Oracle Restartを起動します。

    構文とオプション:

    crsctl start has
    
  • 停止: このオプションを使用して、Oracle Restartを停止します。

    構文とオプション:

    crsctl stop has
    

    関連項目:

    srvctlコマンドの詳細は、『Oracle Database管理者ガイド』を参照してください。

2.2 データベースの起動と停止の自動化の概要

Oracle Databaseは、システムの起動時に自動的に起動し、停止時に自動的に停止するようにシステムを構成することをお薦めします。データベースの起動と停止を自動化することによって、データベースの不正な停止を防ぐことができます。

データベースの起動と停止を自動化するには、$ORACLE_HOME/binディレクトリにあるdbstartおよびdbshutスクリプトを使用します。これらのスクリプトは、oratabファイル内の同じエントリを参照します。したがって、同じデータベース・セットに適用されます。たとえば、dbstartスクリプトによって、sid1sid2およびsid3を自動的に起動し、dbshutスクリプトによって、sid1のみを停止することはできません。ただし、dbstartスクリプトがまったく使用されていない場合は、dbshutスクリプトを使用してデータベース・セットの停止を指定することはできます。これを実行するにはシステムの停止ファイルにdbshutエントリを含めますが、システムの起動ファイルにdbstartエントリは含めないでください。

関連項目:

システムの起動と停止の手順については、オペレーション・システムのドキュメントにあるinitコマンドを参照してください。

2.2.1 データベースの起動と停止の自動化

dbstartおよびdbshutスクリプトを使用してデータベースの起動と停止を自動化するには、次の手順を実行します。

  1. rootユーザーでログインします。
  2. プラットフォームのoratabファイルを編集します。

    ファイルを開くには、次のいずれかのコマンドを使用します。

    • Oracle Solarisの場合:

      # vi /var/opt/oracle/oratab
      
    • IBM AIX on POWER Systems (64-Bit)およびLinuxの場合:

      # vi /etc/oratab
      

    oratabファイル内のデータベース・エントリは、次の形式で表示されます。

    $ORACLE_SID:$ORACLE_HOME:<N|Y>
    

    この例の値YおよびNは、スクリプトでデータベースの起動または停止を実行するかどうかを指定します。最初に、停止と起動を自動化するデータベースごとに、データベースのインスタンス識別子(SID)を判別します。これは、最初のフィールドのSIDで識別されます。次に、最後のフィールドをそれぞれYに変更します。

    dbstartを設定すると、自動ストレージ管理インストールを使用している単一インスタンスのデータベースの起動を自動化できます。自動ストレージ管理はOracle Clusterwareによって自動的に起動されます。これは、自動ストレージ管理クラスタのデフォルトの動作です。これを実行する場合は、データベースおよび自動ストレージ管理インストールのoratabエントリを変更して、3番目のフィールドに値WおよびNをそれぞれ設定する必要があります。これらの値は、自動ストレージ管理インスタンスの起動後にのみ、dbstartがデータベースを自動的に起動するように指定します。

    注意:

    新規データベース・インスタンスをシステムに追加する場合、これらのインスタンスを自動的に起動するには、oratabファイルでインスタンスのエントリを編集する必要があります。

  3. オペレーティング・システムに応じ、ディレクトリを次のいずれかに変更します。
    プラットフォーム 初期化ファイルのディレクトリ

    LinuxおよびOracle Solaris

    /etc/init.d

    IBM AIX on POWER Systems (64ビット)

    /etc

  4. dboraというファイルを作成し、次の行をこのファイルにコピーします。

    注意:

    環境変数ORA_HOMEの値を変更し、インストールのOracleホーム・ディレクトリに指定します。また、環境変数ORA_OWNERの値を、Oracleホーム・ディレクトリにインストールされているデータベースの所有者のユーザー名(通常はoracle)に変更します。

    #! /bin/sh
    # description: Oracle auto start-stop script.
    #
    # Set ORA_HOME to be equivalent to the $ORACLE_HOME
    # from which you wish to execute dbstart and dbshut;
    #
    # Set ORA_OWNER to the user id of the owner of the
    # Oracle database in ORACLE_HOME.
    
    ORA_HOME=<Type your ORACLE_HOME in full path here>
    ORA_OWNER=<Type your Oracle account name here>
    
    case "$1" in
    'start') 
        # Start the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        # Remove "&" if you don't want startup as a background process.
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" &
        touch /var/lock/subsys/dbora
        ;;
    
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME" &
        rm -f /var/lock/subsys/dbora
        ;;
    esac

    注意:

    このスクリプトで停止できるのは、パスワードが設定されていないOracle Net Listenerのみです。また、リスナー名がデフォルトのLISTENERではない場合、stopおよびstartコマンドでリスナー名を指定する必要があります。

    $ORACLE_HOME/bin/lsnrctl {start|stop} listener_name
  5. dboraファイルのグループをOSDBAグループ(通常はdba)に変更し、その権限を750に設定します。
    # chgrp dba dbora
    # chmod 750 dbora
    
  6. 次のように、dboraスクリプトへのシンボリック・リンクを、適切な起動レベルのスクリプト・ディレクトリに作成します。
    プラットフォーム シンボリック・リンク・コマンド

    Oracle Solaris

    # ln -s /etc/init.d/dbora /etc/rc0.d/K01dbora
    # ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora

    Linux

    # ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora
    # ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora
    # ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora

    IBM AIX on POWER Systems (64ビット)

    # ln -s /etc/dbora /etc/rc.d/rc2.d/S99dbora
    # ln -s /etc/dbora /etc/rc.d/rc0.d/K01dbora