ヘッダーをスキップ
Oracle® Database 2日でReal Application Clustersガイド
11gリリース2(11.2)
B56291-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

10 Oracleソフトウェアの管理およびパッチの適用

オラクル社では、オラクル社のソフトウェアについてパッチと呼ばれる製品修正を発行しています。インストール済のOracleソフトウェアにパッチを適用すると、そのソフトウェアのホーム・ディレクトリの実行可能ファイル、ライブラリおよびオブジェクト・ファイルが更新されます。パッチの適用によって、構成ファイルおよびオラクル社提供のSQLスキーマも更新できます。パッチはオラクル社提供のOPatchユーティリティまたはOracle Enterprise Manager Grid Controlを使用して適用されます。

パッチの集まりをパッチ・セットと呼びます。パッチ・セットを適用すると、数多くの様々なファイルおよびユーティリティが変更されます。その結果、Oracle Database 10.2.0.4.0からOracle Database 10.2.0.5.0のように、Oracleソフトウェアのバージョンが変わります。パッチ・セットを適用するには、Oracle Universal Installer(OUI)を使用します。

この章では、OPatchユーティリティを使用して、Oracle Real Application Clusters(Oracle RAC)環境でOracleソフトウェアの管理およびパッチの適用を行う方法について説明します。

この章の内容は次のとおりです。


参照:

  • OPatchの使用方法およびOracle RACへのパッチ適用方法の詳細は、Oracle Universal InstallerおよびOpatchユーザーズ・ガイドfor Windows and UNIXを参照してください。

  • 『Oracle Database 2日でデータベース管理者』


パッチの入手

My Oracle Support(Oracleサポート・サービスWebサイト)から、パッチおよびパッチ・セットを入手します。

https://support.oracle.com

My Oracle Support Webサイトでパッチを検索するには、次の手順を実行します。

  1. My Oracle Supportに自分のアカウントでログインします。

  2. このページの左上で、「パッチと更新版」を選択します。

  3. パッチ番号がわかる場合は、「パッチ名または番号」ドロップダウン・リストの右側のフィールドにこの値を入力することができます。「プラットフォーム」ドロップダウン・リストの横の「5つまで選択」ドロップダウン・リストで、パッチを適用する予定のオペレーティング・システムを選択します。

    システムで利用可能なすべてのパッチを検索したい場合、ページのトップで、「製品またはファミリ(拡張検索)」を選択します。その後、次の情報を指定します。

    • パッチを適用する製品(Oracle Clusterware、RDMBSサーバー、Universal Installerなどの個別製品)を選択します。

    • 選択した製品のソフトウェア・リリースを指定します。

    • ソフトウェアがインストールされているプラットフォームを指定します。

    「検索」をクリックして、使用可能なパッチを検索します。「パッチ検索結果」ページが表示されます。

  4. 「パッチ検索結果」ページで、ダウンロードするパッチの数を選択します。そのパッチの詳細ページが画面に表示されます。

  5. パッチのReadMeファイルを表示するか、または「ダウンロード」をクリックしてローカル・コンピュータにパッチをダウンロードします。クラスタ内のノードでないコンピュータにパッチ・ファイルをダウンロードする場合は、バイナリ・プロトコルを使用してファイルをクラスタ・ノードに転送する必要があります。

    現在のパッチ計画にパッチを追加したり、新しいパッチ計画を作成することもできます。パッチ計画とは、まとめて適用するパッチの集まりです。パッチ計画の使用の詳細は、「計画に追加」ドロップダウン・リストで「なぜ計画を使用するのですか。」を選択します。

OPatchを使用するための準備

Oracle RACデータベース(Oracle ASMインストール)またはOracle Clusterwareインストールにパッチを適用する前に、オペレーティング・システム環境を準備し、ローカルでパッチをステージングする必要があります。

次の項では、OPatchの使用準備で実行する手順について説明します。


参照:

  • 『Oracle Database 2日でデータベース管理者』


環境変数ORACLE_HOMEのチェック

OPatchでOracleホームが存在するかどうかが検証されます。環境変数ORACLE_HOMEが、パッチを適用しようとしている製品のOracleホームに設定されている必要があります。

環境変数の設定の詳細は、各ベンダーのマニュアルを参照してください。

Linuxで変数ORACLE_HOMEの現在の設定をチェックするには、次の手順を実行します。

  1. コマンド・ウィンドウで、oracleユーザーとしてオペレーティング・システムにログインします。

  2. echoコマンドを使用して、環境変数ORACLE_HOMEの現在の設定を表示します。

    echo $ORACLE_HOME
    

ソフトウェアへのパッチ適用前のバックアップの実行

パッチ操作を実行する前に、パッチを適用しているソフトウェア・ディレクトリをバックアップすることをお薦めします。Oracle DatabaseまたはOracle Grid Infrastructureソフトウェアのインストール・ディレクトリがこれに該当します。

