The OpenNET Project / Index page

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

Каталог документации / Раздел "Базы данных, SQL" (Архив | Для печати)

Инсталляция Oracle 8i release 3 (версия 8.1.7) на RedHat 8.0

Добавлено ( январь 2003):

  • Исключена установка пакетов compat-egcs, compat-glibc и compat-libs.
  • Исправление ошибки, возникающей в конце установки. >>
  • Перезагрузка Linux перед установкой базы данных. >>
  • Выдача сообщений Oracle на русском языке. >>

Введение

В этом документе описана установка Oracle 8i release 3 (версия 8.1.7) на RedHat 8.0. Oracle 8i на RedHat 7.2 можно установить по инструкции www.linuxlab.dk/fcl/technotes/ora_817_3 . Однако для RedHat 8.0 это не работает. Данные рекомендации по установке на самом деле представляет собой некую компиляцию идей, содержащихся в приведенном ниже списке статей.

Несколько слов об установке RedHat

Во время я выбрал вариант инсталляции Рабочая станция, графический интерфейс 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

Некоторые изменяемые строки могут быть помечены знаком комментария. Не забудьте убрать комментарии. Этот вопрос подробно изложен в прекрасной статье www.tsu.ru/~pascal/other/xkb/.

Документация

  • Installaton Guide: если вы ставите Oracle первый раз, возможно, вам следует посмотреть руководство по инсталляции. После распаковки дистрибутива вы найдете его в .../Disk1/doc/a85344/a86017.pdf.

  • Relnotes: это тоже желательно прочесть. См. .../Disk1/doc/relnotes.pdf.

  • Administrators's Reference: справочник администратора можно посмотреть после инсталляции. См. .../Disk1/doc/a85344/a85344.pdf.

Можно также познакомиться с другими руководствами по инсталляции:

Программное обеспечение

Если какие-либо из указанных здесь ссылок окажутся устаревшими, попробуйте зайти на www.google.com и указать полное имя файла в окне поиска. В полученном списке вы наверняка найдете сайт, на котором есть искомый файл.

Все перечисленные файлы я записал в /develop

Подготовка Oracle и дополнительных программ

  • Oracle: Дистрибутив linux81701.tar я распаковал в каталог /develop под пользователем root:
  • # whoami
    root
    # cd /develop
    # tar xvf LINUX81701.TAR
  • JDK: Инсталлятор Oracle требует установки 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 xvjf 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
  • GLIBC: Инсталлятор Oracle не работает с используемой в RedHat 8.0 glibc2.2. Для временной замены glibc2.2 на glibc2.1 необходим i386-glibc-2.1-linux.tar.gz . Я распаковал tar файл, спрятал "официальные" RedHat 8.0 gcc, cc, ld, библиотеки и на время инсталляции заменил их соответствующими компонентами glibc2.1:
  • # whoami
    root
    cd /
    # 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
  • make, ar, ld, nm: эти утилиты должны лежать в /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 . Установите пакет.

Память, swap и версия ядра

  • Память должна быть минимум 128 Мг
  • # cat /proc/meminfo | grep MemTotal
    MemTotal: 126112 kB
  • Размер пространства для свопинга
  • # sbin/swapon -s
    Filename			Type		Size	Used	Priority
    /dev/hda11                      partition	1020088	34668	-1
    
  • Версия ядра должна быть не меньше 2.2
    #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.

Пользователи и группы

Создаем три группы:

  • orainstall - для инсталляции программного обеспечения.
  • oradba - группа администратора базы данных.
  • oraoper - для управления группами.
# whoami
root
# groupadd orainstall
# groupadd oradba
# groupadd oraoper
Создаем пользователя Oracle для выполнения инсталляции. Основную группу делаем 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

Пользовательские переменные окружения Oracle

Добавляем следующие строки в /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=RUSSIAN_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.

  • Если вас устраивают сообщения Oracle на английском языке, то установите компоненту language=AMERICAN. Если же Oracle должен говорить по-русски, то нужно сделать две вещи: установить компоненту langauge = RUSSIAN и исправить файлы сообщений с помощью программы из fixmsg.tgz:
    $ whoami
    oracle
    $ cd $ORACLE_HOME
    $ tar zxvf /develop/fixmsg.tgz
    $ cd fixmsg
    $ . fixmsg
    Подробнее об этом можно прочитать на страничке oraclub.trecom.tomsk.su/faq/nls_lang.htm

  • Компонент territory = CIS. СНГ оно и есть СНГ.

  • Компонент charset. Набор символов UTF8 совпадает с RedHat 8. Это избавляет нас от проблем перекодировки.
