Oracle を再リンクするタイミングはいつですか?

Oracle を再リンクするタイミングはいつですか?

様々な ソースインターネット上では、OS のアップグレードやパッチの適用ごとに Oracle バイナリの再リンクが必要であると示唆されています。

glibc をアップグレードするときに再リンクが必要になることは理解できます。一部のパッケージでは再リンクが必要ない可能性があり、一部では必要であり、一部についてはよくわかりません。

  • glibc のアップグレード -> 再リンクが必要と思われます
  • vim のアップグレード -> 再リンクは必要ないと思われます
  • gzip のアップグレード -> よくわからない
  • カーネルのアップグレード -> よく分からない

Oracle が実際にリンクするライブラリのリストを持っている人、またはリストを教えてくれる人はいますか? 私は Oracle DBA ではないので、Oracle のリンク手順については何も知りません。再リンク中に Oracle が何をしているのか、実際に理解しているかどうかさえわかりません。バイナリ ソフトウェアでインストール後に独自のリンクを行うのは、あまり一般的ではないですよね?

とにかく、長い話を短くすると、私は RHEL[345] ボックスをいくつか持っていて、それらにいくつかのパッチを適用する必要があります。ほとんどのボックスは Oracle を実行しており、どのパッチに再リンクが必要で、どのパッチは不要か疑問に思っています。できるだけ網羅的なリストがあると嬉しいです :)

答え1

Oracle データベースの再リンクが必要になることはめったにありません。おそらく、メジャー O/S アップグレード後や、32 ビットから 64 ビットへの変更後くらいでしょう。ただし、疑問がある場合は、実行してください。1 分ほどかかります。もう 1 つ、metalink ノート 131321.1 も参照してください。要点は次のとおりです。

「再リンクは、次の状況で自動的に行われます:

  • Oracle 製品は、Oracle 提供のインストーラを使用してインストールされました。
  • Oracle パッチ セットは、Oracle 提供のインストーラーを介して適用されました。

Metalink の「認証」セクションに次の情報が追加されました。

Oracle Database - Enterprise Edition の一般的な注意事項:

O/S 情報: ベンダーはオペレーティング システムのバイナリ互換性を保証しているため、特に明記されていない限り、これらのオペレーティング システムをアップグレードするときに Oracle ソフトウェアの再インストールや再リンクは必要ありません。

次の状況では、Oracle を手動で再リンクすることが推奨されます (OS ベンダーが要求しない場合でも)。

  • OS のアップグレードが行われました。
  • OS システム ライブラリに変更が加えられました。これは、OS パッチの適用中に発生する可能性があります。
  • 再リンクフェーズ中に新規インストールが失敗しました。
  • 初期起動時に個々の Oracle 実行可能ファイルがコア ダンプします。
  • 個別の Oracle パッチが適用されています (ただし、明示的な再リンク手順は通常、README に含まれているか、パッチ インストール スクリプトに統合されています)

答え2

全体像を把握するには、上記に加えて、Linux カーネルを変更する場合は Oracle Clusterware の再リンクも必要になる場合があります。たとえば、ACFS ファイルシステムを使用する場合、Oracle には特定の Linux カーネル バージョン用の ACFS カーネル ドライバーがあります。ただし、マイナー カーネル アップグレードがこれに該当するかどうかはわかりません。

実際に acfs Clusterware ドライバーを修正するのは再リンクそのものではなく、新しい ACFS ドライバーをインストールする crs/install/rootcrs.pl -lock (または単一ノードの Clusterware の場合は roothas.pl -lock) スクリプトです。Clusterware バイナリを再リンクする前に rootcrs.pl -unlock を呼び出し、再リンクが完了したら rootcrs.pl -lock を呼び出す必要があります。

答え3

Oracle Metalink Note「Oracle Home の再リンクに関する FAQ (よくある質問)(ドキュメント ID 1467060.1)」から、すでに別の回答で言及されている、ドキュメントの現在のバージョンは次のとおりです。

  1. 手動の再リンクはいつ必要ですか? 以下の状況では手動の再リンクが必要です。

    A) OS のアップグレード後、一般的に OS ベンダーはオペレーティング システムのバイナリ互換性を保証するため、特に明記されていない限り、これらのオペレーティング システムをアップグレードするときに Oracle ソフトウェアの再インストールや再リンクは必要ありません。ただし、Oracle では、OS のアップグレード後に Oracle Home バイナリを手動で再リンクすることを推奨しています。ハードウェアの変更では再リンクは必要ありません。

    B) オペレーティング システムにパッチが適用された後 (推奨)。

  2. OS のアップグレード、ダウングレード、パッチの適用、またはパッチの削除の後には再リンクが必要ですか? はい、Oracle では、OS のアップグレード、パッチの適用、ダウングレード、パッチの削除、または OS ライブラリの動作に影響を与える変更の後には、Oracle ホーム バイナリの再リンクを手動で実行することを推奨しています。再リンクが成功すると、Oracle 実行可能ファイルが OS バイナリに適切にリンクされていることを示します。

Oracle Linuxを使用している場合、これはRedhat Enterprise Linuxと100%互換性があります。よくある質問 Oracle Linux

  • Oracle Linux は、Unbreakable Enterprise Kernel を実行しているか、Oracle の代替 Red Hat 互換カーネルを実行しているかに関係なく、Red Hat Enterprise Linux とアプリケーション バイナリ互換性があります。すべてのシステム ライブラリが変更されていないため、既存のアプリケーションは Unbreakable Enterprise Kernel で変更なく実行されます。

Red Hat Enterprise Linux 7: アプリケーション互換性ガイド