ソフトウェアのインストールをバックアップするには、次の手順を実行します。

  1. 次のユーティリティを使用して、指定されたOracleホームにインストールしたソフトウェアをバックアップします。

    1. zipcp -rtarまたはcpioなどのオペレーティング・システム・ユーティリティを使用して、Oracleホーム・ディレクトリ内のソフトウェアをディスクにバックアップします。

    2. Oracle Secure Backupユーティリティを使用して、Oracleホーム・ディレクトリ内のソフトウェアをテープにバックアップします。


参照:


各ノードでのパッチのステージング

My Oracle Supportからパッチをダウンロードしたら、パッチ適用対象のソフトウェアが実行されている各ノードにパッチをコピーする必要があります。


参照:


PATH環境変数の更新

opatchバイナリ・ファイルはOracle_home/OPatchディレクトリにあります。OPatchの実行中にこのパスを指定するか、環境変数PATHを更新して、OPatchディレクトリを含めることができます。

Oracle LinuxシステムでPATH環境変数を更新するには、次の手順を実行します。

  1. コマンド・ウィンドウで、オペレーティング・システムにログインします。

  2. 次のようなシェル・コマンドを使用して、PATH環境変数の値を更新します。ここで、/u01/app/oracle/product/11.2.0/dbhome_1はOracleホーム・ディレクトリの場所です。

    $ export PATH=$PATH:/u01/app/oracle/product/11.2.0/dbhome_1/OPatch
    

    現行ユーザーのシェル・プロファイル・スクリプトを変更して、ログインのたびにこの変数が構成されるようにすることもできます。


参照:


SSHユーザー等価関係の構成

システムにパッチを適用する前に、ユーザー等価関係が有効になっていることを確認します。各ノード上のオペレーティング・システム・ユーザーが同じであるとみなされるときに、ユーザー等価関係が存在します。ユーザー等価関係の構成の詳細は、「オペレーティング・システム・ユーザーおよびグループの構成」を参照してください。

SSHユーザー等価をテストするには、次の手順を実行します。

  1. OPatchを実行するシステムに、oracleユーザーとしてログインします。

  2. 次のコマンドを使用して、ユーザー等価をテストします。

    [oracle@racnode1] $ ssh racnode2 date
    

    日付が戻された場合、ソース・ノードとインストール先ノード間のユーザー等価関係は構成されています。

  3. 次のような出力が表示された場合、SSHユーザー等価関係は有効になっていません。

    Enter passphrase for key '/home/oracle/.ssh/id_rsa': 
    

    パッチ適用操作を続行する前にSSHユーザー等価を有効化します。

SSHユーザー等価を有効化するには、次の手順を実行します。

  1. OPatchを実行するシステムでコマンド・ウィンドウを開き、oracleユーザーとしてログインします。

  2. 次のコマンドを使用して、SSHエージェントを起動し、SSH鍵をメモリーにロードします。

    $ /usr/bin/ssh-agent $SHELL
    $ /usr/bin/ssh-add
    

    これらのコマンドは、ローカル・ノードでssh-agentを起動し、RSA鍵およびDSA鍵を現行のセッション・メモリーにロードします。これにより、SSHコマンドを発行するときにパス・フレーズの使用を求めるプロンプトが表示されなくなります。

  3. プロンプトで、セキュア・シェルの構成時に生成した、各鍵に対するパス・フレーズを次のように入力します。

    [oracle@racnode1 .ssh]$ exec /usr/bin/ssh-agent $SHELL
    [oracle@racnode1 .ssh]$ /usr/bin/ssh-add
    Enter passphrase for /home/oracle/.ssh/id_rsa
    Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)
    Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
    
  4. SSHを適切に構成したかどうかをテストするには、次のコマンドを実行します。SSHが適切に構成されている場合、パスワードまたはパス・フレーズの入力は求められません。

    [oracle@racnode1] $ ssh racnode2 date
    

注意:

このコマンド・ウィンドウは、パッチ・インストール手順が完了するまで閉じないでください。パッチ・インストールが完了する前にSSHユーザー等価を有効化するコマンド・ウィンドウを閉じる必要がある場合は、パッチ・インストールを開始する前に手順1から手順4を繰り返してください。


参照:


パッチの適用

Oracle RAC環境でのパッチの適用は、単一ノードへのパッチの適用とは若干異なります。OPatchでは、クラスタを検出すると、OUIを使用してソフトウェア・インベントリを問い合せ、ローカル・ノード名およびノード・リストを検索します。

パッチをインストールする前に、パッチ適用対象のソフトウェア・ディレクトリから実行されているすべてのアプリケーションを停止する必要があります。クラスタでは、パッチ適用対象のソフトウェアに応じて、他のアプリケーションの停止が必要になる場合があります。表10-1に、Oracleソフトウェアへのパッチ適用時に停止するアプリケーションのリストを示します。

表10-1 Oracleホーム・ディレクトリへのパッチの適用

