The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Руководство по установке Oracle 8.1.x на FreeBSD 4.x (oracle freebsd install howto)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: oracle, freebsd, install, howto,  (найти похожие документы)
Date: Sun, 16 Jun 2002 19:50:42 +0000 (UTC) From: "Stas A. Kornienko" <korn@lglobus.ru> Newsgroups: fido7.ru.unix.bsd Subject: Руководство по установке Oracle 8.1.x на FreeBSD 4.x Путем долгих страданий и извращений все-таки получилось по-честному установить Oracle 8.1.7 на FreeBSD 4.2 - настоящей установкой, без копирования установленных бинарников с Linux'а. Вот руководство (доступное также на http://pm.stu.lipetsk.ru/~oracle): Установка Oracle 8.1.x на FreeBSD 4.x ----------------------------------------- Всем известно мнение, что установить Oracle версий 8.1.x на FreeBSD легче всего установкой на Linux, и дальнейшим копированием уже установленных файлов. Это объясняется тем, что трудностей от изучения Linux'а значительно меньше, чем трудностей от установки Oracle на FreeBSD. Но поскольку, мы пионеры, легких путей не ищем, то в этой статье я поделюсь собственным двухнедельным опытом честной установки Oracle 8.1.7 на FreeBSD 4.2 Об установке Oracle 8.0.x на FreeBSD уже рассказывается даже в HandBook'e. Главным отличием установки Oracle 8.1.x от 8.0.x является инсталлятор на Jave. Любому человеку, который сталкивался с установкой 8.1.x, эта искусственно разрекламированная, якобы многоплатформная, система разработки покажется монстроидальным пожирателем памяти, ресурсов и всего, что только можно. Не понятно, из каких соображений, разработчки Oracle стали использовать Java - о какой мультиплатформенности может идти речь, если дистрибутивы для Windows и Linux у них все равно разные, а основным камнем предкновения в установке Oracle на другие Unix-платформы стал как раз этот неуклюжий, монстроидальный, дико тормозной и прожорливый инсталлятор. Ознакомившись с содержанием конференций, единственным материалом, который я нашел оказалась статья на японском: http://www.tokuda.net/FreeBSD/oracle816.html Зарядившись оптимизмом, и вооружившись переводчиком с AltaVist'ы, изучил ее и принялся следовать данным в ней указаниям. Однако, столкнулся с рядом проблем, затянувшими процесс установки на две недели. Если честно, то я уже почти отчаялся когда-либо завершить процесс установки, пока, наконец, случаяно не нашел решение одной из стоявших проблем. Чтобы с вами подобного не было, я поделюсь собственным опытом борьбы с Oracle и его инсталлятором. Ну довольно лирики, теперь о конфигурации системы: - Сервер IBM, Pentium-III, 256+128Mb ОЗУ. - Операционная система FreeBSD-4.2 Release, самая стандартная, cvs-ом не обновлялась. - Дистрибутив Oracle: linux81701.tar - 549.867.520 байт --------------------------------------- Шаг 1. Устанавливаем эмуляцию Linux'а. 1) Для этого из-под root'а устанавливаем два пакаджа: linux_base и linux_devtools matrix# pkg_add linux_base-6.1.tgz matrix# pkg_add linux_devtools-6.1.tgz 2) Загружаем модуль поддержки linux'а в ядро: matrix# kldload linux (не спешите прописывать linux_enable="YES" в /etc/rc.conf, его скорее всего, оттуда придется убрать..) 3) Теперь пришло время объяснить, как работает "линуксолятор". Когда запускается программа, являющаяся бинарным файлом linux'а, во-первых, линуксолятор обеспечивает поддержку системных вызовов linux'а, а во-вторых, когда программа обращается к какму-либо файлу, например /etc/passwd, линуксолятор сначала подставляет в начало строчки путь окружения linux'а: /compat/linux/etc/passwd, и проверяет наличие такого объекта файловой системы. Если он есть - программа использует именно этот объект, если его нет - путь к файлу остается без изменений: /etc/passwd. За счет того, что форматы основных файлов конфигурации между FreeBSD и Linux одинаковы, окружение linux не дублирует в себе настройки системы, и linux-приложения прекрасно используют файлы вроде /etc/passwd из конфигурации FreeBSD. Однако инсталлятор Oracle использует информацию о разделах файловой системы, которую ищет в /etc/mtab. Изначально такого файла нет, поэтому его нужно создать: matrix# cp /etc/fstab /compat/linux/etc/mtab Как вы уже догадались, когда linux-приложение запросит файл /etc/mtab, "линуксолятор" сначала подставит путь /compat/linux/etc/mtab, где и найдет требуемый файл. Очень удобно, ведь не приходится замусоривать собственный /etc файлами, необходимыми только linux-приложениям. 4) Теперь нужно разбраться с временными каталогами. Общераспостраненно их в Unix'ах три: /tmp, /usr/tmp, /var/tmp. Но поскольку мало кто выделяет много места под файловые системы / и /var, то частенько какие-то из этих объектов файловых систем являются не отдельными каталогами, а всего лишь символьными ссылками. Когда я первый раз пытался производить установку, во время инициализации набора компонентов, подлежащих установке, происходил сбой: "Problem opening staging area", и вылетало совершенно нелепое предложение проверить еще раз правильность указания исходного каталога. Ни в руководстве на tokuda.net, ни в Usenet-конференциях, я не смог найти описания подобной проблемы. Однако, нечаянно я заметил что если не закрывать окошко с сообщением об ошибке, то в /tmp/OraInstall остается файлик с именем temp0. Последовав доброму совету использовать ktrace для выяснения причин подземных стуков, я обнаружил весьма забавную картину: matrix# kdump | grep temp --------------------------------------------------- 47007 jre NAMI "/compat/linux/tmp/OraInstall/temp0" 47007 jre NAMI "/tmp/OraInstall/temp0" 47007 jre NAMI "/tmp/OraInstall/temp0" 47007 jre NAMI "/compat/linux/var/tmp/OraInstall/temp0" 47007 jre NAMI "/var/tmp/OraInstall/temp0" Выходит, инсталлятор создавал этот файлик в /tmp/OraInstall, а искал в /var/tmp/OraInstall? Поэтому, прежде чем начинать установку, давайте разберемся с местами временного хранения файлов. А чтобы линуксолятор не смог напутать программам пути, проверяем, чтобы таких объектов файловой системы, как /compat/linux/tmp, /compat/linux/usr/tmp, /compat/linux/var/tmp вообще не было. То есть не было с такими именами ни директорий, ни символьных ссылок на другие директории. matrix# rm /compat/linux/tmp matrix# rm /compat/linux/usr/tmp matrix# rm /compat/linux/var/tmp По умолчанию паккадж linux_base-6.1 создает /compat/linux/usr/tmp, который делает символьной ссылкой на /var/tmp. Мне кажется, это совершенно излишне. Когда всех трех выше перечисленных объектов файловой системы в /compat/linux/... существовать не будет, любая попытка линуксолятора подставить в путь /compat/linux закончится неудачей, в результате чего будут использоваться оригинальные каталоги /tmp, /var/tmp и /usr/tmp вашей системы. Но это не все. Теперь нам нужно, чтобы /tmp, /var/tmp и /usr/tmp представляли один и тот же каталог. Определитесь, на какой файловой системе у вас больше всего места: на /, на /var или на /usr? У меня на /usr. Тогда /usr/tmp оставляем реальным каталогом, а /tmp и /var/tmp - символьными ссылками на него. Если содержимое tmp-ов не жалко, это может выглядить так: matrix# rm -r /var/tmp/* matrix# ln -s /usr/tmp /var/tmp matrix# rm -r /tmp/* matrix# ln -s /usr/tmp /tmp После этого процесса могут пострадать запущенные программы, наподобие mysqld, которые могут держать в /var/tmp свои файлы-сокеты. Так что если полная работоспособность системы критична, то можно перегрузить сервер, не додидаясь пересборки ядра.. (а она еще предстоит). 5) Следующим этапом является установка JRE (Java Run-time Environment). Она необходима для того, чтобы инсталлятор Oracle вообще запуститься и функционировать как программа. Вообще говоря, установочный комплект Oracle содержит в себе родную JRE, однако она обладает паталогической несовместимостью с FreeBSD (да и с некоторыми Linux'ами, как оказалось). Поэтому мы установим Blackdown JRE 1.1.8: jre118_v3-glibc-2.1.3.tar.bz2 - 7.156.122 байт доступен этот продукт с www.blackdown.org или файловым поиском через www.filesearch.ru Поскольку запакован этот архив bzip2, то для распаковки необходимо установить этот архиватор (если он у вас до сих пор не установлен): matrix# pkg_add bzip2-1.0.1.tgz затем распаковываем архив с JRE: matrix# cd /compat/linux/usr matrix# tar --bzip2 -xvf /tmp/jre118_v3-glibc-2.1.3.tar.bz2 В каталоге /compat/linux/usr должен появиться подкаталог jre118_v3. Создадим внутри него каталог linux, который будет являться символьной ссылкой на /compat/linux/usr/jre118_v3. matrix# cd /compat/linux/usr/jre118_v3 matrix# ln -s . linux Это пригодится когда мы будем пытаться подменить родную Oracl'ову JRE Blackdown'овской. 6) Утилита arch используется в linux для вывода информации об архитектуре машины. Ни в окружении /compat/linux/..., ни во FreeBSD подобной утилиты нет. Поэтому создаем ее сами, благо это дело не хитрое: matrix# echo echo i686 > /compat/linux/bin/arch matrix# chmod +x /compat/linux/bin/arch 7) Вместе с JRE нам еще потребуется JDK. Blackdown JDK 1.2.2 адаптированная для FreeBSD есть в портах: /usr/ports/java/linux-jdk. Однако я использовал обновленную версию этого порта. Для этого с ftp вытаскиваем весь каталог (вместе с подкаталогами): ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports-stable/java/linux-jdk и кладем его в /usr/ports/java/linux-jdk вместо оригинального. Решать, будете ли вы использовать обновленную версию порта, или ограничитесь имеющейся в вашей системе - решать вам. Могу только предостеречь, что вообще-то требуется Blackdown JDK 1.1.8, но то, что есть в linux-jdk (Blackdown JDK 1.2.2) вроде проблем не вызвало. Остальные порты, вроде linux-jdk13, linux-jdk14, linux-sun-jdk12, linux-blackdown-jdk13, linux-ibm-jdk13 сюда явно не подходят. Итак, автоматически достаем порт из Интернет, компилируем и устанавливаем: matrix# cd /usr/ports/java/linux-jdk matrix# make install Если все прошло успешно, порт будет установлен в /usr/local/linux-jdk1.2.2 Но это еще не все, на него нужно создать символьную ссылку: matrix# ln -s /usr/local/linux-jdk1.2.2 /compat/linux/usr/local/java 8) Для работы Oracle нужно создать отдельного пользователя и группу. Пусть это будут oracle:dba. На всякий случай я еще создал группу oinstall, и добавил в нее пользователя oracle. Таким образом, в файл /etc/group у меня добавились две строчки: dba:*:94: oinstall:*:95:oracle целочисленные идентификаторы групп GID у вас могут быть другими. Теперь создаем пользователя oracle - с помощью команды vipw добавляем в файл пользователей следующую строчку: oracle:*:94:94::0:0:Oracle Server:/usr/oracle:/compat/linux/bin/bash первая цифра 94 означает UID пользователя oracle и может быть любой, вторая - это GID группы dba. Устанавливаем для пользователя oracle пароль (в процессе установки нам будет приходиться login'иться под ним с консоли): matrix# passwd oracle 9) Создаем пользователю oracle домашний каталог: matrix# mkdir /usr/oracle Создаем профиль пользователя oracle и устанавливаем в нем все необходимые переменные окружения: matrix# vim /usr/oracle/.profile ORACLE_BASE=/usr/oracle; export ORACLE_BASE ORACLE_HOME=/usr/oracle; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH ORACLE_SID=ORCL; export ORACLE_SID PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin:/compat/ linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/bin export PATH Передаем домашний каталог со всем его содержимым в распоряжение пользователю и группе: matrix# chown -R oracle:dba /usr/oracle 10) Распаковываем установочный комплект: matrix# mkdir /usr/orainstall matrix# cd /usr/orainstall matrix# tar -xfv /tmp/linux81701.tar Распаковка дистрибутива oracle - достаточно длительный процесс. И пусть вас не смущает, что это действие производится, как и все предыдущие, из-под root'а - пользователю oracle совершенно не нужно иметь права собственности на свой установочный комплект. После распаковки оказалось, что дистрибутив представляет собой каталог Disk1, внутри которого уже находятся каталоги doc, install locks, patch, response и stage. Скорее всего, расположение каталогов может быть и другим, в зависимости от версии дистрибутива, но смысл всех действий скорее всего будет тем же самым. Созданный каталог /usr/orainstall вместе с распакованным дистрибутивом после установки Oracle можно будет удалить. 11) Вносим исправления в установочный комплект. Сначала редактируем файл runInstaller: matrix# cd /usr/orainstall/Disk1 matrix# cp runInstaller runInstaller.org matrix# vim runInstaller ищем строчку, содержащую THREADS_FLAG=native и заменяем ее на THREADS_FLAG=green Теперь правим oraparam.ini matrix# cd /usr/orainstall/Disk1/install matrix# cp oraparam.ini oraparam.org matrix# vim oraparam.ini ищем строчку JRE_LOCATION=../stage/Components/oracle.swd.jre/1.1.8/1/Da taFiles/Expanded/linux и заменяем ее на JRE_LOCATION=/compat/linux/usr/jre118_v3/linux (обратите внимание на взаимное соответствие окончаний обоих строчек: ...Expanded/linux -> /compat/linux/usr/jre118_v3/linux). 12) Теперь самое интересное - изменение параметров ядра. В статье на tokuda.net говорится, что установка Oracle не требует изменение параметров ядра, и в них нуждается только сам Oracle. К сожалению, это от части не верно. Пока я не догадался, какие опции надо вкомпилировать в ядро, установка Oracle у меня постоянно вылетала по 11 сигналу, с сообщением segmentation violation. Причем это происходило именно тогда, когда указатель процесса копирования файлов достигал значения 35% Запущенный при этом top показывал прямо-таки дикое пожирание памяти установщиком, а вываливание примерно тогда, когда объем отъеденной памяти превышал 750Mb - хотя, если верить top'у, swap был использован всего на 55% Использование ktrace ясности не внесло, правда получалось так, что в течении всего этого времени установщик Oracle честно копировал разные файлы, и никаких признаков зацикливания не обнаруживал. Более того, сравнение нескольких неудачных попыток установки показало, что она даже вылетала на копировании разных файлов: те файлы, которые оказались для установщика последними во второй попытке, в первой были успешно преодолены, и выброс по SIGSEG #11 произходил чуть позже. К своим 256+128Mb ОЗУ и 512Mb swap я добавил еще 1000Mb swap-file, но ситуация не изменилась: установщик Oracle по-прежднему вываливался на 750Mb памяти, разве что swap теперь был заполнен не на 55% а на 18% Ни шаманство, ни танцы с бубном не давали результата, пока в качестве уже которой по счету "последней попытки" не были внесены изменения в ядро, оказавшиеся критическими: Во-первых, я увеличил maxusers с 32 до 64 - однако, если верить param.c на нашу ошибку это влиять не должно. Во-вторых, я добавил строчку options MAXMEM="(1024*1024)" - это тоже вроде ничего не дает, так как BIOS не врал, и top объем оперативной памяти всегда показывал правильно. И наконец, третье изменение, которое, по моему мнению, и является ключом к разгадке причины возникновения signal 11 и segmentation violation. Я добавил: options MAXDSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)" В описании этих параметров в ядре LINT говорится следующее: "Некоторые приложения могут выходить за 128Mb предел, который во FreeBSD изначально заложен. Используйте эти параметры, чтобы увеличить этот предел. MAXDSIZ - это максимальное значение, которое может принимать этот предел, DFLTDSIZ - его значение по умалчанию. Задав значение DFLTDSIZ меньше MAXDSIZ, вы после сможите для некоторых процессов поднять значение этого предела до MAXDSIZ, с помощью переменных Shell" Не совсем понятно, про какой предел идет речь. Самое интересное, что в этом абзаце ни слова не сказано про "память" или "memory". Такое ощущение, что эта опция относится не к объему памяти, а к чему-то иному. По умолчанию пределом этого чего-то является 128Mb, в ядре LINT продемонстрированно, как сделать этот предел равным 256Mb, я же с русским размахом установил его равным 1024Mb. Ничего, работает.. Итак, давайте внесем изменения в конфигурацию вашего ядра. У меня это выглядит так: matrix# cd /sys/i386/conf matrix# vim ./MATRIX В ядро добавим следующие строки: options SYSVSHM #SystemV-style shared memory options SYSVMSG #SystemV-style message queues options SYSVSEM #SystemV-style semaphores (по умолчанию эти три строчки включены в ядро GENERIC FreeBSD-4.2Release) options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61 (это параметры поддержки SystemV) pseudo-device vn 1 (это нужно для создания swap-файла) После всех этих добавлений компилируете и устанавливаете новое ядро. matrix# cd /sys/i386/conf matrix# config MATRIX matrix# cd ../../compile/MATRIX matrix# make depend matrix# make matrix# make install Но сервер не перегружаем! 13) Сейчас я расскажу, как создать и подключить swap-файл. Вообще, использовать его или нет, решать вам. Если суммарный объем ОЗУ и swap'а на Вашем сервере составляет около 1 Gb, то, вероятно, можно обойтись без swap-файла. В противном случае я бы посоветовал увеличить swap за счет создания дополнительной swap-партиции или swap-файла. К сожалению, неразмеченного места на диске под swap-партицию у меня не оказалось, поэтому расскажу как создать swap-файл. Сначала создаем одно vn (virtual-node) устройство: matrix# cd /dev matrix# sh ./MAKEDEV vn0 Теперь создаем сам файл подкачки размером 1 Gb: matrix# dd if=/dev/zero of=/usr/swap0 bs=1024k count=1024 Устанавливаем права на него: matrix# chmod 600 /usr/swap0 Подключаем созданный файл подкачки. Для этого в /etc/rc.conf дописываем строчку: swapfile="/usr/swap0" После чего наконец-то перегружаем сервер: matrix# reboot 14) После перезагрузки вызываем top и смотрим доступный объем swap'а и ОЗУ, тем самым убеждаясь, что наш swap-файл успешно подключен к системе. Теперь вроде все готово к установке.. Снова загружаем поддержку linux'а: matrix# kldload linux Login'имся с обчыной текстовой консоли пользователем Oracle. Пользователь должен без проблем зайти в систему, sell'ом у него будет linux'овый bash, а приглашение командной строки будет иметь вид: [oracle@matrix oracle]$ Убедитесь, что все опеременные окружения, которые мы описали в .profile выстанавлены: [oracle@matrix oracle]$ set | more После чего выходим из-под пользователя oracle. 15) Теперь запускаем XWindow. Если для установки 8.0.5 он был нужен чтобы в xterm запустить текстовый установщик, который плохо понимал termcap, и напрочь отказывался обеспечивать перемещение по своим красивым менюшкам, то теперь весь установщик написан под GUI. К слову сказать, никаких KDE и прочих оконных менеджеров не понадобится. Голые X-ы, со стандартным VGA прайвером 640x480 и 16 цветов вполне подойдут. И хотя окно установщика будет размером строго на весь экран, вылазанья за него отдельных частей окна замечено не было. matrix# xdm 16) В X-ах заloginиваемся под пользователем Oracle. Первым окном, которое появится, будет окно xterm'а с приглашением вида: bash$ Это тот же линуксовый bash, однако в xterm'е он запущен не в роли login shell'а, поэтому он даже не удосужился прочитать из .profile переменные окружения, что, впрочем, легко проверить: bash$ set | more Установленных перменных ORACLE_BASE и ORACLE_HOME мы здесь не увидим. Для того, чтобы bash считал из .profile значения этих переменных, его необходимо запустить в роли login shell'а. Для этого прямо в xterm'e набираем: bash$ bash -login Приглашение сразу принимает привычный вид [oracle@matrix oracle]$, а выполнив команду: [oracle@matrix oracle]$ set | more убеждаемся в том, что значения всех переменных из .profile выставлены корректно. Теперь отключаем локализацию языка. Установщик Oracle распознает текущее значение переменной языка, и в зависимости от этого использует различные строки для своего интерфейса. С одной стороны это хорошо, потому как видеть сообщения о процессе установки на русском языке приятно, с другой стороны в usenet неоднократно пробекали статьи, что установщик невсегда корректно справляется с подобной языковой подстановкой. Поэтому, чтобы быть уверенным, что ошибки установки никак не связаны с нашей национальной принадлежностью, снимем значение переменной окружения LANG: [oracle@matrix oracle]$ unset LANG 17) Теперь приступим к самой части, запускаем установщик. Все в том же xterm'е, от имени пользователя oracle, наберите: [oracle@matrix oracle]$ cd /usr/orainstall/Disk1 [oracle@matrix oracle]$ ./runInstaller И если судьба сжалится над вами, и случится чудо, то вы увидите сначала сообщение "Inintializind Java Virtual Machine from /compat/linux/usr/jre118_v3/bin/jre. Please wait..", а затем и плавно возникающую эмблему Oracle Installer, прожорливого монстра, написанного на языке Java. Если эмблемки не появилось, а runInstaller вывалился с сообщением об ошибке, посторайтесь проанализировать это сообщение. Скорее всего это связано с инициализицией JRE. Проверьте верно ли была произведена коррекция файлов runInstaller и oraparam.ini, привильно ли распакована JRE. Вообще говоря, наша версия JRE использует glibc 2.1.3, а паккадж linux_base-6.1 от FreeBSD 4.2Release содержит glibc 2.1.2, однако я еще ни разу не слышал, чтобы с этим возникали проблемы. По крайней мере у меня Java-установщик заработал с первой попытки, и в этом отношении проблем удалось избежать. Поэтому, если runInstaller у вас не запустился, проверьте пути к JRE, права на /usr/oracle и временные каталоги, постарайтесь разобрабраться в причинах ошибки. Все же, надеюсь, такой проблемы не возникнет. 18) Итак Oracle Installer запущен. Первый экран (Welcome) пропускаем. На втором экране нам предлагают выбрать source и destination locations. Если все переменные окружения назначены правильно - в этих полях уже будут стоять соответствующие директории. Нажимаем Next. Теперь Oracle инсталлер будет некоторое время загружать "Product information", после чего спросит UNIX Group Name - группу пользователей которые будут иметь права на добавление компонентов Oracle. Поскольку ничего добавлять я не собираюсь (да и не знаю, что еще из монстроидальных продуктов Oracle можно портировать на FreeBSD), то я выбрал группу dba. Вероятно, с таким же успехом можно было использовать группу oinstall. Теперь системе потребуется сохранить информацию об Oracle Inventory - месте, где будет храниться информация об установленных продуктах Oracle и о той группе, которая имеет право изменять эту информацию. Для этого ей нужны администраторские привелегии: она попросит запустить из-под root'а файл /usr/oracle/orainstRoot.sh. Переключитесь на текстовую консоль, зайдите root'ом и запустите этот файл: matrix# cd /usr/oracle matrix# ./orainstRoot.sh Это приведет к созданию файла /etc/oraInst.loc, содержащего всю необходимую информацию. Сама же Inventory-база будет находится в /usr/oracle/oraInventory. Заметьте, если переменные окружения (в частности, ORACLE_HOME) были бы не выставлены, Oracle Installer еще после первого бы шага спросил бы о том, где эту Inventory directory располагать. После вызова orainstRoot.sh вернитесь в X'ы, и нажмите Retry. Установщик спросит у вас, какой именно продукт вы хотите установить. Нужно выбрать Oracle 8i Enterprise Edition 8.1.7 (Oracle Management&Integration и Oracle Client нам не нужны), и нажать Next. Теперь вопрос каснется типа установки. Выбираем Typical (Minimal и Custom нам не подходят). Жмем Next. После чего установщик начнет собирать сведения об устанавливаемых компонентах: в правом верхнем углу окна появится индикатор, который начнет постепенно заполняться. Кстати, я заметил одну особенность: если X-приложение (по крайней мере Oracle Installer) чем-то очень сильно занято, а вам показывает безинтересный индикатор процесса, то все же не стоит переключаться в консоль для выполнения какх-то действий. Пару раз у меня вылетали X'ы во время таких переключений. Не знаю, чья это вина: X'ов, Oracle Installer'а или JRE, но по опыту могу сказать, что делать так не стоит. Оставьте на мониторе царствовать XWindow и Oracle Installer'а, а сами подключитесь telnet'ом с другой машины, чтобы следить за состоянием системы с помощью top'а. Следующим шагом (видимо в рамках процесса сборки сведений об устанавливаемых компонентах) оказался вопрос о Database Administrator Group и Database Operator Group. Я обе назвал dba, однако если есть желание разделить их привелегии, то создайте еще одну группу, не забудьте только включить в нее пользователя oracle. Следующим шагом система просит определить путь к JDK 1.1.8 По умолчанию он определен как /usr/local/java Помните, мы создавали символьную ссылку: /compat/linux/usr/local/java -> /usr/local/linux-jdk1.2.2 А помните, как работает линуксолятор? Правильно, когда Oracle Installer запрост путь /usr/local/java, линуксолятор сначала подставит /compat/linux/usr/local/java. А так объект файловой системы существует, и является символьной ссылкой на наш /usr/local/linux-jdk1.2.2 Не верите, что получится? Нажмите кнопку Browse.. Перед вами GUI'шное дерево, из которого наглядно видно, что по мнению Oracle Installer'а папка /usr/local/java содержит подпапки bin, demo, include, include-old, jre, lib. Убедились?! Тогда путь к JDK оставляем /usr/local/java, и нажимаем Next.. Global Database Name я ввел такое же как и SID: ORCL После чего список вопросов у установщика иссяк, и он наконец-то предложил перейти к действию: нажать кнопку Install. Мы ее тоже сейчас нажмем, но перед этим я добавлю, что по показанию top'а (запущенного, кстати, в telnet-сеансе с другой машины), jre сейчас даже в пассивном состоянии (отрисовав окошко и ожидая действий пользователя) использует около 19% ресурсов моего Pentium-III, и занимает уже 311Mb памяти! Сторонники Java, срочно посыпайте голову пеплом.. Ну что ж, с Богом: нажимаем кнопку Install.. 19) Индикатор копирования начинает медленно ползти.. А мы тем временем смотрим на показания top'а, и удивляемся, куда же этому jre столько памяти надо.. Около 35% индикатор на продолжительное время застревает, а затем достаточно быстро проходит остальные стадии. Что делается на этих 35% ответить затрудняюсь, могу сказать только, что после их прохождения объем памяти, который отъедает jre возрос с ~450 до ~850 Mb, а к концу установки составил ~1005 Mb. Кстати, те, кто устанавливал Oracle на Linux поделились, что всего при установке, jre расходует около 640Mb памяти, что все-таки меньше чем 1Gb на FreeBSD. Зачем jre нужно 1 Gb памяти, и что она с ним делает, я бы сам с удовольствием узнал. Может она дистрибутив туда записывает?.. ;) Итак, если процесс копирования файлов и пожирания памяти пройдет успешно, то в конце установки вы увидите уже знакомое сообщение, что установщику нехватает прав, чтобы запустить файлик /usr/oracle/root.sh, зайдите, мол, с консоли из-под root'а, и запустите его сами. Однако, прежде чем мы сделаем это, давайте посмотрим, что же там внутри у этого файла, и внесем необходимые исправления: В самом начале файла, и через еще две странички в его середине, прописываются пути к служебным программам Unix. Вот именно эти пути нам нужно и исправить. Вообще-то лучше проверить все эти пути самостоятельно, так как от версии к версии Oracle они добавляются.. я, например, сделал следующие исправления: В начале файла: CHOWN=/usr/sbin/chown TEST=/bin/test В середине файла: AWK=/usr/bin/awk CHOWN=/usr/sbin/chown GREP=/usr/bin/grep SED=/usr/bin/sed TEST=/bin/test после чего, запускаем файл: matrix# cd /usr/oracle matrix# ./root.sh После запуска скрипт спросит путь к каталогу local bin: Enter the full pathname of the local bin directory: [/usr/local/bin]: с предложенным /usr/local/bin нужно согласиться и молчаливо нажать Enter. 20) После того, как root.sh закончит свою работу, вернитесь к установке и продлжите ее. Следующим этапом будет автоматический запуск Configuration tools, в процессе которого некоторые утилиты успешно отработают (вы увидите напротив них галочки), а на запуске некоторых (а именно Oracle database Configuration Assistandt) система обломается. После чего на экран будет выведено сообщение: One or more tools have failed. It is recommended... Ничего страшного. Базу данных мы создадим вручную. Нажимаем OK в диалоге об ошибке, говорим Next, и затем, приняв поздравления об окончании установки, Exit. 21) Теперь вручную создаем базу данных. Заходим с текстовой консоли пользователем oracle: [oracle@matrix oracle]$ cd /usr/oracle [oracle@matrix oracle]$ mkdir orcl [oracle@matrix oracle]$ cd orcl [oracle@matrix oracle]$ mkdir ddl data pfile archive bdump cdump udump Затем берем этот файл: http://www.lglobus.ru/korn/orcl.tgz, или из UUE: begin 644 orcl.tgz M'XL(`$T,^SP``^U:ZV_;1A+/U_*OF'-0U"Y\,I^2B]3`T1+ML)$L0Z*+YKX( M%+FRB%"DRD<<WU]_,\N'2#W=0^0$/8X!2]KY[>S,[,[L+)>M"]?U+]X<E4`5 M.YH&;X!(7/O,?T!'[;3;HM;1V@"2*(F=-Z`=5ZV,TCBQ(X`W41@F^W!/<\;\ MUU#H=:G%YU^4G,B=MN+Y4<:0Q'+^):5=^R229+7#YU]6V^UL_J6VIKP!\2C: MK%$Q_V%D.S[;C7.G]FNH\]KT]A\74R^XB.?"<*1W^\9D;/:NAJ-N7V!?EF&4 MP*I9$"[2.+K(')7U^APM'B,??OT5C.&-$"_#T(=6L9K\\%%PPB!@3@)>D+`H ML'V!O)VD2PC"19@&"2QGGL_@"JJBP\CQ+SCCP@N\A+1I(4L0NB-#MPSHZ99^ MK8\-."'6B8!KJ#N\LT;#_HW9-V!D/(P-:ASH?Q"4&L<@:VK>9MZ-+?VNBVV7 M>4M_>)N!I/:J96`,KHT1=N3RW^OH!\L8P=BPX#==:H]_,\?$N=,M<WBG]_=! MAOJH^][\W4"I]+M0"G[:L-JU$YO_:[G3V4\P-O]M@*2)`XA8&C/JG.M*7V]' MPX=[D.!TAQR<`(G+.1>@0KO1,D>?Y<.*@_/5*/*^492_-(JZ-HKP3A!<+\Z7 M2KZ*PMD,5Z"7"`*M+.%;A\G?EO+\+W_#_*\J4IG_.Z*F\ORO:DW^?PTZ2OZ7 M=^?_?U5E(&H17]CN`F4YF!VP1RO^TW]79GI,Z?UKO?L!4RKFXSL+(A$P]V.J MOM>[!HP_CBUC((PM5/+6@%/SSK1,3,52^P/<&7]8_,O`I*_8&5,YI?;RAWCV M3M#[E+"W#3.\ZV-'5&5D#.#G&E55N!E6NO^\3H4=E0ZCZ[$H'=P"HFDL2M4] M`+<`OJ^!T#-N](>^!:754)HM7Q9VT[==AC^@90/3,GH`]UW+O",=43"Y8X>^ M\HOTE;\;?947Z:M\-_JJ+])7_0;Z'E[\&(#W./#HXXM6/Z%+8X6=54+"%LMM MUNXQ5M:*H.??*L9*VXVMV[JRHV(U="-F)U[P"+,PC2`*?7]J.Y\@9H\+%B3Q MALF[\Q;%\T8:*#-7)775YVQX;YF#K%E\P0SBE.W30-X([-?60-D(U=?60-T( MOF-HL&M?X<N@V%KV@.27@)27@-2#(-SK;FXR2&\TO-^&J,8$;KI@!VZ^^0(> M2Z(M@6#[N.%S)L3/,5!`8Y1'SY#84Y_%2]MA/.3>K2$1N`_<G!.^,N7UO_(- MZW]0.TI9_TNRS.M_66KJ_]>@H]3_RO]6_R^CT*'Z?R]H'N^'A$GDH%X<5(R> MY96+A1W8CRRJ]T7<TD^+WLMT.?5=WOG_(]?D\:\Y43+UX^514L"A^&]KJ_._ MI&CT1%CIR$W\OP8=)?[+U;0U!1PX5%C7_?&]B&42G2ZPYA]M'BQV'2[RGL+A M1ZQ</;%VQ)971RJ@&L\</`P@J^WP`")^(*GKIP_^Q+,L&L6B9N1@V'D&D43. MKAU`L(7.6X>2SE>?_SS^VTY$%=AQ*H"#^[]<V?]5NO^19:G=Q/]KT%'BOUA- MV\,_#UP>VBY;A+CTS1X&AGECXK'\^F/16$3;]@A?/7=8>[R`470[TC%H]7X? M[D?F[Y@&,%:M(9?;W#74*8__CA--,"=2X?/UQSAT_ZMU5(Q_6=4T1934;/]O M-_O_JU`1LT[$^`*@D,T>`_"P`FMR:_YF0E<?=_6>0?>L8VNDF[B-K3W-+)"G MQ2V@V8,-HCO24^V,KD0MN'OH]\L[0\NT4,86M*R>;:+U!^L]5@>;:$G>@J;+ M8;[Q5NAWNI+51_*I4NDAG!5=<&^^&1E&L55G+9BQ>M`I6VC?QT2#^WEIQ-9, MQ:E>,JRH?'PIYD7#BO):8J.]6E:LLRI%AKS.K-<;O-K('@E5YZ_T<`^G[[0R MWT#<R?T'2JD#2KL?C(]P:O;.8&V8A[%Y=XMV]8P_-A58<^JZ)^4UQAZ''O!K M13*Y=YL?<]KEYISV>+M`['-Z3C7?PYEP!N^^CXVFE;]H<<PQ_L+[7_@GT62I MBM2\__4:U-KRHLW7'N/`_J])'2G;_]N*(BMT_R]WZ/V_9O\_/KV%^BM6]!L] M$C@,L$B>>8]I9"=>&,#2CNP%PQH^1E!Q$S8I;\*NX)1?;IQGUQ?9AY)]J&=T M"DBPTX36&@>?;#^7YS@\F#N)?W(.!V`RAYT)`BGS&(5IX$[<=+&<N"Q.MKU5 M-B4N:H/5SEZ<PW%TB-F/2SE.P*II8D?.W/O,)OP--\0F4<JR!5YCDZ2)A/P3 M/W2X:Z\VI.;8DUK'61@M;!)\\F,R^3%N8?L)'F:FDRD*PIGP_D/OT5U*O\C4 M&.!D9><XG-(D#>@2LSJ%""GFXE+\X8>W,![@>0FQ%88JBL@8&#WS85#G2!IG M]?71K2&\K3)$L90]6:1^XF7:1<QV)PY_XP\'W!QN)U9J5U0X!%;D4JF58Z;I M;$975%RY^LCK`$U;-W@=H<AKAJ\#+D61(]J:=JZTQ7/\!=/GA*'+X[D=,7=" M!7<Q6XHFYOA"JRV@#%/3;`OJEQ*5*[<%@R<M^;*MBMF"=>;,^;0,\6`^X8?S MS[:?.0GG<(V?>`L6IGP^+FF&Z4D]BV,^Y5JI/J[TMU6.5%%ZG=46?R@V_QV0 MBJ=1L.`N_`GY>LM$5CCRVI*ML*I+EMN731J?U$Z[NB:W,DN9-:[45B[5BM.W M,"D`[=3UT(N1[?FUS%`XP)O!<YC"DXW+F&,Q7"ENT>TN)93$BQ//B>M]Z]TX M%E9886%_R7(7#YEB!8BR*A;=?6_A8<>(KE?Y:[@<E(2@P8`]`K.=.2G_Z(=3 MV^<9A328V7[,J/TA<,(%97](YB@`MX3PB=*,[P6L5,V+YR21!723RX%#GNC` MXL/BA+NIDY"M8:X)YMS/Z#[;2;S/7O+<PE/`W(MS"3'$N"S=U*>!PED!=G!P MYE`RC5'4+`H7U:$,6MW+R(L9#+(K(.@B,O19BY8LZ'X<GI/&U"?+PQ.NRV0E MEYN_RJ"`&@5A\,\@]?USDL%0C6=4)XYILWSR?!^>(B_A[B2QU-VMZ'D.=@Q/ M#&%V;AM91"[+?)&;B7Y-DS1B50M7]CFY%30;-;US=U^!-7HP#LW5>7T=A707 M#W&(YH:92P+V!)<MB3S+;-(F;L&]SVR$16S!%E/T1S+'O2F-229V6<#"?D;F MGZD7Y;+<\"EXC&R743CDAN3C^C9YU&6.YW)_+<+/#/B+-OCCLB62?:C^TJ:D MSS>YEM3B<47S@7[Q)[38L[7`0WWK&6P'K>)^AS05OL!ID'(ST2/=^X?X;(^T M,E%\'7%98MDAZ[+"\((*@WLG#J,$RP=FKZ(_(^3-[7A>X\EBN8'4>5=U,3_+ M))H*L!`KL"QO1`PK*A<^,;;D>4BHU7N3C#TA-M])KA3Q^SC\-M100PTUU%!# D#3744$,--=100PTUU%!##3744$,--=30WXS^"TD-4/\`4``` ` end и распаковываем его: [oracle@matrix oracle]$ cd /usr/oracle/orcl [oracle@matrix oracle]$ tar zxfv /tmp/orcl.tgz после чего запускаем: [oracle@matrix oracle]$ cd /usr/oracle/orcl/ddl [oracle@matrix oracle]$ sh ./01crdb.sh если все правильно, то поднимится экземпляр Oracle и начнется не быстрый процесс создания Базы данных, вместе со всеми сегментами, словарями и табличными пространствами... [oracle@matrix oracle]$ sh ./02crdb.sh [oracle@matrix oracle]$ sh ./03crdb.sh [oracle@matrix oracle]$ sh ./05crtblsp.sh [oracle@matrix oracle]$ sh ./06cruser.sh Естественно, желающие могут поковыряться в файлах и "заточить" их под себя. Я взял их с tokuda.net и подкорректировал пути. В результате выполнения последнего файла (06cruser.sh) будет создан пользователь demo с паролем demo, которому будут предоставлены все привелегии работы с базой данных. Для пробы можно создать таблицу: [oracle@matrix oracle]$ sqlplus SQL*Plus: Release 8.1.7.0.0 - Production on Mon Jun 3 10:59:53 2002 (c) Copyright 2000 Oracle Corporation. All rights reserved. Enter user-name: demo Enter password: demo Connected to: Oracle 8i Enterprise Edition Release 8.1.7.0.1 - Production With the Partitioning option JServer Release 8.1.7.0.1 SQL> @07cr_tbl.sql DROP TABLE T_GIJI CASCADE CONSTRAINTS * ERROR at line 1: ORA-00942: table or view does not exist Table created. Table altered. SQL> exit 22) Теперь выключаем Oracle: [oracle@matrix oracle]$ svrmgrl Oracle Server Manager Release 8.1.7.0.1 - Production (c) Copyright 1997, 1999, Oracle Corporation. All Rights Reserved. Oracle 8i Enterprise Edition Release 8.1.7.0.1 - Production With the Partitioning option JServer Release 8.1.7.0.1 SVRMGR> connect internal Connected. SVRMGR> shutdown normal Database closed. Database dismounted. ORACLE instance shut down. SWRMGR> quit Server Manager complete. 23) Редактируем инициализационные файлы Oracle: [oracle@matrix oracle]$ vim /usr/oracle/orcl/pfile/initORCL.ora В этом файле раскомментируем строчку, содержащую информацию о сегментах отката: rollback_segments = (rbs01, rbs02, rbs03, rbs04) Далее из admin.tgz (файл доступен по адресу http://www.lglobus.ru/korn/admin.tgz, а ниже приведен в UUE): begin 644 admin.tgz M'XL(`+M]^SP``^V6WX^:0!#'?>:OF.1>(*D(HM`V\8$#/&DXUL#>]9%0Y5H2 MA"LLZ8^_OKL@GE[3-FWC^3*?%W%FG-E=9ORN.BGRAF5E5JM5G8[.@JYIICF# M$0#HAGGRV6%:)H`ULTS^8.I3[IUJNC$"[3S+.:5M6%H#C/CN-T7VZ[CMAS.= MSF6YDJ[`+_D9%$7*\JJ$&]$+*<NV$&;L-3A5^9!_;.O.R6/OL[H182X/>0OO MVG*L6^,W%O<L\R(KTQVW!D<=Q1U2X,?4"[T(%A*`;+MNY,5Q(JR=I6>P+T!> M1X02AP0+H,Y:D5=5PQ:P2UF=?U4?=VK1L%:1UU7-K?I\JBL*3Z)(L>]V.9/3 M<H-Y7ZK[[GJQ<R@MWP3DV@X2]SJT;[WGA51E"".1[01>LB(B:-(V]:1OF4.` MR"Q2P`)(Y`2]?;\V:D?T;IV\MWV:4/_6.UHD:))#PM!S>@^Y.]X!Z)I$>6'^ M`^_>"XX]9+F4_O_]JY/F<U%F['S3_^?YUV=&-_]3_A>@S35NT&<S"^?_)1`3 MVZC;O,XVK*J_)8\I^\2;2Z9A+'HY?@4K$E/QJ$C[V.PA;0N6;*M=FI<\]DM5 M%]O.>?!]K\KLX+GT%I'?H$Y8V?0O]F+Z;\SU)_TWC$[_-9S_%X'+\U]<`."G M&P#9L/%4W`#@Y`I`CYI*>$`2DM@KLE#?R%]3GX2#*.^U'_Y1_'F&04)=F]HB J#1?C08=[";[T02,(@B`(@B`(@B`(@B`(@B`(@B`(@IR9']]`O%,`*``` ` end [oracle@matrix oracle]$ cd /usr/oracle/network/admin [oracle@matrix oracle]$ tar zxvf /tmp/admin.tgz Тем самым в /usr/oracle/network/admin будут созданы файлы: listener.ora, sqlnet.ora и tnsnames.ora. listener.ora и tnsnames.ora нужно исправить на предмет собственного доменного имени. У меня оно matrix.pm.lstu. [oracle@matrix oracle]$ vim /usr/oracle/network/admin/listener.ora [oracle@matrix oracle]$ vim /usr/oracle/network/admin/tnsnames.ora 24) После того, как эти файлы созданы, можно запускать Oracle и его Listener. Для этого из-под root'а в /usr/local/etc/rc.d кладем файл oracle.sh из следующего архива: begin 644 oracle.tgz M'XL(`!R0^SP``^W336^;0!`&8)_W5TR)I9SP0A7'55,.Y$.-51)7)#U4565A M3`KJFK5V(?7/#[O$+K&CJ*KD5*K>YV"6F6&9`2Q5DHILH//>_OB>-QIZU"-C M^TCD#YLDC8Y&;X?>T<CWFXCO'0][Y.VQIXU:5XDBZBDIJY?J?N59)EZCH==U M\(;/BI+KG#&NS>JGF`N9S,F])U&4]8JQ21R>11?3T_#F(N"U5ES:;^:$LM52 MJHHZ^77MY>3JQ5J39]'Y-!J?QF'\=?HYO+T,^ITD%\5L<]%6X?HF-^/S8!*? M1=N;-W%F-^2I7"R3BMLYS)COGT;T;LBT_'RT+;8_[7)3^CMK5D*FB;"))_,T M`?;8IITA"J\_!JJ>QE\&GR;C=VZ\SIH$8P=D/LN*%7?TC9Q5WW<H:(X.N;)S M:FL<^GY"59Z5S+[)+,TE]>T].N?=Y[[NG.N:W`6U;XC<E)S.&[,%0I<JK43; MB\/2.>W,].>;Z7NU^*$$?:"=C-E^,)\YG8[=D@X?=SML'X=<LDQL/0\3[<S_ L%X,UU^]Q+KFT8]T5[%__SP$```````````````````#@__0`<2#65@`H``#_ ` end matrix# cd /usr/local/etc/rc.d matrix# tar zxfv /tmp/oracle.tgz Создаем /usr/oracle/bin/start.db, следующего содержимого: connect internal; startup pfile=$ORACLE_HOME/orcl/pfile/initORCL.ora; quit; И /usr/oracle/bin/stop.db: connect internal; shutdown normal; quit; После чего можно попробывать запустить, экземпляр Oracle: matrix# /usr/local/etc/rc.d/oracle.sh start и зайти sqlplus'ом под пользователем demo: [oracle@matrix oracle]$ sqlplus SQL*Plus: Release 8.1.7.0.0 - Production on Mon Jun 3 10:59:53 2002 (c) Copyright 2000 Oracle Corporation. All rights reserved. Enter user-name: demo Enter password: demo Connected to: Oracle 8i Enterprise Edition Release 8.1.7.0.1 - Production With the Partitioning option JServer Release 8.1.7.0.1 SQL> exit Теперь гасим Oracle: matrix# /usr/local/etc/rc.d/oracle.sh stop И довольные, что только что совершили самое извратнейшее из всех возможных действо, перегружаем сервер. matrix# reboot Теперь, когда сервер вновь загрузится, Oracle 8i будет входить в стройный ряд ваших серверных приложений, работающих на FreeBSD! -=-=-=-=-=-=-=- Благодарности: 1) Nick A. Leuta aka Skynick - за море времени, уделенное мне, за объяснение принципа работы линуксолятора, за помощь в работе с ним и updat'е его содержимого. 2) Yuriy Vostrikoff aka Mon - за ценный совет по ktrace 3) Oleg V. Volkov aka Rover - за любезную помощь в переводе с японского 4) Кафедру АСУ - за "добрые советы" снести FreeBSD и поставить Linux :) 5) www.tokuda.net - за статью, без которой врядли у меня хватило бы энтузиазма начать и довести до конца это дело. Ну и конечно, особое Спасибо моей Натали, которая терпела все мои вчера, проведенные в институте до 22 вечера.. -=-=-=-=-=-=-=- Публикации: Если кто сочтет этот материал достойным быть где-то опубликованным, я буду только рад! Если у кого-то получится (или наоборот, не получится) установить Oracle 8i на FreeBSD - пишите! Я сделал все возможное, чтобы эта установка прошла без проблем. (c) 2002 Stas Kornienko <korn@lglobus.ru> 2:5036/32

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Андрей (?), 16:59, 30/01/2003 [ответить]  
  • +/
    Стас ты монстр! (в смысле гений)
    Большое спасибо за статью. Хоть я фрёй не занимаюсь, но твоя статья окрыляет, позволяя надеяться, что любые проблемы могут быть решены.
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру