
各種各樣的 來源網路上建議在每次作業系統升級和/或修補後重新連結 Oracle 二進位。
我可以理解升級 glibc 時需要重新連結。有些包可能不需要重新鏈接,有些需要,有些我不確定:
- 升級 glibc -> 我想需要重新鏈接
- 升級 vim -> 我想不需要重新鏈接
- 升級 gzip -> 我不確定
- 升級核心 -> 我不確定
有誰有一個列表,或者有人可以向我指出 Oracle 實際連結的庫的列表嗎?我不是 Oracle DBA,所以我對 Oracle 連結過程一無所知。我甚至不確定我是否真正理解 Oracle 在重新連結過程中所做的事情:在二進位軟體中,在安裝後進行自己的連結並不是一種常見的做法,不是嗎?
不管怎樣,長話短說:我有幾個 RHEL[345] 盒子,我需要對其應用一些補丁。大多數機器都運行 Oracle,我想知道哪些補丁需要重新鏈接,哪些不需要。一個盡可能詳盡的清單會很好:)
答案1
我很少需要重新連結 Oracle 資料庫,也許只有在重大作業系統升級或從 32 位元升級到 64 位元之後才需要。但是,如果您有疑問,請運行它。需要一分鐘。另一個可供參考的來源是metalink note 131321.1...重點是:
" 在這些情況下會自動重新連結:
- 已使用 Oracle 提供的安裝程式安裝了 Oracle 產品。
- 已透過 Oracle 提供的安裝程式套用 Oracle 補丁集。
以下資訊已新增至 Metalink 的「認證」部分:
Oracle 資料庫 - 企業版的一般說明:
O/S資訊:供應商保證作業系統二進位相容性;因此,除非另有明確說明,否則升級這些作業系統時無需重新安裝或重新連結 Oracle 軟體。
在以下情況下建議手動重新連結 Oracle(即使作業系統供應商可能不要求這樣做):
- 作業系統已升級。
- 作業系統系統庫已發生變更。在應用作業系統修補程式期間可能會發生這種情況。
- 新安裝在重新連結階段失敗。
- 初始啟動期間的各個 Oracle 可執行檔核心轉儲。
- 已套用單獨的 Oracle 補丁(但是,明確重新連結指令通常包含在自述文件中或整合到補丁安裝腳本中)
」
答案2
為了獲得完整的了解,除了上面所說的之外,如果您要更改 Linux 內核,Oracle Clusterware 可能還需要重新連結。例如,如果您使用 ACFS 檔案系統,Oracle 具有針對特定 Linux 核心版本的 ACFS 核心驅動程式。但不確定較小的核心升級是否符合此條件。
它實際上並不是修復 acfs Clusterware 驅動程式的重新連結本身,而是安裝新 ACFS 驅動程式的 crs/install/rootcrs.pl -lock(或單節點叢集件的 roothas.pl -lock)腳本。在重新連結叢集件二進位檔案之前,您必須呼叫 rootcrs.pl -unlock ,一旦重新連結完成,然後呼叫 rootcrs.pl -lock 。
答案3
來自Oracle Metalink Note「重新連結Oracle Home FAQ(常見問題)(Doc ID 1467060.1)」已經在另一個答案中提到,該文件的當前版本:
什麼時候需要手動重新連結?以下情況需要手動重新連結。
A) 作業系統升級後,一般作業系統供應商都會保證作業系統的二進位相容性,因此,除非另有說明,升級這些作業系統時不需要重新安裝或重新連結Oracle軟體。 「但是,Oracle 建議在作業系統升級後手動重新連結 Oracle Home 二進位」。硬體更改不需要重新連結。
B) 作業系統打補丁後。
作業系統升級、降級、打補丁或刪除補丁後是否需要重新連結?是的,Oracle 建議在作業系統升級、修補、降級或刪除修補程式或影響作業系統庫行為的任何變更後對 Oracle Home 二進位檔案執行手動重新連結。成功的重新連結表示 Oracle 可執行檔已與作業系統二進位檔案正確連結。
如果您使用 Oracle Linux,那麼它與 Redhat Enterprise Linux 100% 相容,根據:Oracle Linux 常見問題
- 無論是運行 Unbreakable Enterprise Kernel 還是 Oracle 的替代 Red Hat 相容內核,Oracle Linux 的應用程式二進位都與 Red Hat Enterprise Linux 相容。現有應用程式可以在 Unbreakable Enterprise Kernel 下運行,因為所有系統庫都保持不變。
注意:在主要版本的生命週期中,紅帽會做出商業上合理的努力來維護所有次要版本和勘誤建議中核心執行環境的二進位相容性。如有必要,紅帽可能會因嚴重影響安全或其他重大問題而對此相容性目標做出例外處理。此外,如上文和附錄 A 所述,紅帽企業 Linux 的主要版本包含先前主要版本中包含的一組有限的向後相容庫,以便輕鬆遷移應用程式。通常,紅帽應用更改的方式是最大限度地減少更改量並保持二進位相容性。在某些情況下,受控包重新建立基礎可能存在例外情況。
因此,Oracle 建議在更改(補丁、升級等)後重新連結二進位文件,而 Redhat 僅做出「商業上合理的努力來維護所有次要版本中核心執行時間環境的二進位相容性」。
為了實現二進位相容性,作業系統不僅需要不更改應用程式二進位介面 (ABI),而且應用程式僅使用此接口,而不使用其他可能未記錄的例程。
重新連結很容易,而且 Oracle 提供了必須在正確環境中執行的腳本。因此,實際上您可以添加到資料庫的啟動腳本的連結(如果有的話),並在每次啟動資料庫時執行此連結。
所需的 Linux 軟體包可以在Linux 資料庫安裝指南在該部分
- 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
但我不確定手冊中的這些資訊有多可靠。 >ou caan 也對某些二進位檔案執行「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
我會建議不適合您的所有場景。我一直明白,重新連結是在您升級或修補部分內容時使用的。甲骨文安裝,而不是其支援的作業系統。