В этом документе описана установка Oracle 8i release 3 (версия 8.1.7) на RedHat 8.0. Oracle 8i на RedHat 7.2 можно установить по инструкции http://www.linuxlab.dk/fcl/technotes/ora_817_3 . Однако для RedHat 8.0 это не работает. Данные рекомендации по установке на самом деле представляет собой некую компиляцию идей, содержащихся в приведенном ниже списке статей.
Во время я выбрал вариант инсталляции Рабочая станция, графический интерфейс Gnome, создал два дополнительных раздела по 2 G каждый: ora01 для инсталляции Oracle и develop для инсталляции Developer. Во время инсталляции Oracle я использовал раздел с точкой монтирования Develop, как рабочий.
# df -h Filesystem Size Used Avail Use% Mounted on /dev/hda9 2.9G 1.7G 1.0G 61% / /dev/hda8 99M 9.3M 84M 10% /boot /dev/hda12 2.0G 1.2G 709M 63% /develop /dev/hda10 1.9G 1.6G 297M 85% /ora01
Все работы выполнялись в графическом интерфейсе.
Для решения проблемы переключения на русский и правильного
отображения некоторых символов пришлось откорректировать файл /etc/X11/XF86Config.
Строку
Option "XkbModel" "pc104"
заменяем строкойOption "XkbModel" "microsoft"
см. файл /etc/X11/xkb/rules/xfree86.lst
Строку
Option "XkbVariant" "basic"
заменяем строкойOption "XkbVariant" "winkeys"
см. файл /etc/X11/xkb/symbols/ru
Строку
Option "XkbOptions" ""
заменяем строкойOption "XkbOptions" "grp:alt_shift_toggle"
(включает переключатель лат/рус клавишей left_alt + left_shift)/etc/X11/xkb/rules/xfree86.lstНекоторые изменяемые строки могут быть помечены знаком комментария. Не забудьте убрать комментарии. Этот вопрос подробно изложен в прекрасной статье http://www.tsu.ru/~pascal/other/xkb/.
.../Disk1/doc/a85344/a86017.pdf..../Disk1/doc/relnotes.pdf..../Disk1/doc/a85344/a85344.pdf.
Можно также познакомиться с другими руководствами по инсталляции:
Oracle8i Enterprise Edition Release 3 (8.1.7.0.1) for Linux (Intel),
with OPS. Затем вам придется зарегистрироваться. Обьем файла
linux81701.tar составляет 524 МБ.compat-egcs-6.2-1.1.2.16.i386.rpm compat-glibc-6.2-2.1.3.2.i386.rpm compat-libs-6.2-3.i386.rpm
я установил с дистрибутива RedHat 7.2. Вы можете взять их по адресу: http://rpm.pbone.net/index.php3/stat/14/idka/56/datan/2002-09-29
можно найти по адресу http://ftp.sunsite.dk/packages/java/java-linux/JDK-1.1.8/i386/v3/jdk118_v3-glibc-2.1.3.tar.bz2
i386-glibc-2.1-linux.tar.gz
Если какие-либо из указанных здесь ссылок окажутся устаревшими, попробуйте зайти на www.google.com и указать полное имя файла в окне поиска. В полученном списке вы наверняка найдете сайт, на котором есть искомый файл.
Все перечисленные файлы я записал в /develop
linux81701.tar я распаковал
в каталог /develop под пользователем root:
# whoami root # cd /develop # tar xvf linux81701.tar
JDK-1.1.8
в каталог /usr/local/java. Под пользователем root я скопировал
tar файл в каталог /usr/local, распаковал его и создал
символическую ссылку на /usr/local/java: # whoami root # cd /usr/local # cp /develop/jdk118_v3-glibc-2.1.3.tar.bz2 # tar xvIf jdk118_v3-glibc-2.1.3.tar.bz2 # rm jdk118_v3-glibc-2.1.3.tar.bz2 # ln -s /usr/local/jdk118_v3 /usr/local/java
compat-libs-6.2-3.i386.rpm compat-glibc-6.2-2.1.3.2.i386.rpm compat-egcs-6.2-1.1.2.16.i386.rpm
Для установки просто щелкните два раза по rpm файлу. Пакеты зависят
друг от друга. Поэтому, ставить их нужно, если мне изменяет память,
в том порядке, как они перечислены выше.
Проверка установки:
# rpm -q compat-egcs compat-egcs-6.2-1.1.2.14 # rpm -q compat-glibc compat-glibc-6.2-2.1.3.2 # rpm -q compat-libs compat-libs-6.2-3
Для временной замены glibc2.2 на glibc2.1
необходим i386-glibc-2.1-linux.tar.gz . Я распаковал
tar файл, спрятал "официальные" RedHat 8.0 gcc, cc,
ld, библиотеки и на время инсталляции заменил их соответствующими
компонентами glibc2.1:
# whoami root # tar zxvf /develop/i386-glibc-2.1-linux.tar.gz cd /usr/bin # mkdir saved # mv gcc cc ld saved # ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-gcc gcc # ln -s gcc cc # ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-ld ld # cd /usr/lib # mkdir saved # mv libc.so libdl.so libm.so libpthread.so saved # mv libc.a libdl.a libm.a libpthread.a saved
/usr/bin:
# /usr/bin/which make /usr/bin/make # /usr/bin/which ar /usr/bin/ar # /usr/bin/which ld /usr/bin/ld # /usr/bin/which nm /usr/bin/nm
Если утилит нет, значит, во время инсталляции RedHat вы не установили
пакет binutils.2.13.90.0.2-2.i386.rpm . Установите пакет.
# cat /proc/meminfo | grep MemTotal MemTotal: 126112 kB
Filename Type Size Used Priority /dev/hda11 partition 1020088 34668 -1
#uname -a Linux arkady 2.4.18-14 #1 Wed Sep 4 13:35:50 EDT 2002 i686 i686 i386 GNU/Linux
В главе 2 Руководства по инсталляции (Pre-Instalation) указаны различные параметры ядра, которые для работы Oracle должны быть изменены соответствующим образом.
Значение параметров можно посмотреть в /usr/include/linux/shm.h
и /usr/include/linux/sem.h
Параметр |
shm.h |
Oracle
|
Примечание |
SHMMAX |
0x2000000 |
0,5*(physical memory) |
max shared seg size (bytes) |
SHMMIN |
1 |
1 | min shared seg size (bytes) |
SHMMNI |
4096 |
100 | max num of segs system wide |
SHMSEGI |
SHMSEG SHMMNI |
10 | max shared segs per process |
Параметр |
sem.h |
Oracle | Примечание |
SEMMNI |
128 |
100 | <= IPCMNI max # of semaphore identifiers |
SEMMSL |
250 |
60 | <= 8 000 max num of semaphores per id |
SEMMNS |
(SEMMNI*SEMMSL) |
110 | <= INT_MAX max # of semaphores in system |
SEMOPM |
32 |
100 | <= 1 000 max num of ops per semop call |
SEMVMX |
32767 |
32767 | <= 32767 semaphore maximum value |
В моем случае менять ничего не пришлось. Однако следует обратить внимание
на параметр SHMMAX: 0x2000000, что соответствует 64 Mg RAM.
Если память на машине больше128 Mg, нужно изменить этот параметр так,
чтобы он стал равен половине оперативной памяти машины. Для этого можно
добавить в /etc/sysctl.conf:
# For Oracle, half of physmem kernel.shmmax = 134217728
Здесь приведен пример для машины с 256 Мг. Половина составляет 128 Мг
или 0x8000000.
Создаем три группы:
Создаем пользователя Oracle для выполнения инсталляции. Основную группу делаем# whoami root # groupadd orainstall # groupadd oradba # groupadd oraoper
orainstall и дополнительные группы oradba
и oraoper.
# useradd oracle -g orainstall -G oradba,oraoper # passwd oracle Changing password for user oracle New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully
Файловая система, используемая Oracle, может быть организована по-разному. Например, можно создать четыре точки монтирования, одна для программного обеспечения и три для файлов базы данных. Для лучшей производительности эти точки монтирования следует разместить на разные физические устройства.
Подробнее описание организации файловой системы можно посмотреть в приложении
А-2 Optimal Flexible Architecture (OFA) справочника администратора (Administrators's
Reference, .../Disk1/doc/a85344/a85344.pdf ).
Для простоты я использовал одну точку монтирования для базы данных. Раздел
/dev/hda10 смонтирован как /ora01.
Заменяем хозяина /ora01
# whoami root # chown oracle.oradba /ora01 # chmod 755 /ora01
Добавляем следующие строки в /home/oracle/.bash_profile.
# Added for Oracle on 25.10.2002 by Arkady
JAVA_HOME=/usr/local/java; export JAVA_HOME
CLASSPATH=${JAVA_HOME}/lib/classes.zip; export CLASSPATH
ORACLE_BASE=/ora01/app/oracle; export ORACLE_BASE
ORACLE_HOME=${ORACLE_BASE}/product/8.1.7; export ORACLE_HOME
PATH=${PATH}:${ORACLE_HOME}/bin; export PATH
NLS_LANG=AMERICAN_CIS.UTF8; export NLS_LANG
ORA_NLS333=${ORACLE_HOME}/ocommon/nls/admin/data; export ORA_NLS333
ORACLE_SID=oracledb; export ORACLE_SID
if [ "${LD_LIBRARY_PATH:-}" == "" ]
then
LD_LIBRARY_PATH=${ORACLE_HOME}/lib:/usr/lib:/usr/local/lib
else
LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}
fi
export LD_LIBRARY_PATH
export LD_ASSUME_KERNEL=2.2.5
# Удалите знак комментария в последней строке, если umask по умолчанию не 022
# umask 022
Откройте окно терминала и зарегистрируйтесь как oracle и
убедитесь, что умалчиваемое значение umask равно 022. В противном случае
уберите комментарий в последней строке (см. выше).
# whoami root # su - oracle $ umask 022
Проверяем наличие /bin, /usr/bin и /usr/local/bin
в переменной PATH:
$ env | grep PATH PATH=/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin: /ora01/app/oracle/product/8.1.7/bin:/home/oracle/bin
Несколько слов о NLS_LANG. Его структура langauge_territory.charset.
langauge = RUSSIAN приводит к тому,
что Oracle будет выдавать сообщения в нечитаемом виде.
Лучше читать сообщения по-английски, чем вообще не читать.territory = CIS. СНГ оно и есть СНГ.UTF8 совпадает с RedHat
8. Это избавляет нас от проблем перекодировки.Если во время инсталляции что-то пойдет не так, то, возможно, вы захотите
начать все с начала. Перед этим неплохо было бы убрать все, что installer
успел наделать. Сделать это можно так:
$ whoami oracle cd /ora01 $ rm -rf app/ # whoami root # rm /etc/oratab # rm /etc/oraInst.loc # rm /usr/local.bin/coraenv # rm /usr/local.bin/dbhome
Неплохо еще почистить корзину, иначе при следующей инсталляции можно столкнуться с нехваткой места на диске.
Прежде, чем начать установку, проверим еще раз переменные окружения:
$ whoami oracle $ env | grep ORA ORACLE_SID=oracledb ORACLE_BASE=/ora01/app/oracle ORACLE_HOME=/ora01/app/oracle/product/8.1.7 ORA_NLS333=/ora01/app/oracle/product/8.1.7/ocommon/nls/admin/data $ env | grep PATH LD_LIBRARY_PATH=/ora01/app/oracle/product/8.1.7/lib:/usr/lib:/usr/local/lib PATH=/bin:/usr/bin:/usr/local/bin:/usr/bin/X11: /usr/X11R6/bin:/ora01/app/oracle/product/8.1.7/bin:/home/oracle/bin CLASSPATH=/usr/local/java/lib/classes.zip $ env | grep NLS_LANG NLS_LANG=AMERICAN_CIS.UTF8
Заходим в папку /develop/Disk1 и запускаем инсталлятор Oracle
runInctaller:
$ cd/develop/Disk1 $ . runInstaller
/develop/Disk1/stage/products.jar /ora01/app/oracle/product/8.1.7orainstall, /ora01/app/oracle/product/orainstRoot.sh
под пользователем root.
cd /ora01/app/oracle/product/8.1.7 # whoami root # . orainstRoot.sh Creating Oracle Inventory pointer file (/etc/oraInst.loc) Changing groupname of /ora01/app/oracle/oraInventory to orainstall.Возвращаемся в окно инсталлятора и нажимаем Повторить
dbassist.Oracle Protocol Support 8.1.7.0.0Oracle SQLJ 8.1.7.0.0Oracke 8i for UNIX Documentation 8.1.7.0.0В окне Privileged Operating System Groups введите в оба поля
OSDBA and OSOPER значение oradba. Нажмите
Далее. Начиная с этого места, инсталлятор окончательно сбивается
на английский язык.
/usr/local/java.
Нажмите кнопку Далее.root
выполнить скрипт /ora01/app/oracle/product/8.1.7/root.sh.
Но предварительно скрипт нужно поправить:RMF=/bin/rm -f
заменяем строкойRMF="/bin/rm -f"
строку 156 RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\)
'{print $1}`
заменяем строкойRUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\)
'{print $1}'`
Запускаем скрипт под пользователем root:
# whoami
root
# cd /ora01/app/oracle/product/8.1.7
# . root.sh
IMPORTANT NOTE: Please delete any log and trace files previously
created by the Oracle Enterprise Manager Intelligent
Agent. These files may be found in the directories
you use for storing other Net8 log and trace files.
If such files exist, the OEM IA may not restart.
Running Oracle8 root.sh script...
ORACLE_SID is not set
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /ora01/app/oracle/product/8.1.7
ORACLE_SID=
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Нажмите Enter
Creating /etc/oratab file... Entry will be added to the /etc/oratab file by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed.
$ whoami oracle $ dbassist
oradb.localdomainoracledb
После закрытия окна dbassist в окне терминала должна появиться информация:
Database creation completed. Database Information: global database name: oradb.localdomain database system identifier (SID): oracledb SYS account password: change_on_install SYSTEM account password: manager
Т.к. база данных после установки смонтирована, можно сразу проверить ее работоспособность.
$ sqlplus scott/tiger
SQL*Plus: Release 8.1.7.0.0 - Production on Thu Nov 28 12:41:23 2002
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
With the Partitioning option
JServer Release 8.1.7.0.1 - Production
SQL> exit
Disconnected from Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
With the Partitioning option
JServer Release 8.1.7.0.1 - Production
Под пользователем root выполняем следующее:
# whoami root cd /usr/bin rm -f gcc cc ld cd /usr/bin/saved mv * .. cd .. rm -rf saved cd /usr/lib/saved mv * .. cd .. rm -rf saved
Если у вас наборы символов клиента и сервера не совпадают, то следует проверить механизм преобразования символов из набора символов клиента в набор символов сервера и наоборот.
Используя утилиту SQL*Plus, можно выполнить команду:
SQL> select 'йцукенгшщзхъЙЦУКЕНГШЩЗХ' from dual; 'ЙЦУКЕНГШЩЗХЙЦУКЕНГШЩЗХ --------------------------- йцукенгшщзхъЙЦУКЕНГШЩЗХ
Если строка, заключенная в кавычки, возвращается без искажений, то, скорее всего взаимодействие клиент-сервер работает нормально. Если в результате получена строка, целиком состоящая из символов '?', это означает, что клиент и сервер не понимают кодировок друг друга или что эти кодировки не преобразуются друг в друга. Например, US7ASCII и CL8MSWIN1251 (нельзя перекодировать из английского в русский - нужна не перекодировка, а перевод).
Для проверки установки сервера требуется, чтобы SQL - предложение было бы полностью выполнено на сервере. Используя утилиту SQL*Plus, можно выполнить команду:
SQL> select upper('фывапролджэФЫВАПРОЛДЖЭ'), lower('фывапролджэФЫВАПРОЛДЖЭ') from dual;
Тогда при правильной настройке NLS первое поле результата должно быть написано прописными, а второе - строчными буквами.
UPPER('ФЫВАПРОЛДЖЭФЫВАПР LOWER('ФЫВАПРОЛДЖЭФ
------------------------- ---------------------
ФЫВАПРОЛДЖЭФЫВАПРОЛДЖЭ фывапролджэфывапролджэ
Я провел эксперимент. Во время создания базы данных в переменной окружения
NLS_LANG поставил набор символов CL8KOI8R. Затем
изменил его на UTF8, стартовал sqlplus и выполнил
описанный выше тест. Все работает.
Под пользователем oracle стартуйте утилиту svrmgrl:
$ whoami oracle $ svrmgrl Oracle Server Manager Release 3.1.7.0.0 - Production Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved. Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production With the Partitioning option JServer Release 8.1.7.0.1 - Production SVRMGR> connected internal Connected. SVRMGR> startup. ORACLE instance started. Total System Global Area 72704160 bytes Fixed Size 73888 bytes Variable Size 55681024 bytes Database Buffers 16777216 bytes Redo Buffers 172032 bytes Database mounted. Database opened. Server Manager complete. SVRMGR> quit
Для старта Oracle также можно использовать скрипт dbstart
. Но перед этим следует внести изменения в файл /etc/oratab
под пользователем root:
Строку
oracledb: /ora01/app/oracle/product/8.1.7:N
заменяем строкойoracledb: /ora01/app/oracle/product/8.1.7:Y
Под пользователем oracle стартуйте утилиту svrmgrl:
$ whoami oracle $ svrmgrl Oracle Server Manager Release 3.1.7.0.0 - Production Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved. Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production With the Partitioning option JServer Release 8.1.7.0.1 - Production SVRMGR> connected internal Connected. SVRMGR> shutdown Database closed. Database dismounted. ORACLE instance shut down. Server Manager complete. SVRMGR> quit.
Для останова Oracle также можно использовать скрипт dbshut.
декабрь 2002 года.