Ключевые слова:oracle, linux, install, (найти похожие документы)
From: Олег Иванов <oivanov@fors.com.>
Newsgroups: email
Date: Mon, 27 Aug 2005 18:21:07 +0000 (UTC)
Subject: Установка Oracle Applications 11i (e-Business Suite 11.5.10 + CU2) на Linux
Рассчитана на тех кто хочет посмотреть на Oracle Applications 11i - один
из самых больших программных продуктов. Дистрибутив занимает около 30Гб.
В инсталлированном виде около 66Гб. Для работы одному пользователю
достаточно памяти 1Гб.
Ставить можно на сертифицированные дистрибутивы Linux (чтобы в поддержку
обращаться), можно и на Mandriva (для себя - потестировать). Важен набор
библиотек, нужный продуктам Oracle.
1. установить параметры ядра /etc/sysctl.conf
по разделяемой памяти для SGA:
kernel.sem = 250 32000 100 150
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.shmall = 3279547
kernel.msgmni = 2878
kernel.msgmnb = 65536
fs.file-max = 327679 (основной, файлов открывается много)
net.ipv4.ip_local_port_range = 1024 65536
(опционально, только если к серверу подсоединится больше 30К сокетов)
опционально:
kernel.domainname=домен.com
(если в hosts стоит первым неполное имя, поможет обойти ошибку)
fs.aio-max-nr=1048576
(необязательно, обычно используется до 20000)
поставить (/etc/fstab) атрибут для файловой системы ext3 noatime -
ускоряет работу
после внесения изменений перегрузиться
2. в /etc/hosts первым должно идти полное имя
127.0.0.1 localhost.localdomain localhost
ip_address hostname.domain_name hostname
3. в /tmp 1Гб для 11i, для остальных продуктов поменьше
4. разделяемые библиотеки которые должны быть в системе ставятся
пакетами (можно взять с дистрибутива RHEL4 или скачать с rpmfind.net):
compat-db-4.1.25-9
(нужна библиотека libdb.so.2 используется в httpd проверить
какому пакету принадлежит файл можно rpm -qf fname)
compat-gcc-32-3.2.3-47.3
(gcc версии 3.2, но можно и 3.4)
compat-gcc-32-c++-3.2.3-47.3
(версия 3.2 для некоторых совсем древних библиотек Applications)
compat-libgcc-296-2.96-132.7.2
compat-libstdc++-296-132.7.2
(нужны для JRE 1.3.1 libstdc++-libc6.1-1.so.2)
compat-libstdc++-33-3.2.3-47.3
gcc-3.4.3-9.EL4
(при инсталляции компилируются библиотеки, т.е. требуются gcc, g++, ld, make)
gcc-c++-3.4.3-9.EL4
libaio-0.3.102-1
(для aio, можно в исходниках
http://oss.oracle.com/projects/libaio-oracle/dist/files/libaio-oracle-0.3.0.tar.gz)
libaio-devel-0.3.102-1 (для aio)
openmotif21-2.1.30-11.RHEL4.2
(для генерации отчетов нужна библиотека libXm.so.2.1)
xorg-x11-deprecated-libs-6.8.1-23.EL
xorg-x11-deprecated-libs-devel-6.8.1-23.EL
-libgdbm2-1.8.0-25mdk
(нужна если ставить на Mandriva и нет библиотеки libgdbm.so.2 и libgdbm.so.3 они
используются в модулях httpd - он в Applications старенький)
-make-3.80
(в предыдущих баг, хотя он не проявляется)
-gnome-libs-1.4.1.2.90-44
-gnome-libs-devel-1.4.1.2.90-44
-pdksh
(в Apps не нужно, нужен если ставится OID)
-setarch-1.7.1
(нужна только если пользоваться опцией большой памяти в hugemem kernel)
для себя можно поставить полезные пакеты:
arpwatch, bittorrent, kernel-source, lsb, mc, mkcd, mkisofs, tcpdump, syslinux
sysstat
(если нет в поставке скачать http://perso.wanadoo.fr/sebastien.godard/ ,
там удобные утилиты iostat vmstat sar)
после установки пакетов запустить ldconfig - она создаст линки которые
бывает не создаются.
5. Установить патчи, скачав их с
http://oss.oracle.com/projects/compat-oracle/files/RedHat/
compat-oracle-rhel4-1.0-3
- создает линки gcc и g++ на скрипт
compat-libcwait-2.0-1
- создает библиотеку и вставляет путь к ней в /etc/so.preload
патчи рассчитаны на идеальный случай конкретного дистрибутива
или сделать это вручную (исходники библиотек есть в этих патчах):
Oracle использует при компиляции и линковку устаревшие ключи и
компиляторы, поэтому приходится пользоваться старенькими версиями и
создать линки на gcc и g++ которые будут игнорировать устаревшие
параметры, потому что уж совсем старинные компиляторы сейчас не
поставляются. Поддерживается версия g++ 3.2, версия 3.4 уже не сможет
работать с библиотеками Applications
---/usr/bin/gcc296---3926015-----
#!/bin/sh
exec /usr/bin/gcc-3.4.3 -static-libgcc -B/usr/lib/gcc-lib/i386-redhat-linux/2.96/ "$@"
---/usr/bin/g++296--------
#!/bin/sh
exec /usr/bin/g++32 -static-libgcc -B/usr/lib/gcc-lib/i386-redhat-linux/2.96/ "$@"
если это не симлинки mv /usr/bin/gcc /usr/bin/gcc-3.4.3
если это не симлинки mv /usr/bin/g++ /usr/bin/g++32
ln -s /usr/bin/gcc296 /usr/bin/gcc
ln -s /usr/bin/g++296 /usr/bin/g++
потому что в 9i Oracleвские разработчики явно написали в одном из файлов
/usr/bin/gcc вместо gcc. По большому счету все это шаманство из-за
нежелания программистов убирать ошибки и обновлять древний код.
Oracle использовал функцию, которая устарела из-за изменений в нитях в glibc.
Приходится оформлять ее в виде отдельной библиотеки:
-----libcwait.so-----
#include <errno.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <sys/wait.h>
pid_t
__libc_wait (int *status)
{
int res;
asm volatile ("pushl %%ebx\n\t"
"movl %2, %%ebx\n\t"
"movl %1, %%eax\n\t"
"int $0x80\n\t"
"popl %%ebx"
: "=a" (res)
: "i" (__NR_wait4), "0" (WAIT_ANY), "c" (status), "d" (0), "S" (0));
return res;
}
-----------------
gcc -O2 -shared -fpic -xc libcwait.c -o /usr/lib/libcwait.so
Для оракловского агента создается заглушка выдающая переменные
----libctype.so---------------
#include <stdlib.h>
#include <ctype.h>
unsigned short int * __ctype_b;
unsigned short int * __ctype_tolower;
unsigned short int * __ctype_toupper;
void __attribute__((constructor)) my_init()
{
__ctype_b = * __ctype_b_loc();
__ctype_tolower = * __ctype_tolower_loc();
__ctype_toupper = * __ctype_toupper_loc();
}
void __attribute__((destructor)) my_clean() {}
-----------------
gcc -O2 -shared -fpic -xc libctype.c -o /usr/lib/libctype.so
Oracle использует устаревшую функцию (в /usr/lib/libc_nonshared.a
фнукция stat объявлена как hidden symbol) вместо новой xstat в
libclntsh.so. Она будет использоваться если пр компиляции добавить флаг
-O3 но проще создать заглушку
----libstat.so------------
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char * file, struct stat * buf) {return __xstat(3,file,buf);}
-----------------
gcc -O2 -shared -fpic -xc libstat.c -o /usr/lib/libstat.so
6. Создать пользователя для ПО Oracle. Под root не ставится. Есть
владелец ПО и две группы члены которых могут входить в базу с консоли
без пароля. Обычно создают одну группу, так как с консоли сейчас простые
пользователи не входят.
groupadd -g 500 dba
useradd oracle -u 500 –g dba –G root -s /bin/bash
7. вставить переменные окружения в профиль oпользователя oracle
export LD_PRELOAD=/usr/lib/libcwait.so:/usr/lib/libstat.so:/usr/lib/libctype.so
export LD_ASSUME_KERNEL=2.4.19
Oracle местами использует устаревшие Sun JDK (1.1.8 и 1.3.1) версии до
1.4.1, они несовместимы с новой реализацией нитей Native POSIX Thread
Library (NPTL) в /lib/tls. Библиотека обеспечивает бинарную
совместимость с предыдущей реализацией LinuxThreads.
Если приложение не может нормально работать с NPTL, его можно запустить
с использованием старой реализации LinuxThreads, установив следующую
системную переменную:
LD_ASSUME_KERNEL=<версия ядра>
Допустимы следующие значения версии ядра:
Текущая, можно посмотреть командой
eu-readelf -n /lib/tls/libc-2.3.4.so, например 2.4.25
2.4.1 - Linuxthreads с плавающими стеками (floating stacks)
2.2.5 - Linuxthreads без плавающих стеков
Можно вместо профиля также напрямую выловить все файлы вида
jre/1.1.8/bin/.java_wrapper jre/1.3.1/bin/.java_wrapper и вставить в них
export LD_ASSUME_KERNEL="2.4.19"
сакральный смысл числа "19" в источниках не раскрывается, скорее смысла
нет, можно и "1" ставить
8. В /etc/profile добавить
a) PATH=$PATH:/sbin:/usr/sbin
там лежит fusers, она нужна утилите opatch
b) umask 022
чтобы создаваемые файлы могли читаться группой
проверить командой umask -S
выдаст u=rwx,g=rx,o=rx
c) если не установлена переменная DISPLAY установить хоть что-то
export DISPLAY=ip:0.0
переменная должна быть установлена хоть на что-то иначе не запустится Apache из-за JServа (обойти можно правкой конфигурации)
d) If a connection attempt fails, re-set the DNS parameters in the /etc/resolv.conf file on each server node to the following values:
options attempts:5
options timeout:15
поставить в /etc/profile
ulimit -l 1000000 -s unlimited -u 1000000 -c 0
ulimit -n 1000000 (должно быть число)
снимает ограничения для программ запускаемых из шеллов
иначе при распаковке больших архивов или работе процессы сбойнут.
Если стоит pam... то в файл /etc/security/limits.conf добавить:
oracle soft nofile 1000000
oracle hard nofile 1000000
oracle soft nproc 1000000
oracle hard nproc 1000000
oracle soft memlock 8000000 #больше чем памяти
oracle hard memlock 8000000 #больше чем памяти
oracle soft stack 8000000 #должно быть больше чем памяти
oracle hard stack 8000000 #должно быть больше чем памяти
g) в графическом режиме проверить echo $LANG, должно выдать en_US если в
конце UTF8 то 2 файла из /etc/profile.d/ переименовать, а переменную
задать например в /etc/profile иначе будут глюки вроде невозможности
сохранить perferred credentals в OEM
10. Так как в Linux есть тяжкое наследие unixoв то удаленной консоли в
нем нет (удаленно подсоединиться к консоли сервера :0). Можно установить
x11vnc-0.7.2-1.2.el4.rf.i386.rpm и отключить автозапуск графики. На
клиентский компьютер установить например vnc-4_1_1-x86_win32.zip зайдя
по ssh на сервер запустить "startx &" установить DISPLAY и дать команду
"x11vnc -display :0 &".
Чтобы буквы выглядели достойно нужно отключить в настроках фонтов
смазывание. Эту технологию смазывания вставляют по умолчанию во все
дистрибутивы.
11. дистрибутив Applications можно скачать с
http://edelivery.oracle.com/ . Вместо StartCD дучше скачать последнюю
версию
http://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=4159029
(или там же по ссылке самую свежую версию) 221Мб и запустить rapidwiz (в
файле doc/r11510ins.pdf есть инструкция по установке). webmin занимает
10000 порт и у Applications один из процессов по умолчанию приписан к
нему, поэтому при установке просто указать в списке портов другой порт
или выбрать сдвиг портов. Ставить всё под одним и тем же пользователем
oracle группа dba и в одну и ту же директорию (ORACLE_BASE) /home/oracle
Желательно до установки скопировать дистрибутив на отдельный жесткий
диск, так как файлов тысячи с DVD ставится очень долго - головка привода
скачет. Если места или диска нет, все равно скопировать те DVD, в
которых тысячи файлов: oraiAS, oraApps, oraNLS. Структура каталогов:
/Stage11i/StartCD/Disk1 (можно убрать директории с JRE от других операционок.
Для Linux две версии JRE - обе к сожалению нужны)
oraDB/Disk1-3
oraAppDB/Disk1,18-24 для PROD (из Disk1 можно убрать содержимое
директории stage); для Vision наоборот Disk1-Disk17
oraiAS/Disk1-4
oraApps/Disk1-8
oraNLS/RU/Disk1 (требуется если в rapidwiz выбрать поддержку русского языка)
всё это добро занимает 26-31Гб.
12. постинсталляционные действия 277295.1 п4.1
a) запустить ". APPSORA.env" (методы запуска скриптов в Linux
периодически меняются - это маленькое развлечение программистов
сообщества) и adadmin выбрать Maintain Applications Database Entities
submenu. Then, run the Maintain Multi-lingual Tables task. иначе при
заходе с русской страницы содержимое будет пустым
b) apply dg11510nls.drv for each additional language. This driver is
located in the $AU_TOP/admin/driver/<LANG> directory
13. Поставить авторасширение на табличное пространство APPS_TS_MEDIA -
туда грузится help, можно и на остальные.
14. погасить всё кроме базы и листенера и можно будет устанавливать
обновления. Чтобы база быстрее работала при обновлении можно
опционально:
a) на время установки CU2 можно добавить две группы журналов по 500Мб,
старые удалить. Желательно добавить на новом диске, чтобы быстрее CU2
ставился.
b) если база 9.2.0.5 то установить патч 3523919. Достаточно просто
скопировать vppdc.o в архив libvppdc.a и запустить скрипт из патча. Это
позволит работать performance manager напрямую с базой.
c) пока экземпляр остановлен в initPROD.ora оставить в control_files
путь только к одному файлу, остальные файлы удалить (они бесполезны).
После открытия экземпляра дать команду alter database backup controlfile
to trace и из директории на которую указывает параметр user_dump_dest
скопировать скрипт пересоздания controlfile на случай потери.
d) включить для базы aio 225751.1 (начиная с 10g включено по умолчанию).
make -f ins_rdbms.mk async_on
В initPROD.ora добавить filesystemio_options =asynch
(заметка хотя он и не нужен - To enable direct I/O support: Set
filesystemio_options = directio or setall For Oracle9i you need to
download Abstract: DIRECT IO SUPPORT OVER NFS)
e) создать в $OH/dbs файл orapwPROD командой
orapwd file=orapwPROD password=oracle
и установить remote_login_passwordfile=EXCLUSIVE, чтобы можно было
управлять базой с рабочего десктопа Windows (sqlplus в Linux убог). Еще
потребуется в sqlnet.ora убрать или отредактировать ограничение на
подсоединение к базе (tcp.validnode_cheсking), вставить пароль на
листенер passwords_PROD (чтобы его удаленно не гасили) и поменять пароли
пользователям базы (например SYSTEMу). Если важна безопасность можно
этого не делать. потом открыв инстанс поменять пароль SYS чтобы
синхронизировать с файлом паролей:
sqlplus '/ as sysdba'
alter user sys identified by oracle;
f) на время установки CU2 - чтобы побыстрее ставился установить
параметры в 9.2.0/dbs/initPROD.ora
shared_pool_size=310000000 #CU2 использует 307Мб
shared_pool_reserved_size=48000000 #CU2 использует 45Мб
undo_retention=240 #в кэше буферов не нужна куча блоков от этих сегментов
fast_start_mttr_target=300
pre_page_sga=true
g) db_cache_size=1550M # по умолчанию в сумме SGA д.быть не больше 1.8Гб
больше нужно только на время установки патчей для быстроты. Если памяти
на компьютере больше 2Гб имеет смысл изменить mapped base (по умолчанию
0x50000000, меняется на 0x15000000).
Для этого установить для 9.2.0.5 патч 3566570 на чисто остановленной
базе, дальше
cd $ORACLE_HOME/rdbms/lib
genksms -s 0x15000000 >ksms.s
make -f ins_rdbms.mk ksms.o
make -f ins_rdbms.mk ioracle
кэш буферов тогда можно будет сделать 2150M (в сумме SGA уже не больше
2,7Gb на простом ядре и 3,7Gb на hugemem) если при запуске идут ошибки,
то может остаться сегмент и тогда его нужно будет удалить из памяти:
ipcs - список сегментов, удалять ipcrm -s <shmid>
h) db_file_multiblock_read_count=128 # не должны превышать параметры
ядра KIO_MAX_ATOMIC_IO из /usr/src/linux/include/linux/iobuf.h (обычно
стоит 1Мб)
15. 237425.1 если oemapp console выдает ошибку
java.lang.NullPointerException at oracle.ewt.lwAWT.BufferedApplet.<init>(Unknown Source)
проблема с DISPLAY или был дан su (мешается pam - его суют во все
дистрибутивы c гиморными настройками, можно поставить в
/etc/pam.d/xserver
auth sufficient pam_rootok.so
account required pam_permit.so
auth sufficient pam_permit.so).
пример скрипта для запуска базы данных
export PATH="${ORACLE_HOME}/bin:${PATH}"
su oracle -c $ORACLE_HOME/bin/sqlplus /nolog <<EOF
connect /as sysdba
startup
EOF
su oracle -c "$ORACLE_HOME/bin/lsnrctl start"
16. запуск applications:
можно создать скрипты в домашнем каталоге oracle и вызывать их ". db"
или ". app" или "./stopall". Пример:
app
#!/bin/bash
unset PATH
export PATH=/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/sbin:/sbin
. /home/oracle/prodappl/APPSORA.env
db
#!/bin/bash
unset PATH
export PATH=/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/sbin:/sbin
. /home/oracle/proddb/9.2.0/PROD_prod.env
startall
/home/oracle/proddb/9.2.0/appsutil/scripts/PROD_prod/adlnctl.sh start PROD
/home/oracle/proddb/9.2.0/appsutil/scripts/PROD_prod/addbctl.sh start
/home/oracle/prodcomn/admin/scripts/PROD_prod/adstrtall.sh apps/apps
stopall
/home/oracle/prodcomn/admin/scripts/PROD_prod/adstopall.sh apps/apps
/home/oracle/proddb/9.2.0/appsutil/scripts/PROD_prod/addbctl.sh stop immediate
/home/oracle/proddb/9.2.0/appsutil/scripts/PROD_prod/adlnctl.sh stop PROD
17. установка обновлений системы кумулятивный апдейт "CU" (CU2 для
11.5.10 316366.1) обновляет с указанной версии.
Сначала запустить только базу с листенером и установить переменные окружения
. /home/oracle/prodappl/APPSORA.env
запустить adadmin.sh, зайти в изменение режима и установить mainteinance mode
установить программой adpatch (запустить из директории патча и на
последний вопрос об имени файла указать u4337683.drv) AD Minipack I.2
4337683 (233044.1 пункт 5) и его русскую версию как написано в
readme.txt к этому патчу.
Из патча 4297568 взять файл libcplex8.a и положить к остальным (они уже есть)
Установить Release 11.5.10.2 Technology Validation Utility 4318672 12Мб
и его русскую версию 23К.
Установить 3460000 (20 часов большая часть работа с диском на файлах
пространства SYSTEM при компиляции пакетов - поэтому кэш буферов
желательно побольше) и его русскую версию (15 часов на P2.4ГГц -
компиляция форм).
Если при установке возникает баг 4548737: В таблицу
ENG.ENG_CHANGE_ORDER_TYPES_TL вставляются скриптом engupscr.sql (строка
310) 3 строки с пустым полем. Решение:
update ENG.ENG_CHANGE_ORDER_TYPES
set change_order_type = 'Item Attribute Changes'
where change_order_type_id = 12
and change_order_type is null
and type_classification = 'REVISED_LINE';
update ENG.ENG_CHANGE_ORDER_TYPES
set change_order_type = 'Item AML Changes'
where change_order_type_id = 13
and change_order_type is null
and type_classification = 'REVISED_LINE';
update ENG.ENG_CHANGE_ORDER_TYPES
set change_order_type = 'Item Attachment Changes'
where change_order_type_id = 14
and change_order_type is null
and type_classification = 'REVISED_LINE';
или убрать NOT NULL до установки патча, а потом руками вставить значения
для CHANGE_ORDER_TYPES_ID=12,13,14. Значения брать в той же таблице из
таких же строк только для языка US, пустые строки для языка RU.
Если не успеть убрать NOT NULL и пишется что worker failed, то в
соседнем окне запустить adctrl и во 2 пункте fix status. После этого
worker повторит сбойнувшее задание.
Дальше компилируются отчеты и если возникает проблема с "FABAL.pll и
FARSV.pll", то установить openmotif21 и продолжить.
Если закрыть окно, то часто продолжить установку патча не удастся -
воркеров клинит и снять их не удастся, тогда можно начать установку
патча заново.
18. зайти в http://localhost:8000/servlets/weboam/oam/oamLogin как SYSADMIN/SYSADMIN
a) Site Map ->
b) License Manager ->
c) Products ->
d) Show more options
e) выбрать License Applications Product и нажать Continue ->
f) нажать Выбрать всё, Next -> Submit -> OK
19. установить Online Help - патч 3275245 (17 часов) в том числе русскую
версию (10 часов) при этом с Applications можно работать. После
установки всех патчей запустить adadmin.sh, зайти в изменение режима и
убрать mainteinance mode
цель:
1) фактическая: снять ограничения - параметры ставятся по максимуму для официально поддерживаемых дистрибутивов
2) формальная: значения рекомендованы Oracle
глубокого смысла нет