Oracleホーム・ディレクトリ 停止するアプリケーション

Oracle RACデータベース

Oracle RACデータベース、Oracle Enterprise Manager Database Control、リスナー、およびOracle RACホーム・ディレクトリから実行されているその他のすべてのアプリケーション

Oracle Grid Infrastructure

Oracle RACデータベースとそのOracle RACホーム・ディレクトリから実行されるすべてのアプリケーション、クラスタ・データベースと同じOracle ASMインスタンスを使用する単一インスタンス・データベース、Oracle ASMインスタンス、すべてのノード・アプリケーション、Oracle Clusterware、およびGridホーム・ディレクトリから実行されるその他のアプリケーション


この項では、次のタスクについて説明します。

Gridホームへのパッチの適用

クラスタ用Oracle Grid Infrastructureソフトウェアへのパッチの適用は、2段階で行います。

  • Gridホームのロックを解除します。

  • Gridホームにパッチを適用します。

パッチの適用、またはGridホームのソフトウェア・ファイルへのその他の変更を行う前に、最初にGridホームのロックを解除する必要があります。

Gridホームのロックを解除するには、次の手順を実行します。

  1. パスGrid_home/crs/install(Grid_homeはGridホームへのパス)にディレクトリを変更し、rootユーザーとして次のようなコマンドを使用してGridホームのロックを解除します。

    cd /u01/app/11.2.0/grid/crs/install 
    perl rootcrs.pl -unlock -crshome /u01/app/11.2.0/grid
    

    -unlockフラグを指定してrootcrs.plスクリプトを実行すると、Oracle Clusterwareスタックを停止して、Gridホームのファイルのロックを解除して、ファイルを変更可能にします。

  2. クラスタ用Oracle Grid Infrastructureのソフトウェア所有者にユーザーを変更して、この項で説明されているパッチ適用方法のいずれかを実行して、Gridホームにパッチを適用します。

  3. Gridホームの変更が終了したら、rootユーザーとして次のようなコマンドを使用して、再度ホーム・グリッドをロックします。

    cd /u01/app/11.2.0/grid/crs/install 
    perl rootcrs.pl -patch
    

    -patchフラグを指定してrootcrs.plスクリプトを実行すると、Gridホームが再度ロックされ、Oracle Clusterwareスタックが再起動します。

すべてのノードへのパッチの適用

すべてのノードへのパッチの適用では、まずクラスタ内のすべてのノードが停止されてから、すべてのノードにパッチが適用されます。すべてのノードにパッチが適用された後、各ノードのOracle Clusterwareスタックおよび登録されているすべてのリソースが再起動されます。通常この方法は非常に重要なパッチの場合に使用され、停止時間は最大になります。OPatchは、パッチをローリング方式で適用できない場合、およびminimize_downtimeオプションを指定しなかった場合にこの方法を使用します。

すべてのノードのパッチ適用を実装するには、次の手順を実行します。

  1. パッチ適用対象のOracleホーム・ディレクトリを使用しているすべてのユーザー・アプリケーションを停止します。

  2. Oracle RACホーム・ディレクトリのみにパッチを適用する場合は、クラスタのすべてのノードのすべてのOracle RACインスタンスを停止します。クラスタ・データベースのOracle RACインスタンスをすべて停止するには、コマンド・ウィンドウに次のコマンドを入力しますが、ここで、CRS_homeはGridホーム・ディレクトリの場所を、salesはデータベースの名前を表しています。

    $ CRS_home/bin/srvctl stop database -d sales
    
  3. Gridホーム・ディレクトリにパッチを適用する場合は、クラスタのすべてのOracle RACデータベース、およびパッチ適用対象のASMインストールを使用するクラスタ内のすべての単一インスタンスのデータベースを停止する必要があります。

    Gridホーム・ディレクトリにパッチを適用する場合は、1つのコマンドを使用して、クラスタのすべてのサーバーのOracle Clusterwareスタックを停止できます。このコマンドでは、Oracle Clusterwareスタックの停止試行中、Oracle Clusterwareによって管理されるリソースの正常な停止が試行されます。Oracle Clusterwareによって管理される任意のリソースが、crsctl stop clusterコマンドの実行後も実行されている場合、コマンドは失敗します。すべてのリソースを無条件に停止してOracle Clusterwareスタックを停止するには、-fオプションを使用します。次のようなコマンドを使用しますが、ここで、CRS_homeはクラスタ用Oracle Grid Infrastructureインストールのホーム・ディレクトリを表しています。

    $ CRS_home/crs/bin/crsctl stop cluster -all
    
  4. クラスタの各ノードのデータベース・インスタンスおよびOracle Clusterwareスタックを停止した後、crsctlユーティリティを使用して、各ノードのすべてのクラスタ・リソースが停止されていることを確認します。

    $ Grid_home/bin/crsctl status resource -t
    
  5. 現在のディレクトリを、パッチが格納されているディレクトリに設定します。次に例を示します。

    $ cd Oracle_home/OPatch/4519934/4519934
    
  6. 次のように入力して、ORACLE_HOME環境変数が、パッチを適用するソフトウェア・ディレクトリに設定されていることを確認します。

    $ echo $ORACLE_HOME
    /u01/app/oracle/product/11.2.0/dbhome_1
    
  7. 次のコマンドを入力してOPatchを実行します。

    opatch apply
     
    
  8. Gridホーム・ディレクトリにパッチを適用した場合は、任意のノードでrootユーザーとして次のコマンドを発行して、すべてのノードのOracle Clusterwareスタックを再起動しますが、ここで、Grid_homeはクラスタ用Oracle Grid Infrastructureインストールのホーム・ディレクトリを表しています。

    # Grid_home/bin/crsctl start cluster -all
    
  9. すべてのノードのOracle Clusterwareスタックを再起動した後、crsctlユーティリティを使用して、各ノードのクラスタ・リソースが再起動されたことを確認します。

    $ Grid_home/bin/crsctl status resource -t
    

    再起動されていないクラスタ・リソースがある場合は、CRSCTLまたはSRVCTLユーティリティを使用して再起動します。たとえば、様々なクラスタ・リソースを再起動するには次のようなコマンドを使用できますが、ここで、Grid_homeはクラスタ用Oracle Grid Infrastructureインストールのホーム・ディレクトリを、Oracle_homeはOracle RACデータベースのホーム・ディレクトリを表しています。

    $ Oracle_home/bin/srvctl start instance -d sales -i "sales1"
    # Grid_home/bin/crsctl start resource myResource -n docrac2
    
  10. 次のように入力して、パッチ適用手順に示されているパッチ適用後のスクリプトを実行します。

    $ sqlplus /nolog 
    SQL> connect sys/password@sales1 AS SYSDBA
    SQL> @Oracle_home/rdbms/admin/catbundle.sql cpu apply
    SQL> exit
    

