
Различный источникив интернете полагают, что повторная компоновка двоичных файлов 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 Database - Enterprise Edition:
Информация об ОС: Поставщики гарантируют двоичную совместимость операционных систем; поэтому при обновлении этих операционных систем переустановка или повторное связывание программного обеспечения Oracle не требуется, если иное не указано специально.
Перекомпоновка Oracle вручную рекомендуется в следующих случаях (даже если поставщик ОС может этого не требовать):
- Произошло обновление ОС.
- Внесено изменение в системные библиотеки ОС. Это может произойти во время применения патча ОС.
- Новая установка завершилась сбоем на этапе повторного связывания.
- Дамп ядра отдельных исполняемых файлов Oracle во время первоначального запуска.
- Применен индивидуальный патч Oracle (однако явные инструкции по повторной привязке обычно либо включены в файл README, либо интегрированы в скрипт установки патча)
"
решение2
Для полной картины, в дополнение к тому, что было сказано выше, Oracle Clusterware также может потребовать перелинковки, если вы меняете ядро Linux. Например, если вы используете файловую систему ACFS, у Oracle есть драйверы ядра ACFS для определенной версии ядра Linux. Не уверен, что незначительные обновления ядра подходят для этого.
На самом деле, это не само перелинковывание, которое исправляет драйверы acfs Clusterware, а скрипт crs/install/rootcrs.pl -lock (или roothas.pl -lock для одноузлового Clusterware), который устанавливает новые драйверы ACFS. Вам придется вызвать rootcrs.pl -unlock перед перелинковкой двоичных файлов Clusterware, а после того, как перелинковка будет выполнена, — rootcrs.pl -lock .
решение3
Из заметки Oracle Metalink «Часто задаваемые вопросы о повторном связывании Oracle Home (часто задаваемые вопросы) (идентификатор документа 1467060.1)», уже упомянутой в другом ответе, текущая версия документа:
Когда требуется ручная перелинковка? Ручная перелинковка требуется в следующих ситуациях.
A) После обновления ОС поставщики ОС обычно гарантируют совместимость бинарных файлов операционной системы, поэтому при обновлении этих операционных систем не требуется переустановка или повторное связывание программного обеспечения Oracle, если специально не указано иное. "Однако Oracle рекомендует выполнять ручное повторное связывание бинарных файлов Oracle Home после обновления ОС". Изменения оборудования не требуют повторного связывания.
Б) После исправления операционной системы (рекомендуется).
Требуется ли повторное связывание после обновления ОС, понижения версии, исправления или удаления патча? Да, Oracle рекомендует выполнять ручное повторное связывание Oracle Home Binaries после обновления ОС, исправления, понижения версии или удаления патча или любого изменения, которое влияет на поведение библиотеки ОС. Успешное повторное связывание показывает, что исполняемые файлы Oracle правильно связаны с двоичными файлами ОС.
Если вы используете Oracle Linux, то это на 100% совместимо с Redhat Enterprise Linux согласноЧасто задаваемые вопросы Oracle Linux
- Oracle Linux — это двоично-совместимое приложение с Red Hat Enterprise Linux, независимо от того, запущено ли Unbreakable Enterprise Kernel или альтернативное ядро Oracle, совместимое с Red Hat. Существующие приложения работают без изменений с Unbreakable Enterprise Kernel, поскольку все системные библиотеки остаются неизменными.
Red Hat Enterprise Linux 7: РУКОВОДСТВО ПО СОВМЕСТИМОСТИ ПРИЛОЖЕНИЙ.
Примечание: В течение жизненного цикла основного релиза Red Hat прилагает коммерчески обоснованные усилия для поддержания двоичной совместимости для основной среды выполнения во всех второстепенных релизах и рекомендациях по исправлению ошибок. При необходимости Red Hat может делать исключения из этой цели совместимости для критических последствий безопасности или других существенных проблем. Кроме того, как описано выше и в Приложении A, основные релизы Red Hat Enterprise Linux содержат ограниченный набор обратно совместимых библиотек, включенных в предыдущие основные релизы, для обеспечения легкой миграции приложений. Обычно Red Hat применяет изменения таким образом, чтобы минимизировать объем изменений и поддерживать двоичную совместимость. Исключения могут применяться для контролируемых перебазирований пакетов при определенных обстоятельствах.
Поэтому Oracle рекомендует повторно связывать двоичные файлы после внесения изменений (патча, обновления и т. д.), а Redhat прилагает лишь «коммерчески обоснованные усилия для поддержания двоичной совместимости для основной среды выполнения во всех второстепенных выпусках».
Для обеспечения двоичной совместимости необходимо не только, чтобы ОС не изменяла двоичный интерфейс приложения (ABI), но и чтобы приложение использовало только этот интерфейс и никаких других, возможно, недокументированных процедур.
Повторная привязка проста, и Oracle предоставляет скрипт, который должен быть выполнен в правильной среде. Так что на самом деле вы можете добавить привязку к стартовым скриптам вашей базы данных, если таковая имеется, и выполнять эту привязку каждый раз при запуске базы данных.
Необходимые пакеты Linux можно найти вРуководство по установке базы данных для Linuxв разделе
- Задачи предварительной установки базы данных Oracle
4.8 Требования к операционной системе для платформ Linux x86-64
4.8.1. Поддерживаемые дистрибутивы Oracle Linux 7 и Red Hat Enterprise Linux 7 для x86-64 и для Linux 7 и Oracle 12. вы можете найти
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
Я бы предложилнетдля всех ваших сценариев. Я всегда понимал, что перелинковка нужна, когда вы обновляете или исправляете части вашегоОракулустановка, а не поддерживающая ее операционная система.