在freebsd下安装oracle


Установка Oracle8i 8.1.7.4 на FreeBSD шаг за шагомВячеслав Иванченко

  1<[email protected]>   
  2  
  3$FreeBSD: doc/ru_RU.KOI8-R/articles/oracle/article.sgml,v 1.36 2003/07/14 03:12:47 ivi Exp $   
  4  
  5  
  6Чтобы сделать этот документ максимально информативным и правильным, присылайте свои комментарии и пожелания мне на электронный адрес [email protected].   
  7  
  8Отдельно благодарю Стаса Корниенко за его труд, так как львиная доля этой статьи основана на его материале.   
  91\. Введение   
 10Эта статья содержит описание пошаговой установки Oracle8i для Linux (8.1.7.4) на FreeBSD. Перед тем, как написать эту статью, я внимательно перечитал материал Стаса Корниенко "Установка Oracle 8.1.x на FreeBSD 4.x". И все меня вроде устраивало в статье Стаса, да только не давала спокойно спать мысль - почему же установщик Oracle8i (Oracle Universal Installer) на последней стадии своей работы зависает, из-за чего заканчивать установку приходилось вручную. Поэтому я поставил перед собой цель - произвести установку Oracle8i так, чтобы все неприятные ситуации, связанные с зависанием не возникали при установке.   
 11  
 12Тщательно проанализировав различную документацию по установке Oracle8i на различных дистрибутивах Linux и проведя различные эксперименты над установкой Oracle8i, как на FreeBSD, так и на Linux, я пришел к выводу, что Oracle8i все же можно установить на FreeBSD так, чтобы он не зависал во время установки. Также на FreeBSD возможно использование GUI-утилит, которые будут доступны после установки. У меня это получилось, чего желаю и Вам! :-)   
 13  
 14Предполагается, что установлена FreeBSD-4.x или FreeBSD-5.x на базе i686 вместе с настроенной и готовой к работе XFree86 / X Window System.   
 15  
 16Предполагается, что если у Вас нет неразмеченного места на дисках Вашей машины, не меньше 2 ГБ, то в файловой системе примонтированной в директорию /usr имеется 3,5 ГБ свободного места. Также необходимо, чтобы общий размер своп-разделов был равен 1 ГБ, если общий размер своп-разделов не удовлетворяет указанным требованиям и у Вас отсутствует дополнительное неразмеченное место для создания еще одного своп-раздела, то Вам понадобится еще 1 ГБ сводного места, в любой имеющейся на дисках Вашей машины файловой системе UFS. Конфигурация машины, на которую устанавливается Oracle8i, должна удовлетворять следующим параметрам CPU PIII-500 МГц и выше, RAM 256 МБ и более.   
 17  
 18Предполагается, что в качестве командного интерпретатора у суперпользователя установлен csh, и суперпользователь находится в группе wheel, GID которой равен 0.   
 19  
 20Предполагается, что все команды начинающиеся с символа # выполняются от имени суперпользователя, а с символа % - от имени пользователя oracle, которого Вам еще предстоит создать в соответствии с рекомендациями из этой статьи. Будьте внимательны, выполнять команды необходимо именно с тем UID, который рекомендуется в статье! Не стоит выполнять команды, которые должен выполнять пользователь oracle, от имени суперпользователя, в большинстве случаев это приведет к различным проблемам при инсталляции Oracle8i.   
 21  
 22Предполагается, что исходные тексты системы доступны в директории /usr/src, а коллекция портов находится в директории /usr/ports.   
 23  
 24Предполагается, что будет использоваться обновленная с помощью cvsup коллекция портов, в связи с тем, что старые версии FreeBSD, содержат в портах emulators/linux_base-6 и devel/linux_devtools-6 ссылки на уязвимые версии пакетов. Об обновлении коллекции портов при помощи cvsup можно прочесть в "FreeBSD Handbook".   
 25  
 26Предполагается, что в системе установлены bzip2 и unzip. Если у Вас одна из последних версий FreeBSD-4.x, или FreeBSD-5.x, то bzip2 уже есть в системе, если нет, то необходимо установить его из коллекции портов, выполнив следующее:   
 27  
 28# cd /usr/ports/archivers/bzip2 &amp;&amp; make install clean &amp;&amp; rehash   
 29  
 30Для установки unzip выполните следующие команды:   
 31  
 32# cd /usr/ports/archivers/unzip &amp;&amp; make install clean &amp;&amp; rehash   
 33  
 34Предполагается, что в корневой директории существует символическая ссылка /compat, указывающая на директорию /usr/compat. Проверьте это командой,   
 35  
 36# ls -l /compat   
 37  
 38Если выдается что-то вроде   
 39  
 40lrwxr-xr-x 1 root wheel 11 6 Dec 13:18 /compat -&gt; /usr/compat   
 41значит, все нормально, если команда выдала   
 42``ls: /compat: No such file or directory''   
 43то создайте ссылку, следующим образом,   
 44# ln -s /usr/compat /compat   
 45  
 46  
 472\. Закачаем все необходимые файлы для установки Oracle8i   
 48Закачаем все необходимые файлы для установки Oracle8i и положим их в директорию /usr/oinstall, которую необходимо создать.   
 49  
 50# mkdir /usr/oinstall   
 51  
 52# cd /usr/oinstall   
 53  
 54Итак, нужны следующие файлы:   
 55  
 56linux81701.tar (549867520 Б) - дистрибутив Oracle8i Enterprise Edition Release 3 (8.1.7.0.1) for Linux (Intel). http://otn.oracle.com/software/products/oracle8i/content.html   
 57  
 58procps-2.0.4-2.i386.rpm (134767 Б) - содержит некоторые системные утилиты необходимые Oracle8i. ftp://ftp.redhat.com/pub/redhat/linux/6.1/en/os/i386/RedHat/RPMS/procps-2.0.4-2.i386.rpm   
 59  
 60jre118_v3-glibc-2.1.3.tar.bz2 (7156122 Б) - дистрибутив JRE версии 1.1.8 от blackdown.org. Список FTP-серверов, откуда можно закачать дистрибутив, находится на http://blackdown.org/   
 61  
 62p2376472_8174_LINUX.zip (134488247 Б) - кумулятивный патч, устраняющий довольно большое количество различных ошибок в Oracle8i (8.1.7.0) и поднимающий Oracle8i до версии 8.1.7.4. На текущий момент это патч доступен http://metalink.oracle.com/, доступ на этот ресурс является платным. Но при желании найти этот файл в Internet не составит труда. Ведь у Вас "карты в руках" - имя файла. ;-) В крайнем случае, можно поднять Oracle8i до версии 8.1.7.3, этот кумулятивный патч доступен на официальном FTP-сервере Oracle Corporation и на текущий момент бесплатный. Файл p2189751_8173_LINUX.zip (121801951 Б) можно загрузить по ссылке на директорию с FTP-сервера ftp://oracle-ftp.oracle.com/server/patchsets/unix/LINUX/817patchsets/. О выходе новых кумулятивных патчей всегда можно узнать на странице http://otn.oracle.com/support/patches.htm   
 633\. Устанавливаем своп размером в 1 ГБ   
 64Если своп равен 1 ГБ или больше, то не выполняйте этот пункт.   
 65  
 66Если же размер свопа меньше 1 ГБ и на дисках Вашей машины нет неразмеченного места для его создания, то с помощью команды df определите, в какой файловой системе у Вас есть 1 ГБ свободного места, и создайте файл swap. Например, для размещения файла swap в директории /usr, выполним следующие команды:   
 67  
 68# cd /dev   
 69  
 70# sh ./MAKEDEV vn0   
 71  
 72# dd if=/dev/zero of=/usr/swap bs=1024k count=1024   
 73  
 74# chmod 0600 /usr/swap   
 75  
 76# echo 'swapfile="/usr/swap"' &gt;&gt; /etc/rc.conf   
 77  
 78Примечание: Если Вы производите установку на FreeBSD-5.x, то команды cd /dev и sh ./MAKEDEV vn0 выполнять не надо.   
 79  
 80Реально для работы лучше делать своп не в файле, а так, как это положено - выделить для этого раздел на диске. Поэтому в будущем решите этот вопрос, но до момента, когда у Вас появится дополнительный диск, можно использовать и этот вариант.   
 814\. Инсталлируем emulators/linux_base-6 и devel/linux_devtools-6   
 82Порты emulators/linux_base-6 и devel/linux_devtools-6 должны установить пакеты от дистрибутива Linux Red Hat 6.1 и частично от 6.2.   
 83  
 84# cd /usr/ports/emulators/linux_base-6   
 85  
 86# make install clean &amp;&amp; rehash   
 87  
 88# cd /usr/ports/devel/linux_devtools-6   
 89  
 90# make install clean &amp;&amp; rehash   
 91  
 92Будьте внимательны! В коллекции портов имеются порты, устанавливающие пакеты от Linux Red Hat 7.1 emulators/linux_base и devel/linux_devtool-7 - эти пакеты не подойдут! Oracle8i для Linux собран с glibc-2.1.3, именно эта версия glibc имеется в портах на момент написания этой статьи.   
 93  
 94$FreeBSD: ports/emulators/linux_base-6/Makefile,v 1.70 2003/04/08 21:47:06 trevor Exp $   
 95  
 96$FreeBSD: ports/devel/linux_devtools-6/Makefile,v 1.34 2003/02/20 17:06:51 knu Exp $   
 975\. Дополнительно устанавливаем пакет procps-2.0.4-2.i386.rpm   
 98Дополнительно к эмуляции Linux устанавливаем пакет procps-2.0.4-2.i386.rpm. Без него у Вас на FreeBSD, установщик Oracle8i не сможет нормально завершить свою работу - он попросту зависнет при попытке создания базы данных. А происходит это из-за того, что во время инсталляции вызывается утилита dbassist, которая без пакета procps-2.0.4-2.i386.rpm на FreeBSD работать не хочет. Вот чтобы этого не произошло, Вы и установите пакет procps-2.0.4-2.i386.rpm, который до этого должны были положить в директорию /usr/oinstall.   
 99  