参照:


ローリング方式でのパッチの適用

ローリング方式でのパッチ適用では、1つのノード・グループが停止され、それらのノードにパッチが適用された後、再起動されます。これは、クラスタ内のすべてのノードにパッチが適用されるまでグループごとに個々に行われます。Oracle RACまたはクラスタ用Oracle Grid Infrastructureインストールに個別パッチを適用する方法としては、これが最も効率的です。個々のノード・グループにパッチを適用することにより、異なるノード上で常に1つ以上のインスタンスが利用可能なため、クラスタ・データベースの停止時間がゼロになります。

ほとんどのパッチはローリング方式で適用できますが、一部のパッチはこの方法では適用できません。パッチのREADMEファイルには、ローリング方式によるパッチ適用が可能かどうかが記載されています。ローリング・パッチ方式でパッチを適用できない場合、パッチを適用するときに、「最小停止時間でのパッチの適用」または「すべてのノードへのパッチの適用」を使用する必要があります。

ローリング・パッチ方式でパッチを適用するには、次の手順を実行します。

  1. コマンド・ウィンドウで、次のように入力して、解凍されたパッチがディスクにステージングされるディレクトリに移動します。

    $ cd Oracle_home/OPatch/12419331/12419331
    
  2. 次のコマンドを使用して、ローリング方式でパッチを適用できることを確認します。

    $ opatch query -is_rolling_patch [unzipped patch location]
    

    ローリング方式で適用するには、パッチが「更新可能なローリング・パッチ」または単に「ローリング・パッチ」として指定されている必要があります。パッチがローリング・パッチであるかどうかを確認するには、パッチのREADMEファイルを参照してください。

  3. パッチ適用対象のノード・グループでOracleホーム・ディレクトリを使用しているすべてのユーザー・アプリケーションを停止します。たとえば、ローカル・ノードのEnterprise Manager Database Controlを停止するには、次のコマンドを使用します。ここで、Oracle_homeはOracle RACのホーム・ディレクトリです。

    $ Oracle_home/bin/emctl stop dbconsole
    
  4. Oracle RACホーム・ディレクトリのみにパッチを適用する場合は、パッチ適用対象のノード・グループのすべてのOracle RACインスタンスを停止します。Oracle RACデータベースのインスタンスを停止するには、次の例のようなコマンドを入力しますが、ここで、Oracle_homeはOracle RACホーム・ディレクトリの場所を、salesはデータベースの名前を、sales1はインスタンスの名前を表しています。

    $ Oracle_home/bin/srvctl stop instance -d sales -i "sales1" -f
    
  5. Gridホーム・ディレクトリにパッチを適用する場合は、パッチ適用対象のノード・グループで実行されているすべてのOracle RACデータベース・インスタンスを停止する必要があります。また、パッチ適用対象のノードのGridホームでASMインストールを使用しているすべての単一インスタンスのデータベースおよびユーザー・アプリケーションを停止します。

    Gridホーム・ディレクトリにパッチを適用する場合は、1つのコマンドを使用して、クラスタの特定のサーバーのOracle Clusterwareスタックを停止できます。このコマンドでは、Oracle Clusterwareスタックの停止試行中、Oracle Clusterwareによって管理されるリソースの正常な停止が試行されます。Oracle Clusterwareによって管理される任意のリソースが、crsctl stop clusterコマンドの実行後も実行されている場合、コマンドは失敗します。すべてのリソースを無条件に停止して特定のサーバーのOracle Clusterwareスタックを停止するには、-fオプションを使用します。次のようなコマンドを使用しますが、ここで、Grid_homeはクラスタ用Oracle Grid Infrastructureインストールのホーム・ディレクトリを、docrac1はパッチ適用対象のノード・グループの1つのノードを表しています。

    $ Grid_home/crs/bin/crsctl stop cluster -n docrac1
    
  6. クラスタの特定のノードのデータベース・インスタンスおよびOracle Clusterwareを停止した後、crsctlユーティリティを使用して、それらのノードのすべてのクラスタ・リソースが停止されていることを確認します。

    $ Grid_home/bin/crsctl status resource -t
    
  7. 次のように入力して、ORACLE_HOME環境変数が、パッチを適用するソフトウェア・ディレクトリに設定されていることを確認します。

    $ echo $ORACLE_HOME
    /u01/app/oracle/product/11.2.0/dbhome_1
    
  8. 各ノードに個別にパッチを適用する場合、次のコマンドを使用して、ローカル・ノードにのみパッチが適用されるようにOPatchに対して指示します。このコマンドをパッチのあるディレクトリから実行する場合は、パッチIDの指定は不要です。

    $ opatch apply -local
    

    ノードに個別にパッチを適用する場合は、次のようなコマンドを使用して、パッチ適用対象の次のノードのみにパッチを適用するようにOPatchに指示できます。このコマンドをパッチのあるディレクトリから実行する場合は、パッチIDの指定は不要です。

    $ opatch apply -remote_nodes docrac2
    

    ノード・グループにパッチを適用する場合、次のようなコマンドを使用して、パッチ適用の対象となるノード・グループにパッチが適用されるようにOPatchに対して指示します。

    $ opatch apply [-local_node docrac1] -remote_nodes docrac2,docrac3
    
  9. ノードまたはノード・グループにパッチを適用した後、それらのノードのOracle ClusterwareおよびOracle RACを再起動できます。

    1. Oracleホームのみにパッチを適用した場合は、パッチを適用したノードのインスタンスおよびデータベース・アプリケーションを再起動します。たとえば、次のようなコマンドを使用します。

      $ Oracle_home/bin/srvctl start instance -d sales -i "sales1"
      $ Oracle_home/bin/emctl start dbconsole
      
    2. Gridホーム・ディレクトリにパッチを適用した場合は、パッチが適用されたノードの1つでrootユーザーとして次のコマンドを発行して、パッチが適用されたすべてのノードのOracle Clusterwareスタックを再起動しますが、ここで、Grid_homeはクラスタ用Oracle Grid Infrastructureインストールのホーム・ディレクトリを表しています。

      # Grid_home/bin/crsctl start cluster -n docrac1
      

      Oracle ClusterwareおよびOracle ASMを再起動した後、パッチを適用したノードの任意のOracle Databaseインスタンスおよび関連するアプリケーションを再起動できます。

  10. すべてのノードのOracle Clusterwareスタックを再起動した後、crsctlユーティリティを使用して、各ノードのクラスタ・リソースが再起動されたことを確認します。

    $ Grid_home/bin/crsctl status resource -t
    

    再起動されていないクラスタ・リソースがある場合は、CRSCTLまたはSRVCTLユーティリティを使用して再起動します。たとえば、様々なクラスタ・リソースを再起動するには次のようなコマンドを使用できますが、ここで、Grid_homeはクラスタ用Oracle Grid Infrastructureインストールのホーム・ディレクトリを、Oracle_homeはOracle RACデータベースのホーム・ディレクトリを表しています。

    $ Oracle_home/bin/srvctl start instance -d sales -i "sales1"
    # Grid_home/bin/crsctl start resource myResource -n docrac1
    
  11. 次のノード・グループに対して手順3から手順10を繰り返します。

    パッチ適用の対象となるノード・グループが3つ以上ある場合、クラスタ内のすべてのノードにパッチが適用されるまで、各ノード・グループに対して手順3から手順10を繰り返します。

  12. 次のように入力して、パッチ適用手順に示されているパッチ適用後のスクリプトを実行します。

    $ sqlplus /nolog 
    SQL> connect sys/password@sales1 AS SYSDBA
    SQL> @Oracle_home/rdbms/admin/catbundle.sql cpu apply
    SQL> exit
    

