Приcтавляем Oracle9i к RedHat 7 (8,9, RHEL3)
|
(21:41) 13.06.2004
|
|
BEFORE YOU START MAKIN LOVE
---------------------------
1. Официальными аппаратными рекомендациями Oracle являются 512MB оперативки, 1GB свопа и 3GB свободного пространства. Опытным путём установлено, что при инсталляции можно обойтись 256MB/500MB/2.5GB соответственно (при условии, что создание непостредственно базы данных при первичной установке будет пропущено). Нет смысла пытаться устанавливать Oracle с <200MB физической памяти - ничего не получится. Проверено электроником.
Кроме того, убедитесь, что в ваш /tmp влезает больше 500MB, иначе успех не гарантирован.
2. В официальном чек-листе указано 2.4.4 Kernel / Glibc 2.2.2. Тем не менее, есть сведения об успешных инсталляциях на ядрах 2.4.2 (RedHat 7.1) и 2.4.3 (Mandrake 8.0).
3. Текстового инсталлятора Oracle больше в природе не существует (хотя для особо одаренных есть возможность поставить всё ручками, которая в данном туториале не рассматривается). Отсюда вывод: убедитесь, что у вас стоят Иксы.
3. Основным камнем преткновения является недокументированная зависимость инсталлятора Oracle9 от версии пакета Binutils. C версиями позднее binutils-2.10.91.0.4-1 инсталлер стабильно валится.
Правильный rpm брать здесь:
http://www.ibiblio.org/pub/Linux/kernel.org/pub/linux/devel/binutils/binutils-2.10.91.0.4-1.i386.rpm
После даунгрейда binutils командой...
# rpm -i --force binutils-2.10.91.0.4-1.i386.rpm
...можно читать дальше.
-------------
ГДЕ ЕГО ВЗЯТЬ
-------------
Официальный метод получения инсталляционных дисков: регистрация на http://otn.oracle.com. Закачка 1.2 гигабайт данных средствами lynx или MSIE преставляется не очень разумным действием, поэтому предлагается воспользоваться утилитой wget:
$ mkdir /usr/ora9_images
$ cd !$
$ wget -b --http-user=USERNAME --http-pass=PASSWORD http://download.oracle.com/otn/linux/oracle9i/Linux9i_Disk1.cpio.gz
$ wget -b --http-user=USERNAME --http-pass=PASSWORD http://download.oracle.com/otn/linux/oracle9i/Linux9i_Disk2.cpio.gz
$ wget -b --http-user=USERNAME --http-pass=PASSWORD http://download.oracle.com/otn/linux/oracle9i/Linux9i_Disk3.cpio.gz
$ rm wget*
Здесь USERNAME и PASSWORD являются именем пользователя и паролем, который вы выбрали для регистрации на otn.oracle.com.
В результате должны скачаться три больших файла:
1. Linux9i_Disk1.cpio.gz (400Mb)
2. Linux9i_Disk2.cpio.gz (620 Mb)
3. Linux9i_Disk3.cpio.gz (80 Mb)
Распаковываются они следующим образом:
$ cd /usr/ora9_images
$ gunzip Linux9i_Disk1.cpio.gz
$ gunzip Linux9i_Disk2.cpio.gz
$ gunzip Linux9i_Disk3.cpio.gz
$ cpio -idmv -F Linux9i_Disk1.cpio
$ cpio -idmv -F Linux9i_Disk2.cpio
$ cpio -idmv -F Linux9i_Disk2.cpio
$ rm Linux9i_Disk*
В итоге получаем три директории Disk1, Disk2 и Disk3. Их содержимое рекомендуется перелить на болванки, хотя, при наличии достаточного дискового пространства, это необязательно. Далее рассматривается вариант без заливки на CDR.
------------
ALMOST THERE
------------
Теперь необходимо решить, куда будет инсталлирована СУБД (ORACLE_HOME). Предлагается точка /usr/oracle, однако ее можно выбрать произвольно в соответствии с вашими пристрастиями (желательно вне папки /tmp). Далее от рута:
# groupadd dba
# useradd oracle
# mkdir /usr/oracle
# chown -R oracle:dba /usr/oracle
# chown -R oracle:dba /usr/ora9_images
!!! Убедитесь, что в /usr/oracle влезает не менее 3 гигабайт.
Помимо папки и юзера рекомендуется сразу создать файл /etc/oratab, из которого Oracle впоследствии будет брать сведения о инициализации баз данных на стадии загрузки системы:
# touch /etc/oratab
# chown oracle:dba /etc/oratab
Остаётся подправить переменные ядра. Следующими командами выставляется максимальный размер сегмента разделяемой памяти (100MB):
# sysctl -w kernel.shmmax=100000000
# echo "kernel.shmmax = 100000000" >> /etc/sysctl.conf
------
СТАВИМ
------
Процесс инсталляции запускается от непревилегированного пользователя в графической среде. Поэтому логинимся в иксы как oracle и говорим в терминал:
$ cd /usr/ora9_install/Disk1
$ export ORACLE_HOME=/usr/oracle
$ ./runInstaller &
В итоге должен запуститься java-инсталлятор. Далее приблизительно описаны его шаги:
1. Выбор типа инсталляции 9i Database -> Enterprise/Standard. Enterprise отличается от Standard наличием таких опций, как использование табличных индексов на базе битовых карт, возможность разбивки таблиц на партиции, переносимость табличных областей и так далее. Если вы точно уверены, что вам это надо - выбирайте Enterprise. Дискового пространства и тот и другой вариант требуют одинаково (примерно 1.8 GB).
2. Этот шаг предлагает вам указать шаблон, по которому будет создана база данных. НАСТОЯТЕЛЬНО рекомендуется выбрать Software Only (инсталляция продуктов без создания БД). Ниже будет рассказано, как создать БД самостоятельно.
3. Далее инсталлятор поинтересуется, от какого юзера:группы всё будет рулиться (oracle:dba), а также где у вас в системе лежит JDK. Если последнего нет или вы не знаете, что это такое - просто оставьте поле пустым. Кроме того, потребуется выполнить два скрипта с правами root (это можно сделать в терминальном окне).
4. Собственно инсталляция. Отличный момент, чтобы сходить за пивом или позвонить родителям.
Если звёзды вам сегодня улыбнулись, инсталлер вскоре сообщит что всё готово и самоуничтожится.
-------------------
СОЗДАЕМ ДАЗУ БАННЫХ
-------------------
Немного лирики: если раньше вам приходилось иметь дело только с MySQL или Postgres, вам может показаться странной одна отличительная особенность архитектуры Oracle: ОДИН сервер обслуживает ОДНУ базу данных. Запущенный сервер, представляющий собой набор системных процессов, обслуживающих табличные области БД (ввод-вывод, резервное копирование, ведение журналов, поддержка сегментов отката и так далее), называется инстанцией (Oracle instance). Соответственно важно понять, что для одновременного использования нескольких баз данных необходимо соответствующее количество инстанций Oracle и, что немаловажно, кратное количество ресурсов системы (если в вашей системе один процессор и не больше полугигабайта оперативной памяти, то приготовьтесь к тому, что база данных будет одна). Уникальный идентификатор отдельно взятой базы данных называется ORACLE_SID и представляет собой альфанумерический набор символов.
Создание базы данных может быть выполнено двумя путями. "Вежливый" способ создания БД - использование специального графического интефейса. Он запускается следующим образом:
$ export PATH=$PATH:$ORACLE_HOME/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
$ dbca &
Описание этого визарда выходит за рамки данного туториала, поэтому автор предлагает начинающему админу Oracle создать БД вручную, чтобы лучше понимать, где у Oracle находятся шестерёнки. Приведенные далее команды выполняются в консоли от пользователя oracle:
$ cat >> /etc/oratab <> beastdb:/usr/oracle:Y
> !
$ cd $ORACLE_HOME/dbs
$ cat initdw.ora |sed s/"#db_name = MY_DB_NAME"/"db_name = beastdb"/|sed s/#control_files/control_files/ > initbeastdb.ora
Здесь мы добавляем запись о новой БД в /etc/oratab и создаем файл инициализации initbeastdb.ora из шаблона initdw.ora. Значения шаблона по умолчанию рассчитаны на самую простую БД Oracle, которую легко потянет машина с 256MB оперативной памяти. initdw.ora отлично прокомментирован, рекомендуется бегло его просмотреть.
$ export PATH=$PATH:$ORACLE_HOME/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
$ export ORACLE_SID=beastdb
$ sqlplus /nolog <> connect / as sysdba
> startup nomount
> create database beastdb;
> !
В результате этих операций создаются табличные области БД beastdb, расположенные в $ORACLE_HOME/dbs. Наконец, чтобы база ожила и стала полезной для человечества:
$ sqlplus /nolog <> CONNECT / AS SYSDBA
> @?/rdbms/admin/catalog
> @?/rdbms/admin/catproc
> !
Теперь, когда у нас есть БД, создадим для нее пользователя beast c паролем 12345 и присвоим ему широкий набор привилегий:
$ sqlplus /nolog <> CONNECT / AS SYSDBA
> CREATE USER beast IDENTIFIED BY 12345;
> GRANT CREATE SESSION, CREATE ANY TABLE TO beast;
> GRANT UNLIMITED TABLESPACE TO beast;
> !
Остается только проверить, насколько успешно все получилось. Приконнектимся к БД от свежесозданного пользователя и выполним ряд простейших операций:
$ sqlplus beast/12345 <> CREATE TABLE test_table (id INTEGER, val VARCHAR2(100));
> INSERT INTO test_table VALUES (1, 'HELLO WORLD');
> SELECT tst.* FROM test_table tst;
> !
Все три SQL-оператора должны вернуть сообщения об успешном выполнении.
---------------------
ЗАПУСК И ОСТАНОВКА БД
---------------------
Деятельность инстанции Oracle можно прервать в любой момент с помощью sql-интерфейса:
$ sqlplus /nolog <> connect / as sysdba
> shutdown
> !
И запустить вновь:
$ sqlplus /nolog <> connect / as sysdba
> startup
!
И запуск, и остановка также выполняются из командной строки:
$ dbshut
$ dbstart
--------------------
СЕТЕВАЯ КОНФИГУРАЦИЯ
--------------------
Интуитивно понятно, что база данных становится вдвойне полезной, если пользователи могут получить к ней доступ из внешней сети. Для этого необходимо сконфигурировать и запустить специальный процесс-демон, принимающий и обрабатывающий tcp-соединения с Oracle. Графический конфигуратор сетевого демона запускается так:
$ netca &
Однако, как и в случае с созданием БД, мы настроим его вручную:
$ cat > $ORACLE_HOME/network/admin/listener.ora <> LISTENER = (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)) (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))
> !
$ lnsrctl start
$ cat > $ORACLE_HOME/network/admin/tnsnames.ora <> BEASTDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = < ваш_хост >)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = beastdb)))
> !
Эти две команды сообщают сетевому серверу, какой протокол и порт использовать для прослушивания, и имя ресурса (beastdb), к которому необходимо направлять запросы. В результате должен запуститься процесс lnsrctl, дееспособность которого тестируется командой:
$ tnsping beastdb 1
(должно вернуть OK)
----------
АВТОЗАПУСК
----------
Легко добиться, чтобы БД взлетала вместе с операционной системой. От рута создадим скрипт /etc/init.d/oracle:
#!/bin/sh
#
# oracle This shell script takes care of starting and stopping
# the oracle services.
#
# chkconfig: 345 90 10
# description: Oracle server
#
# probe: true
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
if [ ! -f /etc/sysconfig/network ]; then
exit 0
fi
# Check for echo -n vs echo \c
if echo '\c' | grep -s c > /dev/null 2>&1 ; then
ECHO_N="echo -n"
ECHO_C=""
else
ECHO_N="echo"
ECHO_C='\c'
fi
# See how we were called.
case "$1" in
start)
# Start server.
$ECHO_N "Starting Oracle: "$ECHO_C
su -l oracle -c sqlplus /nolog >/dev/null < connect / as sysdba
startup
su -l oracle -c "lsnrctl start > /dev/null"
;;
stop)
# Stop server.
$ECHO_N "Stopping Oracle: "$ECHO_C
su -l oracle -c sqlplus /nolog > /dev/null < connect / as sysdba
shutdown abort
su -l oracle -c "lsnrctl stop > /dev/null"
;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
Теперь сообщим системе, чтобы она этот скрипт выполняла при старте (снова от рута):
# chmod 755 /etc/init.d/oracle
# chkconfig --add oracle
Готово. Ради интереса можно перезагрузиться.
--------------------
ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ
--------------------
Для пользователя oracle, от которого выполняется администрирование СУБД, очень полезно подправить .bash_profile следующим образом:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export BASH_ENV=$HOME/.bashrc
export ORAENV_ASK=NO
export ORACLE_SID=beastdb
if [ -f /usr/local/bin/oraenv ];then
. /usr/local/bin/oraenv
fi
ORAENV_ASK=YES
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
----------
НАПУТСТВИЕ
----------
В дальнейшем опирайтесь в своих изысканиях на Oracle Press (переводов которой в Москве продаётся предостаточно), материалы otn.oracle.com и прочую доступную матчасть.
Удачи.
Код для вставки в блог:
Оставьте свой комментарий
Новостная лента
"Лаборатория Касперского": рост бизнеса замедляется
Microsoft выровняет все корпоративные цены для Европы
SpaceX заключила контракт на вывод двух спутников AsiaSat
Компания Airvana подает в суд на Ericsson и требует 330 млн долларов
Anonymous Russia продолжают публиковать архивы о "продажных чиновниках и блогерах"
Hitachi выпускает новые SSD-накопители
Российский веб-сервер Nginx обзаводится коммерческой техподдержкой
Rambus и Nvidia урегулировали все патентные разногласия
Eset начала открытое тестирование бета-версий пятого поколения продуктов
Mail.ru открывает представительство в Волгограде
Создан компьютер, способный работать в суперхолодных условиях
Оператор связи ТТК открыл новый узел доступа во Франкфурте
Ученые создали антитела, способные доставлять противораковые препараты в клетки опухоли
Telenor получила крупные убытки в четвертом квартале