100# cd /usr/oinstall   
101  
102# rpm -U --ignoreos --root /compat/linux --dbpath /var/lib/rpm --nodeps --replacepkgs procps-2.0.4-2.i386.rpm   
1036\. Включаем поддержку совместимости с Linux.   
104Включаем поддержку совместимости с Linux. В файле /etc/rc.conf нужно добавить строку linux_enable="YES"   
105  
106# echo 'linux_enable="YES"' &gt;&gt; /etc/rc.conf   
1077\. Создаем символическую ссылку /compat/linux/etc/mtab   
108Создаем символическую ссылку, которая будет необходима Oracle8i для получения информации о Вашем (-их) диске (-ах).   
109  
110# ln -s /etc/fstab /compat/linux/etc/mtab   
1118\. Вносим изменения в /etc/fstab   
112В файле /etc/fstab после строки, где описывается proc, добавьте в текстовом редакторе строку   
113  
114linproc /compat/linux/proc linprocfs rw 0 0   
115  
116и сохраните файл.   
1179\. Создаем утилиту arch   
118Создаем утилиту arch, которая в Linux используется для вывода информации об архитектуре машины.   
119  
120# echo 'echo i686' &gt; /compat/linux/bin/arch   
121  
122# chown root:wheel /compat/linux/bin/arch   
123  
124# chmod 0755 /compat/linux/bin/arch   
12510\. Устанавливаем JRE от blackdown.org   
126Устанавливаем JRE от blackdown.org в /compat/linux/usr/local   
127  
128# cd /compat/linux/usr   
129  
130# mkdir local   
131  
132# cd local   
133  
134# tar --bzip2 -xvf /usr/oinstall/jre118_v3-glibc-2.1.3.tar.bz2   
135  
136# cd jre118_v3   
137  
138# ln -s . linux   
139  
140# cd bin   
141  
142# ln -s i686 linux   
143  
144# cd ../lib   
145  
146# ln -s i686 linux   
147  
148Такое количество символических ссылок объясняется тем, что некоторые утилиты Oracle8i используют эти пути, а раз используют, значит, они должны быть для того, чтобы обеспечить нормальную работу этих утилит.   
14911\. Устанавливаем JDK 1.2.2 от Sun Microsystems, Inc.   
150Устанавливаем JDK 1.2.2 для Linux от Sun Microsystems, Inc. Дистрибутив JDK придется загрузить самостоятельно и положить в директорию /usr/ports/distfiles. Чтобы узнать, откуда его можно загрузить, зайдите в директорию порта java/linux-sun-jdk12 и выполните команду make с целью fetch, в ответ Вы получите сообщение, разъясняющее, откуда можно загрузить дистрибутив. После загрузки установка происходит обычным для коллекции портов способом.   
151  
152# cd /usr/ports/java/linux-sun-jdk12 &amp;&amp; make install clean &amp;&amp; rehash   
153  
154Oracle8i будет видеть JDK как /usr/local/java, но мы устанавливаем дистрибутив Oracle8i под Linux, поэтому необходимо создать путь /compat/linux/usr/local/java   
155  
156# cd /compat/linux/usr/local   
157  
158# ln -s /usr/local/linux-sun-jdk1.2.2 java   
15912\. Распаковываем дистрибутив Oracle8i   
160Распаковываем дистрибутив Oracle8i и проводим над ним небольшие манипуляции.   
161  
162# cd /usr/oinstall   
163  
164# tar -xfv linux81701.tar   
165  
166# cd Disk1   
167  
168# mv * /usr/oinstall   
169  
170# cd ..   
171  
172# rm -rf Disk1   
173  
174В результате данных действий получили распакованный дистрибутив Oracle8i в директории /usr/oinstall/Disk1, а чтобы в будущем нажимать меньше клавиш, содержимое Disk1 перенесли прямо в /usr/oinstall, а директорию Disk1 удалили.   
17513\. Вносим изменения в дистрибутив Oracle8i   
176Вносим в дистрибутив Oracle8i исправления, при этом делая копию оригинальных файлов.   
177  
178Необходимо, чтобы в файле /usr/oinstall/runInstaller переменной THREADS_FLAG было присвоено значение green, а не native.   
179  
180# cd /usr/oinstall   
181  
182# sed -i .orig -e "s|THREADS_FLAG=native|THREADS_FLAG=green|g" runInstaller   
183  
184Теперь отредактируем файл /usr/oinstall/install/oraparam.ini, заменив строку JRE_LOCATION=../stage/Components/oracle.swd.jre/1.1.8/1/DataFiles/Expanded/linux на JRE_LOCATION=/usr/local/jre118_v3/linux   
185  
186# cd install   
187  
188# sed -i .orig -e "s|\\.\\./stage/Components/oracle\\.swd\\.jre/1\\.1\\.8/1/DataFiles/Expanded/linux|/usr/local/jre118_v3/linux|g" oraparam.ini   
189  
190Конечно, не обязательно применять для изменения строк sed, Вы можете исправить файлы в любом удобном для Вас текстовом редакторе.   
19114\. Распаковываем кумулятивный патч   
192Распаковываем в директорию /usr/oinstall/patch, которая появилась после распаковки дистрибутива Oracle8i, кумулятивный патч, находящийся в файле p2376472_8174_LINUX.zip. Файл zip-архива содержит в себе два файла: lnx32_8174_patchset.tar и README.html.   
193  
194# cd /usr/oinstall   
195  
196# unzip p2376472_8174_LINUX.zip   
197  
198# cd patch   
199  
200# tar -xvf ../lnx32_8174_patchset.tar   
201  
202# rm ../lnx32_8174_patchset.tar   
203  
204Прочтите файл README.html, чтобы быть в курсе того, что исправляет данный патч.   
20515\. Создаем группы dba и oinstall   
206Создаем группы dba c GID 94 и oinstall c GID 95.   
207  
208# pw groupadd -n dba -g 94   
209  
210# pw groupadd -n oinstall -g 95   
21116\. Создаем пользователя oracle и назначаем ему пароль   
212Создаем пользователя oracle c UID 94 и помещаем его в группы dba, oinstall и wheel, а командный интерпретатор дадим /compat/linux/bin/bash.   
213  
214# pw useradd -n oracle -u 94 -c "Oracle Daemon" -d /usr/oracle -s /compat/linux/bin/bash -g dba -G oinstall,wheel   
215  
216В группу wheel мы помещаем пользователя oracle, чтобы обеспечить небольшой комфорт при инсталляции. Во время установки будут периодически требоваться права суперпользователя, поэтому надо разрешить пользователю oracle выполнять команду su для получения прав суперпользователя. Получать права суперпользователя с помощью команды su, могут только члены группы wheel, поэтому нам и необходимо сделать на время инсталляции, пользователя oracle членом этой группы.   
217  
218Можно конечно выполнять команды, требующие прав суперпользователя, непосредственно войдя в систему суперпользователем с другой консоли, но на мой взгляд, команда su выполненная в окне xterm более комфортна, так как все на одном экране в X Window System и все под рукой, а это значит меньше шансов сделать неверные действия. :-)   
219  
220Когда установка будет закончена, мы уберем пользователя oracle из группы wheel. А пока назначаем пароль для пользователя oracle. Не стоит пренебрегать мерами безопасности, поэтому не надо вводить пустой или легко подбираемый пароль пользователю oracle.   
221  
222# passwd oracle   
22317\. Создаем директорию для установки Oracle8i.   
224Мы будем устанавливать Oracle8i в соответствии с рекомендациями Optimal Flexible Architecture (OFA). Я думаю не стоит игнорировать эти рекомендации, практика эксплуатации продуктов Oracle показывает, что в будущем это позволит эффективно использовать и обновлять их, а также гибко управлять постоянно растущими объемами информации. Если Вы еще не знаете, что такое OFA, то документация, идущая вместе с дистрибутивом Oracle8i, поможет Вам в этом разобраться.   
225  
226Согласно рекомендации желательно, чтобы установка производилась на отдельную файловую систему, к тому же желательно, чтобы эта файловая система была расположена на отдельном диске и примонтирована в точку монтирования, расположенную в корне. Вот мы сейчас и создадим эту точку монтирования.   
227  
228# mkdir /m01   
229  
230# chmod 0775 /m01   
231  
232# chown oracle:oinstall /m01   
233  
234Дальше в этом пункте статьи пути тех, у кого есть возможность создания отдельной файловой системы и тех, у кого такой возможности пока нет, на время разойдутся.   
235  
236Если у Вас есть неразмеченное место, то создайте новую файловую систему UFS, размером не меньше 2 ГБ. Описание процесса создания новой файловой системы выходит за рамки этой статьи, Вы должны выполнить это самостоятельно. После создания файловой системы запишем информацию о новой файловой системе в файл /etc/fstab, с точкой монтирования /m01.   
237  
238# echo "/dev/device /m01 ufs rw 2 2" &gt;&gt; /etc/fstab   
239  
240На место /dev/device, Вы должны подставить файл устройства партиции новой файловой системы!   
241  
242Теперь надо примонтировать новую файловую систему и создать в ней директорию app.   
243  
244# mount /m01   
245  
246# mkdir /m01/app   
247  
248# chmod 0775 /m01/app   
249  
250# chown oracle:oinstall /m01/app   
251  
252Вот и все, можете переходить к следующему пункту статьи, дальше будут рекомендации для тех, у кого нет возможности создания дополнительной файловой системы.   
253  
254Если возможности для создания новой файловой системы нет, в связи с отсутствием неразмеченного места на дисках, то придется пойти другим путем, смонтируем директорию /compat/linux/m01 в директорию /m01, в этом нам поможет замечательная команда mount_null на FreeBSD-4.x или команда mount_nullfs на FreeBSD-5.x.   
255  
256На FreeBSD-4.x выполняем:   
257  
258# echo "/compat/linux/m01 /m01 null rw 0 0" &gt;&gt; /etc/fstab   
259  
260На FreeBSD-5.x выполняем:   
261  
262# echo "/compat/linux/m01 /m01 nullfs rw 0 0" &gt;&gt; /etc/fstab   
263  
264Остальные команды будут одинаковы, как для FreeBSD-4.x, так и для FreeBSD-5.x.   
265  
266# mkdir /compat/linux/m01 /compat/linux/m01/app   
267  
268# chmod -R 0775 /compat/linux/m01   
269  
270# chown -R oracle:oinstall /compat/linux/m01   
271  
272# mount /m01   
273  
274Сделайте именно так, как рекомендовано, смонтируйте директорию /compat/linux/m01 в директорию /m01. Не делайте /m01 символической ссылкой на директорию /compat/linux/m01. Если Вас интересует почему, то рекомендую почитать, как и почему работают Linux-приложения на FreeBSD, а потом посмотреть, какой размер корневой файловой системы у Вашей FreeBSD. Вероятно, если Вы устанавливали FreeBSD в здравом уме, то это 192 МБ? Ну максимум 256 МБ? Этого очень мало для установки Oracle8i. :-) Установщик Oracle8i получит именно эту информацию, о файловой системе в которой расположена директория /m01, и откажется устанавливать туда что-либо. Поэтому мы и смонтировали директорию в директорию. Теперь для Вашей системы в директории /m01 отдельная файловая система.   
275  
276Потом, когда Вы обзаведетесь дополнительным диском и создадите на нем отдельную файловую систему, будет достаточно соответствующе отредактировать /etc/fstab, смонтировать эту файловую систему в /m01 и перенести содержимое /compat/linux/m01 в /m01, а директорию /compat/linux/m01 удалить. Возможно, при этом Вы первый раз испытаете преимущество OFA. ;-)   
27718\. Создаем домашнюю директорию для пользователя oracle   
278Создаем домашнюю директорию для пользователя oracle.   
279  
280# mkdir /usr/oracle   
281  
282# cd /usr/oracle   
283  
284В любом текстовом редакторе наберите БЕЗ ОШИБОК текстовый файл с содержимым приведенным ниже, и сохраните этот файл как /usr/oracle/.profile   
285  
286ORACLE_BASE=/m01/appORACLE_HOME=$ORACLE_BASE/product/oracle/8.1.7ORACLE_DOC=$ORACLE_HOME/docORACLE_SID=OSIDexport ORACLE_HOME ORACLE_BASE ORACLE_SID ORACLE_DOCNLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1#NLS_LANG=AMERICAN_CIS.UTF8#NLS_LANG=AMERICAN_CIS.CL8ISO8859P5#NLS_LANG=AMERICAN_CIS.CL8MACCYRILLIC#NLS_LANG=AMERICAN_CIS.CL8MSWIN1251#NLS_LANG=AMERICAN_CIS.CL8KOI8RORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/dataORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/precomp/libexport NLS_LANG ORA_NLS32 ORA_NLS33 LD_LIBRARY_PATHJRE_LOCATION=/usr/local/jre118_v3PERL5LIB=$ORACLE_HOME/Apache/perl/lib/5.00503TMPDIR=/var/tmpPATH=$PATH:$ORACLE_HOME/binexport JRE_LOCATION PERL5LIB TMPDIR PATHumask 022unset LANGunset LC_ALL   
287  
288Если Вы собираетесь использовать систему управления реляционной базой данных (СУРБД) Oracle8i на территории России, то трудность в понимании этого файла, видимо, вызовет только значение $NLS_LANG. Уж в чем "повезло" русским, так это с количеством различных наборов символов. :-) Поэтому маленькое разъяснение не помешает.   
289  
290Переменная окружения $NLS_LANG принимает значения LANGUAGE_TERRITORY.CHARACTERSET, где LANGUAGE - указывает на язык сообщений; TERRITORY - указывает, как нужно представлять даты, разделители и т. п., а также определяет сортировку по умолчанию; CHARACTERSET - указывает язык, в котором работает клиент и желает видеть и вводить данные.   
291  
292Для того чтобы СУРБД Oracle8i выдавала сообщения на русском языке можно определить значение LANGUAGE равным RUSSIAN.   
293  
294Значение TERRITORY для стран СНГ равно CIS. Сортировку по умолчанию можно переопределить, с помощью переменной окружения $NLS_SORT.   
295  
296Значение CHARACTERSET для русских кодировок может принимать значения: CL8ISO8859P5, RU8PC866, RU8BESTA, RU8PC855, CL8MACCYRILLIC, CL8MACCYRILLICS, CL8MSWIN1251, CL8KOI8R, UTF8.   
297  
298Примечание: В случае если Вы собираетесь использовать Oracle Internet Directory (OID), то Ваш выбор должен обязательно остановиться на UTF8.   
29919\. Создаем файл /usr/oracle/root   
300В текстовом редакторе наберите текст, приведенный ниже, и сохраните его как файл /usr/oracle/root.   
301  
302#!/bin/sh# Переходим в директорию $ORACLE_HOME и делаем копию файла root.shcd $ORACLE_HOMEcp root.sh root.sh.orig# Вносим исправления в файл root.shsed -e 's|/bin/chown|/usr/sbin/chown|g' root.sh.orig \| sed -e 's|/usr/bin/test|/bin/test|g' \| sed -e 's|/bin/awk|/usr/bin/awk|g' \| sed -e 's|/bin/grep|/usr/bin/grep|g' \| sed -e 's|/usr/local/bin/sed|/usr/bin/sed|g' \| sed -e 's|RMF=/bin/rm -f|RMF="/bin/rm -f"|g' \| sed -e "s|) '{print \$1}\\`|) '{print \$1}'\\`|g" &gt; root.sh# Удаляем файл root.sh.origrm root.sh.orig# Переходим в $ORACLE_HOME/bin и вносим изменения в netasst и в netcacd $ORACLE_HOME/bincp -p netasst netasst.origcp -p netca netca.origsed -e 's|\$JRE -classpath|\$JRE -native -classpath|g' netasst.orig &gt; netasstsed -e 's|\$JRE -classpath|\$JRE -native -classpath|g' netca.orig &gt; netca# Вносим исправления во все файлы сообщений СУРБД Oracle8i отвечающих за сообщения на русском языкеecho 'echo $1cp -p $1 $1.origprintf "[内容]343137330400[内容]0[内容]0[内容]0[内容]0" &gt; $1dd if=$1.orig of=$1 bs=16 seek=1 skip=1' &gt; /tmp/$$.ru.msb.shfind $ORACLE_HOME -follow -name "*ru.msb" -exec /bin/sh /tmp/$$.ru.msb.sh {} ";"rm /tmp/$$.ru.msb.sh   
303  
304Этот файл, как и пакет procps-2.0.4-2.i386.rpm, очень сильно повлияет на установщик Oracle8i, чтобы обеспечить его нормальную работу.   
305  
306Во время установки Oracle Universal Installer будет просить Вас запустить файл $ORACLE_HOME/root.sh, который содержит неправильные пути к командам с точки зрения FreeBSD, и две синтаксические ошибки с точки зрения командного интерпретатора sh. Вот перед запуском $ORACLE_HOME/root.sh, Вы и запустите /usr/oinstall/root, который исправит все эти ошибки.   
307  
308Не путайте скрипт $ORACLE_HOME/orainstRoot.sh, который Вам тоже еще предстоит запускать, и скрипт $ORACLE_HOME/root.sh, это два разных файла!   
309  
310Изменения в netasst и в netca, которые также вносит /usr/oracle/root, делаются для того, чтобы обеспечить нормальную работу Net8 Configuration Assistant на FreeBSD. Скрипты netasst и netca во время установки, запуская JRE без ключа -native, приводят к неверной работе Net8 Configuration Assistant, что влечет за собой зависание установщика Oracle8i. Следовательно, необходимо позаботиться, чтобы этого не произошло, что и сделает /usr/oinstall/root.   
311  
312В файлах с расширением *.msb сохранены сообщения от различных компонентов СУРБД Oracle8i, которые будут выдаваться во время работы с СУРБД. Изменения в файлы *ru.msb вносятся для того, чтобы сообщения на русском языке, выдаваемые СУРБД Oracle8i во время ее работы, правильно перекодировались на стороне клиента. То есть, если Вы решите назначить переменную окружения $NLS_LANG c LANGUAGE равной RUSSIAN, то СУРБД будет разговаривать на русском языке, но без изменения файлов *ru.msb, эти сообщения будут в неверной кодировке. СУРБД Oracle8i может разговаривать на самых различных языках, достигается это за счет того, что СУРБД в зависимости от значения LANGUAGE в переменной окружения $NLS_LANG использует для сообщений те msb-файлы, которые предназначены для этого языка. Если на какой-то компонент СУРБД Oracle8i отсутствуют msb-файлы с требуемым языком, то СУРБД игнорирует значение LANGUAGE в переменной окружения $NLS_LANG и использует для выдачи сообщений msb-файлы для английского языка. Первые 16 байт каждого msb-файла несут информацию о кодировке в которой сохранены сообщения в самом msb-файле, и файлы *ru.msb отвечающие за сообщения на русском языке, здесь не исключение. Да вот беда, набор символов в России не один, и даже не два... :-) И вот с русскими msb-файлами, приключилась неприятная история в недрах корпорации Oracle. В файлах, *ru.msb первые 16 байт, должны иметь следующую последовательность:   
313  
314для CP1251   
315  
31603 0C 23 0D 13 17 09 0E 1C 1D 20 1C 00 00 00 00   
317  
318для ISO8859-5   
319  
32003 0C 23 09 13 0F 23 23 20 24 10 20 00 00 00 00   
321  
322для CP866   
323  
32412 15 23 10 03 23 21 21 00 00 00 00 00 00 00 00   
325  
326Сообщения перекодируются из кодировки msb-файла в кодировку, указанную в части CHARACTERSET, переменной окружения $NLS_LANG, и если заголовок msb-файла неверный, то вместо нужного текста идет "китайская грамота". Именно это и произошло с файлами *ru.msb, сообщения в этих файлах сохранены в кодировке ISO8859-5, а первые 16 байт говорят, что сообщения в CP1251. Поэтому скрипт /usr/oracle/root и предусматривает изменение в файлах *ru.msb первых 16 байт, записывая в начало каждого русского msb-файла правильную последовательность байт, которые информируют СУРБД Oracle8i, что исходные сообщения в кодировке ISO8859-5. Даже если Вы не собираетесь устанавливать поддержку русского языка, то как минимум один msb-файл для каждого языка все равно будет установлен в директорию $ORACLE_HOME/oracore/mesg, в том числе и один неправильный msb-файл русских сообщений.   
327  
328Однако до момента, когда будет нужно запустить /usr/oinstall/root, придется еще поработать, поэтому пока забудем про этот файл.   
32920\. Передадим директорию /usr/oracle пользователю oracle   
330Передаем директорию /usr/oracle и все ее содержимое в распоряжение пользователю oracle.   
331  
332# chmod 0755 /usr/oracle   
333  
334# chmod 0644 /usr/oracle/.profile   
335  
336# chmod 0644 /usr/oracle/root   
337  
338# chown -R oracle:dba /usr/oracle   
33921\. Создаем конфигурацию нового ядра   
340Создаем конфигурацию нового ядра с поддержкой System V. Необходимо, чтобы в новой конфигурации обязательно присутствовали следующие параметры:   
341  
342maxusers 512options NBUF=2048options MAXDSIZ="(1024*1024*1024)"options MAXSSIZ="(1024*1024*1024)"options DFLDSIZ="(1024*1024*1024)"# System V shared memory and tunable parametersoptions SYSVSHM # include support for shared memoryoptions SHMMAXPGS=65536 # max amount of shared memory pages (4k on i386)options SHMMIN=2 # min shared memory segment size (bytes)options SHMMNI=256 # max number of shared memory identifiersoptions SHMSEG=256 # max shared memory segments per process# System V semaphores and tunable parametersoptions SYSVSEM # include support for semaphoresoptions SEMMAP=512 # amount of entries in semaphore mapoptions SEMMNI=512 # number of semaphore identifiers in the systemoptions SEMUME=512 # max number of undo entries per processoptions SEMMNS=1024 # number of semaphores in the systemoptions SEMMNU=512 # number of undo structures in the systemoptions SEMMSL=256 # max number of semaphores per idoptions SEMOPM=256 # max number of operations per semop call# System V message queues and tunable parametersoptions SYSVMSG # include support for message queuesoptions MSGMNB=8192 # max characters per message queueoptions MSGMNI=256 # max number of message queue identifiersoptions MSGSEG=8192 # max number of message segments in the systemoptions MSGSSZ=16 # size of a message segment MUST be power of 2options MSGTQL=128 # max amount of messages in the system   
343  
344Примечание: На FreeBSD-5.x опциям MAXDSIZ, MAXSSIZ и DFLDSIZ необходимо присвоить значения следующим образом:   
345  
346options MAXDSIZ=(1024UL*1024*1024)options MAXSSIZ=(1024UL*1024*1024)options DFLDSIZ=(1024UL*1024*1024)   
347  
348Для названия конфигурации ядра выберем букву "K", от слова "kernel", и текущую дату в формате год, месяц, день (YYYYMMDD):   
349  
350# cd /usr/src/sys/i386/conf   
351  
352# cp GENERIC K20021204   
353  
354Правим конфигурацию /usr/src/sys/i386/conf/K20021204 в любом удобном для Вас редакторе, добавляя нужное и удаляя все не нужное. Но опции, приведенные выше, должны присутствовать обязательно!   
355  
356СУРБД Oracle требовательна к количеству разделяемой системной памяти, значение которой задается опцией ядра SHMMAX. Совокупность процессов СУРБД Oracle и структур данных, размещенных в разделяемой системной области, называется экземпляром. Согласно рекомендациям по использованию СУРБД Oracle8i, в ядре необходимо выставить опцию ядра SHMMAX в байтах в размере общего объема физической оперативной памяти, умноженной на коэффициент, равный 0.5. Если значение SHMMAX будет не достаточно, то экземпляр Oracle8i просто не будет создан! Но в ядре FreeBSD данная опция ядра зависит от опции SHMMAXPGS по формуле:   
357  
358SHMMAX = SHMMAXPGS * PAGE_SIZE + 1   
359  
360  
361  
362Где PAGE_SIZE равно 4096 Б для i386, поэтому, чтобы сделать как рекомендовано в документации по Oracle8i, необходимо значение SHMMAXPGS вычислить по формуле,   
363  
364SHMMAXPGS = k * RAM * 1024 / PAGE_SIZE   
365  
366Где RAM - физическая оперативная память в МБ; k - коэффициент, равный 0.5; PAGE_SIZE - размер одной страницы в КБ, PAGE_SIZE = 4 КБ для i386.   
367  
368Например, для машины с памятью 512 МБ, SHMMAXPGS = 0.5 * 512 * 1024 / 4 = 65536.   
369  
370В случае, если предполагается, что СУРБД Oracle, будет работать на специально выделенном для этого сервере, и кроме нее никаких других серьезных сервисов запущено не будет, то коэффициент k, можно увеличивать до 0.75, это 3/4 от физической оперативной памяти.   
371  
372Для того, чтобы понять какое влияние оказывают некоторые значения опций ядра на работу СУРБД Oracle, обязательно ознакомьтесь с документацией, которая идет вместе с дистрибутивом Oracle8i.   
37322\. Компилируем ядро с новой конфигурацией   
374Компилируем ядро с новой конфигурацией (K20021204). Если что-то не пойдет при сборке ядра, внимательно изучите файл /usr/src/buildkernel.log и после этого ищите ошибки в Вашей конфигурации ядра.   
375  
376# cd /usr/src   
377  
378# make buildkernel KERNCONF=K20021204 |&amp; tee buildkernel.log   
37923\. Устанавливаем новое ядро   
380Устанавливаем новое ядро. Результат установки будет сохранен в файле /usr/src/installkernel.log   
381  
382# cd /usr/src   
383  
384# make installkernel KERNCONF=K20021204 |&amp; tee installkernel.log   
38524\. Удаляем файлы buildkernel.log и installkernel.log   
386Если компиляция и установка ядра выполнены успешно, то файлы buildkernel.log и installkernel.log можно удалить.   
387  
388# rm /usr/src/buildkernel.log   
389  
390# rm /usr/src/installkernel.log   
39125\. Директории /tmp, /usr/tmp, /var/tmp   
392Сделаем так, чтобы /tmp и /usr/tmp указывали на /var/tmp. Перед тем, как начать манипуляции с директорией /tmp, завершите все процессы в системе, которые создали в ней свои временные файлы. То же самое касается и /usr/tmp. Как правило, /tmp это отдельная файловая система с весьма ограниченным размером, если у Вас именно так, то размонтируйте ее, удалите директорию /tmp и закомментируйте файловую систему /tmp в файле /etc/fstab или укажите другую точку монтирования для освободившейся файловой системы. ОБЯЗАТЕЛЬНО ОТРЕДАКТИРУЙТЕ /etc/fstab! Если у Вас это обычная директория, то команду umount выполнять не надо и править /etc/fstab, естественно вам не придется.   
393  
394# umount /tmp   
395  
396Удаляем /tmp и /usr/tmp   
397  
398# rm -rf /tmp   
399  
400# rm -rf /usr/tmp   
401  
402Создаем символические ссылки на /var/tmp   
403  
404# ln -s /var/tmp /tmp   
405  
406# ln -s /var/tmp /usr/tmp   
407  
408Гарантируем права 0777 на директорию /var/tmp, а владельцем этой директории назначим суперпользователя и группу wheel.   
409  
410# chmod 0777 /var/tmp   
411  
412# chown root:wheel /var/tmp   
41326\. Перезагрузка системы   
414Итак, Вы подготовили систему для установки Oracle8i - установили все необходимые программы и подготовили дистрибутив Oracle8i, внесли изменения в некоторые конфигурационные файлы системы, установили новое ядро, следовательно, необходимо перегрузиться.   
415  
416# reboot   
417  
418В случае, если Ваше новое ядро откажется загружаться, обратитесь к "FreeBSD Handbook", чтобы выяснить как восстановить и загрузить старое ядро, там это подробно расписано. Затем ищите ошибки в своей конфигурации ядра, исправляйте их и собирайте ядро заново (см. п. 21, п. 22 и п. 23).   
419  
420Если Ваша система загрузилась с новым ядром, то можете поздравить себя - половину пути Вы уже прошли.   
421  
422Новые опции ядра можно посмотреть, используя команду sysctl.   
423  
424# sysctl -a | grep kern.ipc | more   
42527\. Останавливаем веб-сервер Apache   
426Если у Вас установлен и запущен веб-сервер Apache, лучше его пока остановить!   
427  
428# [ -r /var/run/httpd.pid ] &amp;&amp; /usr/local/sbin/apachectl stop   
429  
430Возможно, Ваш apachectl находится в другой директории, а файл процесса находится в другом месте, выясните это сами и остановите Apache.   
431  
432Сразу оговорюсь, если Вы в дальнейшем собираетесь использовать веб-сервер поставляемый с Oracle8i, то тот Apache которой у Вас уже есть в системе лучше не запускать, когда работает веб-сервер Oracle8i. Или убирайте из своей системы Ваш Apache вообще, или сделайте так, чтобы он не мог стартовать автоматически при перезагрузке системы. То же самое относится и к OpenLDAP в случае использования Oracle Internet Directory (OID).   
43328\. Запускаем X Window System   
434Теперь необходимо войти в X Window System под пользователем oracle. В качестве оконного менеджера для пользователя oracle сойдет twm. К тому же, twm потребляет очень мало системных ресурсов, которые очень сильно пригодятся при установке Oracle8i.   
435  
436В своей системе я использую xdm для входа в X Window System на 8-ой виртуальной консоли, поэтому мне было достаточно нажать Alt+F9, а затем ввести логин и пароль пользователя oracle.   
43729\. Читаем переменные окружения пользователя oracle   
438Запустите xterm, если он не запустился у Вас автоматически, и выполните в нем команду bash с ключем -login.   
439  
440% bash -login   
441  
442После выполнения данной команды приглашение в командной строке должно смениться, показывая пользователя oracle, имя хоста и текущую директорию. Чтобы удостовериться, что все переменные окружения прочитаны из файла /usr/oracle/.profile, выполните в этом же окне xterm команду set и убедитесь, что все корректно.   
443  
444% set | more   
44530\. Откроем окно xterm для суперпользователя   
446Запускаем еще одно окно xterm, из того, где мы выполняли bash -login. Запуск именно из этого окна необходим для того, чтобы суперпользователю достались все переменные окружения пользователя oracle. Наличие этих переменных в окружении суперпользователя, в свою очередь избавит Вас от утомительного набирания путей к командам, выполнение которых будет требовать установщик Oracle8i. :-)   
447  
448% xterm &amp;   
449  
450Теперь в новом окне xterm выполним команду su. Вам будет предложено ввести пароль суперпользователя, после ввода которого Вы получите командный интерпретатор на правах суперпользователя.   
451  
452% su   
453  
454Мы создали этот сеанс суперпользователя вовсе не из праздных целей, он нам еще очень сильно пригодится во время установки Oracle8i. Теперь на время забудем про это окно xterm и переключимся обратно в окно xterm пользователя oracle.   
45531\. Запускаем установщик Oracle8i   
456% cd /usr/oinstall   
457  
458% ./runInstaller   
459  
460Запуск установщика Oracle8i на FreeBSD сравним, пожалуй, с запуском двигателя машины, когда температура окружающей среды минус 30 градусов по Цельсию и ниже. С первого раза может и не завестись. ;-) Даже если все рекомендации, предложенные выше, выполнены правильно, то иногда, хотя и очень редко, установщик Oracle8i может зависнуть при прорисовке заставки. Это проявляется в виде прямоугольника серого цвета, появляющегося на экране, с надписью "Loading...", после чего можно подождать, и если заставка так и не прорисовывается, то вернитесь в окно xterm, с помощью команды ps выясните номера процессов runInstaller и jre, и завершите их при помощи команды kill.   
461  
462% ps | grep "jre\|runInstaller"   
463  
464% kill PID PID   
465  
466Затем удалите в директории /tmp все файлы и директории, которые успел создать установщик Oracle8i. Имена файлов и директорий, которые необходимо удалить, можно выяснить по владельцу этих файлов. Они будут принадлежать пользователю oracle. Для удаления Вы можете выполнить следующее:   
467  
468% cd /tmp &amp;&amp; find -d . -user oracle \\( -type f -or -type d \\) -delete -print   
469  
470Затем снова перейдите в директорию /usr/oinstall и запустите скрипт runInstaller. Со второго раза установщик, как правило, запускается. В крайнем случае, повторите это в третий раз. Логического объяснения этому явлению я пока найти не могу, однако и не считаю это мистикой, хотя очень на то похоже. Эта проблема встречается не только на FreeBSD, на некоторых дистрибутивах Linux полностью аналогичная ситуация. Условия для запуска в первый и второй раз абсолютно равные, но такая вот чертовщина, иногда случается.   
471  
472Если ни со второго, ни с третьего раза, установщик Oracle8i так и не запустился, то видимо проблема не в "запуске двигателя при сильном морозе", возвращайтесь к началу статьи и последовательно проверяйте, где Вы ошиблись.   
473  
474Ну а если Вы увидели сначала заставку Oracle Universal Installer, а затем первый экран с приветствием, значит все замечательно. Господа из Oracle Corporation, видимо предчувствовали, что любой системный администратор будет добираться до этого экрана очень долго, поэтому и решили для начала поздороваться с Вами, чтобы разрядить напряженную обстановку и немного расслабить Вас. ;-)   
475  
476Рис. 1. Первый экран, до которого мы так долго добирались! :-)   
477  
478  
479  
480Однако, не будем здесь задерживаться очень долго, поэтому щелкаем мышью по кнопке Next.   
48132\. Отвечаем на вопросы Oracle Universal Installer   
482На втором экране Вас попросят вести пути (File Locations). Пути к тому, что Вы собираетесь устанавливать (Source) и куда (Destination). Эти пути уже заполнены, значение того, что мы собираемся устанавливать взято из переменной $SOURCE назначенной в файле /usr/oinstall/install/oraparam.ini, а значение куда устанавливать, взято из переменной окружения $ORACLE_HOME, пользователя oracle. Так как в полях стоят нужные для нас значения, то переходим к следующему экрану, с помощью кнопки Next.   
483  
484Далее Вас попросят ввести группу пользователей (UNIX Group Name) на Вашей машине, которые будут иметь право обновлять продукты Oracle. Введем группу oinstall и щелкнем мышью по кнопке Next.   
485  
486После этого Oracle Universal Installer понадобятся права суперпользователя для запуска скрипта orainstRoot.sh в директории, на которую указывает $ORACLE_HOME. Запуск этого скрипта необходим, чтобы создать файл /etc/oraInst.loc. В этом файле будет сохранена информация о группе, которая имеет право обновлять продукты Oracle на Вашей системе, и путь к директории, где будет храниться информация об установленных продуктах Oracle.   
487  
488Рис. 2. Oracle Universal Installer просит Вас запустить orainstRoot.sh   
489  
490  
491  
492Переключимся в окно xterm, где у нас запущен командный интерпретатор с правами суперпользователя, и выполним следующее:   
493  
494# $ORACLE_HOME/orainstRoot.sh   
495  
496# ln -s /etc/oraInst.loc /compat/linux/etc/oraInst.loc   
497  
498Теперь вернемся к установщику Oracle8i и нажмем кнопку Retry для продолжения инсталляции.   
499  
500Далее установщик спросит Вас, какой продукт Вы будете устанавливать. Выбираем Oracle8i Enterprise Edition 8.1.7.0.1 и продолжаем с помощью кнопки Next.   
501  
502Следующий вопрос коснется типа установки. Если Вам не нужна различная языковая поддержка для компонентов СУРБД Oracle8i, то отметим пункт типичной установки - Typical (837 MB) и нажмем Next.   
503  
504Если же Вам необходимо, чтобы компоненты СУРБД умели выдавать сообщения на различных языках, но Вы не желаете разбираться с выборочной установкой - Custom, то можно договориться с установщиком Oracle8i на счет языков и при типичной установке. Для этого используем выборочную установку, отмечаем - Custom и нажимаем Next, в результате чего будет предложено выбрать различные компоненты и языки. Нажимаем на кнопку Product Languages... и добавляем необходимые языки. После окончания выбора языков нужно вернуться с помощью кнопки Previous в предыдущий экран. Теперь отметим пункт типичной установки - Typical (837 MB) и нажмем Next.   
505  
506Если Вы точно знаете и понимаете, что Вам надо от СУРБД, то можете произвести выборочную установку Custom или минимальную Minimal (677 MB), но дальше в статье рассматривается типичная установка.   
507  
508После небольшой по времени сборки сведений об устанавливаемых компонентах, Oracle Universal Installer попросит Вас ввести путь к JDK. По умолчанию он предложит путь /usr/local/java, согласитесь с предложенным путем сразу, нажав Next. Помните, в п. 11 мы делали символическую ссылку /compat/linux/usr/local/java, вот именно эту ссылку мы сейчас и указали установщику Oracle8i, ведь Linux-приложениям, будет казаться, что ди</[email protected]>
Published At
Categories with 数据库类
comments powered by Disqus