最小停止時間でのパッチの適用

最小停止時間でのパッチの適用では、1つのセットのノードに対して、停止およびパッチの適用を順に実行します。最初のセットのノードにパッチを適用した後、2つ目のセットのノードを停止します。次に、最初のセットのノードを再起動し、2つ目のセットのノードにパッチを適用します。2つ目のセットのノードは、パッチの適用後に再起動します。この方法を使用した場合、同時にすべてのノードを停止する方法と比較すると、Oracle RACの停止時間が短くなります。

最小停止時間でのパッチの適用では、次のアクションが実行されます。

  • 常に、ローカル・ノードに最初にパッチが適用されます。

  • ローカル・ノードは、他のノードにパッチを適用する場合のベースとして使用されます。

  • ユーザーは、残りのノードから最初にパッチを適用するノードのセットを入力するように求められます。

  • ユーザーは最初のセットの各ノードについて、インスタンスを停止するよう求められ、停止後にパッチがノードに伝播されてから、次のノードで処理が続行されます。最初のセットのノードにパッチが適用されると、ユーザーは残りのノードを停止するよう求められます。

  • ローカル・ノードにパッチが適用されると、パッチは最後のセットのノードに伝播され、インベントリが更新されます。最後のインスタンスがリモート・ノードで停止されます。ユーザーはこの時点で、残りのノードにパッチを適用する前に、パッチ適用済のノード(最初のセットのノード)を起動できます。