Подробнее описание поддержки национальных языков можно посмотреть в Oracle National Langauge Support Guide, otn.oracle.com/docs/products/oracle8i/doc_library/817_doc/server.817/a76966/toc.htm

Инсталляция

Если во время инсталляции что-то пойдет не так, то, возможно, вы захотите начать все с начала. Перед этим неплохо было бы убрать все, что 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
# rm /usr/local/bin/oraenv 

Неплохо еще почистить корзину, иначе при следующей инсталляции можно столкнуться с нехваткой места на диске.

Прежде, чем начать установку, проверим еще раз переменные окружения:

$ 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
  1. Появится окно Добро пожаловать. Нажмите кнопку Далее.

  2. Появится окно Расположение файлов. Убедитесь, что пути установлены:

    • Источник: /develop/Disk1/stage/products.jar
    • Адресат: /ora01/app/oracle/product/8.1.7

    Нажмите кнопку Далее.

  3. В окне Имя группы пользователей Unix напишите orainstall. Нажмите кнопку Далее.

  4. Появится окно с приглашением Выполните командный файл /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.

    Возвращаемся в окно инсталлятора и нажимаем Повторить

  5.  В окне Доступные продукты отметьте Oracle 8i Enterprise Edition 8.1.7.0.1 и нажмите кнопку Далее.

  6. В окне Типы установки отметьте Custom. Нажмите Далее. Если выбрать тип Typical, то во время установки базы данных инсталлятор зависает. Поэтому мы откажемся от установки базы данных и сделаем это позже с помощью dbassist.

  7. В окне Доступные компоненты я дополнительно отметил:

    • Oracle Protocol Support 8.1.7.0.0
    • Oracle SQLJ 8.1.7.0.0
    • Oracke 8i for UNIX Documentation 8.1.7.0.0

    Вы можете этого не делать. Нажмите кнопку Далее .

  8. В окне Статус компонентов Адресат для Java Runtime Enviroment 1.1.8. Нажмите кнопку Далее.

  9. В окне Privileged Operating System Groups введите в оба поля OSDBA and OSOPER значение oradba. Нажмите Далее. Начиная с этого места, инсталлятор окончательно сбивается на английский язык.

  10. В окне Authentication Methods нажмите Далее.

  11. В окне Choose JDK Home Directory должно стоять /usr/local/java. Нажмите кнопку Далее.

  12. В окне Create Database выберите NO и нажмите Далее. Базу данных мы создадим позднее с помощью dbassist.

  13. В окне Oracle Protocol Support нажмите кнопку Далее.

  14. В окне Сводка нажмите кнопку Установка.

    В этом месте начнется копирование файлов. Это займет некоторое время.

  15. Во всплывающем окне будет предложено под пользователем root выполнить скрипт /ora01/app/oracle/product/8.1.7/root.sh. Но предварительно скрипт нужно поправить:

    Строку 102
    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.
            
  16. В окне Net8 Configuration Assistant выберите Perform typical configuration и нажмите Next.

  17. В появившемся окне Сбой инструмента ... нажмите кнопку ОК. В окне Инструментарий конфигурации щелкните на строке:
    Starting web server non-SSL mode on port 7777 - сбой
    Ниже можно увидеть причину ошибки:
    ... error while loading shared libraries: libdb.so.3 ...
    В терминале выполните:
    # whoami
    root
    # cd /usr/lib
    # ln -s /usr/i386-glibc-2.1-linux/i386-glibc21-linux/lib/libdb-2.1.3.so libdb.so.3
    
    В окне Инструментарий конфигурации нажмите кнопку Повторить. В колонке Статус появится Успешно. Нажмите кнопку Далее.

  18. В окне Завершение установки появится сообщение: Установка Oracle 8i успешно завершена. Нажмите Выход. В окне терминала наберите Exit.

Установка базы данных.

  1. Перезагрузите Linux.

  2. Стартуйте dbassist под пользователем oracle:
    $ whoami
    oracle
    $ dbassist
  3. В окне Welcome выбираем Create a database и нажимаем кнопку Next.

  4. В окне Select the type of database выбираем Typical и нажимаем кнопку Next .

  5. В окне Select the method for creating your database выбираем Copy existing database files from CD и нажимаем кнопку Next .

  6. В следующем окне вводим:

    • Global Datebase Name: oradb.localdomain

    • SID: oracledb

    Нажимаем кнопку Finish.

  7. В окне The datafiles will be copied ... нажимаем кнопку Yes.

  8. В окне An Oracle database will be created ... нажимаем кнопку OK.

  9. В окне Database creation completed нажимаем кнопку OK.

После закрытия окна 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

Восстановление оригинальных файлов Glibc2.2

Под пользователем 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 года.

 




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

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