注意: メジャー リリースのライフサイクル中、Red Hat は、すべてのマイナー リリースおよびエラータ アドバイザリにわたって、コア ランタイム環境のバイナリ互換性を維持するために商業的に合理的な努力を払います。必要に応じて、Red Hat は、セキュリティに重大な影響を与える問題やその他の重要な問題に対して、この互換性目標に例外を設けることがあります。さらに、上記および付録 A で説明されているように、Red Hat Enterprise Linux のメジャー リリースには、以前のメジャー リリースに含まれていた下位互換性のあるライブラリの限定セットが含まれており、アプリケーションの移行が容易になっています。通常、Red Hat は、変更の量を最小限に抑え、バイナリ互換性を維持するような方法で変更を適用します。特定の状況下では、制御されたパッケージの再ベースに例外が適用される場合があります。

そのため、Oracle は変更 (パッチ、アップグレードなど) 後にバイナリを再リンクすることを推奨しており、Redhat は「すべてのマイナー リリースにわたってコア ランタイム環境のバイナリ互換性を維持するための商業的に合理的な努力」のみを行っています。

バイナリ互換性を確保するには、OS がアプリケーション バイナリ インターフェイス (ABI) を変更しないことだけでなく、アプリケーションがこのインターフェイスのみを使用し、他の、おそらく文書化されていないルーチンを使用しないことも必要です。

再リンクは簡単で、Oracle は適切な環境で実行する必要があるスクリプトを提供します。したがって、データベースの起動スクリプトがある場合は、それにリンクを追加して、データベースを起動するたびにこのリンクを実行することができます。

必要なLinuxパッケージは、Linux 用データベース インストール ガイドセクション

  1. Oracle データベースのインストール前のタスク

4.8. x86-64 Linux プラットフォームのオペレーティング システム要件

4.8.1. x86-64およびLinux 7とOracle 12でサポートされているOracle Linux 7およびRed Hat Enterprise Linux 7ディストリビューション。

binutils-2.23.52.0.1-12.el7.x86_64 
compat-libcap1-1.10-3.el7.x86_64
compat-libstdc++-33-3.2.3-71.el7.i686 
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64 
gcc-c++-4.8.2-3.el7.x86_64 
glibc-2.17-36.el7.i686 
glibc-2.17-36.el7.x86_64 
glibc-devel-2.17-36.el7.i686 
glibc-devel-2.17-36.el7.x86_64 
ksh
libaio-0.3.109-9.el7.i686 
libaio-0.3.109-9.el7.x86_64 
libaio-devel-0.3.109-9.el7.i686 
libaio-devel-0.3.109-9.el7.x86_64 
libgcc-4.8.2-3.el7.i686 
libgcc-4.8.2-3.el7.x86_64 
libstdc++-4.8.2-3.el7.i686 
libstdc++-4.8.2-3.el7.x86_64 
libstdc++-devel-4.8.2-3.el7.i686 
libstdc++-devel-4.8.2-3.el7.x86_64 
libXi-1.7.2-1.el7.i686 
libXi-1.7.2-1.el7.x86_64 
libXtst-1.2.2-1.el7.i686 
libXtst-1.2.2-1.el7.x86_64 
make-3.82-19.el7.x86_64 
sysstat-10.1.5-1.el7.x86_64 

しかし、このマニュアルの情報がどの程度信頼できるかはわかりません。 > 一部のバイナリに対して「ldd」コマンドを実行して、どのライブラリが使用されているかを確認することもできます。

$ ldd  $ORACLE_HOME/bin/oracle
linux-vdso.so.1 =>  (0x...)
libodm11.so => $ORACLE_HOME/lib/libodm11.so (0x...)
libcell11.so => $ORACLE_HOME/lib/libcell11.so (0x...)
libskgxp11.so => $ORACLE_HOME/lib/libskgxp11.so (0x...)
librt.so.1 => /lib64/librt.so.1 (0x...)
libnnz11.so => $ORACLE_HOME/lib/libnnz11.so (0x...)
libclsra11.so => $ORACLE_HOME/lib/libclsra11.so (0x...)
libdbcfg11.so => $ORACLE_HOME/lib/libdbcfg11.so (0x...)
libhasgen11.so => $ORACLE_HOME/lib/libhasgen11.so (0x...)
libskgxn2.so => $ORACLE_HOME/lib/libskgxn2.so (0x...)
libocr11.so => $ORACLE_HOME/lib/libocr11.so (0x...)
libocrb11.so => $ORACLE_HOME/lib/libocrb11.so (0x...)
libocrutl11.so => $ORACLE_HOME/lib/libocrutl11.so (0x...)
libaio.so.1 => /lib64/libaio.so.1 (0x...)
libdl.so.2 => /lib64/libdl.so.2 (0x...)
libm.so.6 => /lib64/libm.so.6 (0x...)
libpthread.so.0 => /lib64/libpthread.so.0 (0x...)
libnsl.so.1 => /lib64/libnsl.so.1 (0x...)
libc.so.6 => /lib64/libc.so.6 (0x...)
/lib64/ld-linux-x86-64.so.2 (0x...)
$

しかし、Oracleソフトウェアを再リンクする方が簡単だと思います。これは難しくありません。Metalinkのメモによると、変数を設定すると、

ORACLE_HOME
PATH to include $ORACLE_HOME/bin
LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/lib

そして走る

$ORACLE_HOME/bin/relink all

答え4

私は提案しますいいえあらゆるシナリオに対応します。私は常に、再リンクは、システムの一部をアップグレードまたはパッチ適用するときに使用するものだと理解していました。オラクルインストールであり、サポートしているオペレーティング システムではありません。

関連情報