停止時間が最短の方法でクラスタ・データベースにパッチを適用するには、次の手順を実行します。

  1. 次のように入力して、解凍されたパッチがディスクにステージングされているディレクトリに移動します。

    $ cd Oracle_home/OPatch/12419331/12419331
    
  2. パッチ適用対象のノード・グループでOracle RACホーム・ディレクトリを使用しているすべてのユーザー・アプリケーションを停止します。たとえば、ローカル・ノードのEnterprise Manager Database Controlを停止するには、次のコマンドを使用します。ここで、Oracle_homeはOracle RACのホーム・ディレクトリです。

    $ Oracle_home/bin/emctl stop dbconsole
    
  3. ローカル・ノードでOracle RACインスタンスをすべて停止します。Oracle RACデータベースのインスタンスを停止するには、次の例のようなコマンドを入力しますが、ここで、Oracle_homeはOracle RACデータベース・インストールのホーム・ディレクトリを、salesはデータベースの名前を、sales1はインスタンスの名前を表しています。

    $ Oracle_home/bin/srvctl stop instance -d sales -i "sales1" -f
    
  4. 次のように入力して、ORACLE_HOME環境変数が、パッチを適用するソフトウェア・ディレクトリに設定されていることを確認します。

    $ echo $ORACLE_HOME
    /u01/app/oracle/product/11.2.0/dbhome_1
    
  5. パッチ・ディレクトリ内から次のコマンドを使用します。

    $ opatch apply -minimize_downtime
    

    ディスク上でパッチがステージング済のディレクトリからOPatchコマンドを実行する場合、パッチIDを指定する必要はありません。

    ローカル・ノードにパッチを適用する準備ができているかどうか尋ねられます。ローカル・ノードのOracle RACインスタンスが停止していることを確認すると、ローカル・ノードのOracleホーム・ディレクトリにパッチが適用されます。その後、パッチ適用の対象となる次のノードを選択するよう求められます。

  6. クラスタ内の他のノードでOracle RACインスタンスを停止した後、ローカル・ノードのOracle RACインスタンスを再起動できます。次に、残りのノードにパッチを適用する準備ができたことをOPatchに知らせます。

  7. すべてのノードにパッチが適用されたら、クラスタ内の他のノードでOracle RACインスタンスを再起動します。次のコマンドは、orclというOracle RACデータベースのorcl2インスタンスを起動する方法を示しています。

    $ Oracle_home/bin/srvctl start instance -d orcl -i "orcl2"
     
    
  8. クラスタのすべてのノードのOracle Clusterwareリソースが再起動されたことを確認します。

    $ crsctl check cluster
    

    再起動されていないクラスタ・リソースがある場合は、CRSCTLまたはSRVCTLユーティリティを使用して再起動します。たとえば、様々なクラスタ・リソースを再起動するには次のようなコマンドを使用できますが、ここで、Grid_homeはクラスタ用Oracle Grid Infrastructureインストールのホーム・ディレクトリを、Oracle_homeはOracle RACデータベースのホーム・ディレクトリを表しています。

    $ Oracle_home/bin/srvctl start instance -d sales -i "sales1"
    # Grid_home/bin/crsctl start resource myResource -n docrac1
    
  9. 次のように入力して、パッチ適用手順に示されているパッチ適用後のスクリプトを実行します。

    $ sqlplus /nolog 
    SQL> connect sys/password@sales1 AS SYSDBA
    SQL> @Oracle_home/rdbms/admin/catbundle.sql cpu apply
    SQL> exit
    

パッチ・セットの適用

パッチ・セットは、完全にテストされ、統合された製品修正を提供するメカニズムです。パッチ・セット内のすべての修正が、テスト済で、互いに機能することが動作保証されています。パッチ・セットには影響が小さいパッチのみが含まれているため、サーバーに対するアプリケーションまたはツールの動作保証を行う必要はありません。

Oracle Linux上のOracle RACデータベースおよびOracle Clusterwareに最新のパッチ・セットを適用する方法は、My Oracle Support(旧OracleMetaLink)Webサイトのドキュメント、Oracle 11gリリース2(11.2)サポート・ステータスおよびアラートを検索してください。

このドキュメントはOracle 11gリリース2に使用可能なパッチ・セットの概要を提供します。このドキュメントを使用して、プラットフォームに合ったパッチ・セット・ノートを簡単に特定、確認できます。Oracle Databaseのパッチ・セット・ノートのドキュメントには次の情報が含まれています。

  • システム要件とパッチ・セットのインストールまたは再インストールの方法に関する情報

  • これまでに修正された特定のプラットフォーム用のOracle Database固有のバグをすべて網羅したリスト

  • 特定のプラットフォーム用のOracle Databaseに関する既知の問題のリスト

My Oracle Supportでパッチ・セット・ノートを検索するには、次の手順を実行します。

  1. My Oracle Supportにログインします。

  2. 「パッチと更新版」タブを選択します。

  3. 「最新のパッチセット、Mini PackおよびMaintenance Packへのクイック・リンク」を選択します。

  4. 「Oracleサーバー/ツールの最新のパッチセット」ヘッダーの下で「Oracle Database」を選択します。

    オペレーティング・システムのリストが表示されます。

  5. オペレーティング・システムと一致するエントリの上にカーソルを置くか、三角矢印を使用して、オペレーティング・システムを検索します。

    Linux x86などのオペレーティング・システムのエントリの上にカーソルを置く場合データベースのバージョンが表示されます。

  6. 「11.2.0」を選択します。

    「拡張検索」ページが表示されます。

  7. このページの下までスクロールして、使用可能なパッチ・セットのリストを参照します。

  8. 表示またはダウンロードするパッチ・セットの「パッチ」列の番号を選択します。

    パッチ・セットの説明およびダウンロード・ページが表示されます。

  9. 「READMEの表示」をクリックして、パッチ・セット・ノートを表示します。

    また、このページで「ダウンロード」をクリックしてご使用のコンピュータにパッチをダウンロードできます。

  10. パッチのダウンロードを選択した場合は、パッチ・セットのReadMeファイルの説明に従ってソフトウェアにパッチ・セットを適用してください。


参照:


パッチのデプロイメントに関するトラブルシューティング

Oracle RAC環境へのパッチの適用は、複雑になることがあります。この項では、パッチのデプロイのトラブルシューティングに関する次のトピックを紹介します。

Oracle RACデータベースへのパッチの適用で問題が発生した場合、一般的な問題であれば、上述のトピックで解決方法を確認できます。発生した問題がこのリストにない場合は、ログおよびトレース・ファイルを確認します。


参照:


OPatch用のノード・リストの更新

OPatchによって自動的にOracle RACまたはそのノードが検出されない場合は、インベントリの内容を調べ、その内容が完全であることを確認します。

OPatchのノード・リストを更新するには、次の手順を実行します。

クラスタのノードのリストが完了していない場合、次の例に示すように、Oracle Universal Installerおよび-updateNodeListフラグを使用して更新できます。

Oracle_home/oui/bin/runInstaller -updateNodeList 
ORACLE_ HOME=/u01/app/oracle/product/11.2.0/dbhome_1 
CLUSTER_NODES=racnode1,racnode2,racnode3 -noClusterEnabled

参照:


OPatchログおよびトレース・ファイルについて

ロギングとトレースは、デバッグのための一般的な支援機能です。OPatchでは、すべての適用ロールバックおよびlsinventory操作のログが保持されます。ログ・ファイルはOracle_home/cfgtoollogs/opatchディレクトリに配置されます。各ログ・ファイルには操作のタイム・スタンプが付加されます。ログ・ファイルの名前は、opatch_mm-dd-yyyy_hh-mm-ss.logの形式になり、ここで、mm-dd-yyyyは現在の日付を、hh-mm-ssは現在の時刻を表しています。OPatchを実行するたびに、新しいログ・ファイルが作成されます。

たとえば、ログ・ファイルが2007年5月17日の午後11時55分に作成された場合、ログ・ファイルの名前は次のようになります。

opatch_05-17-2007_23-55-00.log

OPatchでは、OPatchで実行されたコマンドの索引と、それに関連付けられているログ・ファイルもOracle_home/cfgtoollogs/opatchディレクトリのopatch_history.txtファイルに保持されます。opatch_history.txtファイルのサンプルを次に示します。

Date & Time : Tue Apr 26 23:00:55 PDT 2007
Oracle Home : /u01/app/oracle/product/11.2.0/dbhome_1/
OPatch Ver. : 11.2.0.0.0
Current Dir : /scratch/oui/OPatch
Command     : lsinventory
Log File    : 
/u01/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch-2007_Apr_26_23-00-55-PDT_Tue.log

参照:


「有効なパッチ領域ではありません」エラーの解決

このエラーは、パッチの適用のためにOPatchユーティリティで使用されているディレクトリがOPatchユーティリティで確認されている内容のテンプレートと一致しない場合、またはOPatchユーティリティが無効なディレクトリから実行されている場合に発生する可能性があります。

Patch_Shiphomeディレクトリには、次の構造が存在する必要があります。

  • メタデータ・ファイルが含まれているetcディレクトリ

  • パッチ・ファイルが含まれているfilesディレクトリ

  • 同じディレクトリ下のetc/config/inventory.xmlファイルおよびactions.xmlファイル

「有効なパッチ領域ではありません」エラーを解決するには、次の手順を実行します。

  • 次のアクションのいずれかを実行します。

    1. パッチのshiphomeディレクトリを削除して、適切な構造で(ファイルを再度抽出して)再作成します。

    2. インストールされているパッチが解凍され、ディスクにステージングされているディレクリからOPatchユーティリティを開始します。

    3. OPatchを開始する場合、次のコマンドを使用します。

      opatch apply /Patch_Shiphome
      

      Patch_Shiphomeはパッチがディスクでステージングされている場所です。


参照:


「部分的にインストールされた個別パッチを削除できません」エラーの解決

パッチの適用プロセスが中断した場合、次にパッチをインストールしようとすると、「一部インストール済個別パッチを削除できません」というエラーが発生することがあります。

部分的にインストールされたパッチ・エラーを解決するには、次の手順を実行します。

  1. 環境変数ORACLE_HOMEが、パッチを適用しようとしているOracleホーム・ディレクトリに設定されていることを確認します。

  2. Oracle_home/.patch_storage/patch-id_timestampディレクトリに移動して、次のようにrestore.shスクリプト(Windowsプラットフォームの場合はrestore.bat)を実行します。

    Oracle_home/.patch_storage/patch-id_timestamp/restore.sh
    
  3. LinuxおよびUNIXシステムの場合、Oracle_home/.patch_storage/patch-id_timestamp/make.txtファイルを使用して(使用可能な場合)、オペレーティング・システムの環境を次のように変更します。

    /bin/sh make.txt
    
  4. 再度、パッチの適用を試行します。


参照:


Oracleソフトウェアのアップグレード

アップグレードの場合、インストールされているOracleソフトウェア・ファイルのすべてではないがその大部分が変更されます。一方、パッチの場合は通常、ごく一部のファイルのみが変更されます。アップグレードは、ソフトウェアの新しいバージョンをインストールする場合またはパッチ・セットを適用する場合に行われます。ローリング・アップグレードを実行することも、Oracle DatabaseおよびOracle Clusterwareソフトウェアを停止してアップグレードを実行することもできます。

Oracle Clusterware 11gリリース2の場合、アウトオブプレース・アップグレードを実行します。アウトオブプレース・アップグレードを実行するには、クラスタ用Oracle Grid Infrastructureを新しいGridホームにインストールします。アップグレードを実行する場合、既存のソフトウェアの場所を選択するかわりに、新しいGridホームの場所を指定します。

アウトオブプレース・アップグレードを実行する場合、旧バージョンと新バージョンのソフトウェアが同時にノードに存在することになり、各バージョンは別々のホームの場所にありますが、いつでもアクティブになるのは、1つのバージョンのソフトウェアのみです。

Oracle Databaseリリース11.2.0.2は、完全パッチセットのリリースです。Oracle Databaseリリース11.2.0.2にアップグレードするには、既存のOracleホーム・ディレクトリにパッチセットを当てるのではなく、クラスタ用のOracle Grid InfrastructureとOracle Databaseのソフトウェアを新しいOracleホーム・ディレクトリにインストールします。これは、パッチセットが必ず決まった位置にインストールされていた以前のOracle Databaseリリース用のパッチセット・リリースとは異なります。

Database Upgrade Assistant(DBUA)を使用すると、既存のデータベースを現在のリリースのOracle Databaseにアップグレードできます。Database Upgrade Assistant(DBUA)は、アップグレード・プロセスを順番に説明し、新しいリリース用にデータベースを構成します。DBUAはアップグレード処理を自動化し、表領域、オンラインREDOログ・ファイルなどの構成オプションの適切な推奨値を示します。


参照:

  • DBUAを使用したデータベース・アップグレードの詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

  • ソフトウェア・アップグレードの実行の詳細は、『Oracle Grid Infrastructureインストレーション・ガイド』を参照してください。

  • 『Oracle Databaseアップグレード・ガイド』