For any question send a email to: joseyluis at gmail dot com
Page by Jose Luis Rodriguez Garcia
Original
Перевод: Сгибнев Михаил
В настоящий момент есть возможность создавать и использовать базы данных Oracle и
следущие инструменты/серверы:
- Database Configuration Assistant (dbca)
- Net Configuration Assistant (netca)
- Oracle Enterprise Manager (OEM) Console in standalone mode (oemapp console)
- Oracle Performance Manager
- Oracle Listener (lsnrctl)
В данный момент не работает:
- Intelligent Agent (lsnrctl)
Версия документа от 1.2 27/11/2005
- Руководство по установке Oracle 9.0.4 на NetBSD/i386.
- Установка 9.2.0.7 патча.
- Создание базы данных
- Создание в графическом режиме
- Создание в ручном режиме
- Сетевая конфигурация (OracleNet)
- Графическая среда администрирования
- Известные проблемы
- Скриншоты
- Logs : kdumps, etc...
Руководство по установке Oracle 9.0.4 на NetBSD/i386
Для начала, нам потребуется ядро NetBSD с последними изменениями в совместимости ipc для Linux.
- Current: после 10 ноября 2005. Содержит необходимые патчи.
- 3.x после 5 ноября 2005 и current после 3 ноября 2005, необходимо наложить патч ядра:
diff.linux-shm.6
- В случае других релизов 2.x, 3.x и current необходимо наложить патчи:
diff.linux-shm.6 и
diff.semopm
Использование NetBSD 1.6.x не возможно, так как не поддерживается Linux Java, а программа установки и
графические утилиты ее используют.
У меня установлены следущие пакеты Suse:
pc-jose# pkg_info|grep -i suse
suse_base-9.1nb7 Linux compatibility package
suse_expat-9.1nb1 Linux compatibility package for expat binaries
suse_fontconfig-9.1 Linux compatibility package for fontconfig binaries
suse_freetype2-9.1 Linux compatibility package for FreeType2 library
suse_libjpeg-9.1nb1 Linux compatibility package for the JPEG library
suse_libpng-9.1nb1 Linux compatibility package for the PNG library
suse_libtiff-9.1nb1 Linux compatibility package for the TIFF library
suse_x11-9.1nb2 Linux compatibility package for X11 binaries
suse_gtk2-9.1nb3 Linux compatibility package for GTK2 binaries
suse_locale-9.1 Locale files for the Linux compatibility package
suse_glx-9.1 Linux compatibility package for the GL library
suse_compat-9.1 Linux compatibility package with old shared libraries
pc-jose#
Устанавливаем Java 1.3 для работы Oracle Installer:
pc-jose# pkg_info|grep -i sun-jre13
sun-jre13-1.0.15nb2 Sun's Java(tm) Runtime Environment 1.3.1
pc-jose#
Скачиваем и распаковываем следущие rpm:
binutils-2.15.90.0.1.1-31.i586.rpm
coreutils-5.2.1-23.8.i586.rpm
cpp-3.3.3-41.i586.rpm
gcc-c++-3.3.3-41.i586.rpm
gcc_old-2.95.3-175.2.i586.rpm
glibc-devel-2.3.3-98.i586.rpm
grep-2.5.1-416.i586.rpm
libstdc++-devel-3.3.3-41.i586.rpm
make-3.80-184.i586.rpm
orarun-1.8-109.15.i586.rpm
Для распаковки я использовал:
cd /emul/linux
rpm2pkg /path-to-rpm-file
Устанавливаем компилятор по умолчанию для Linux gcc/c++ 2.95:
bash$ cd /emul/linux/usr/bin
mv c++ c++.old
mv g++ g++.old
ln -s ../../opt/gcc295/bin/gcc gcc
ln -s ../../opt/gcc295/bin/c++ c++
ln -s ../../opt/gcc295/bin/gcc gcc
Создаем символические ссылки для awk и sed:
cd /emul/linux/bin
ln -s /usr/bin/awk awk
ln -s /usr/bin/sed sed
Создаем сценарий arch:
cd /emul/linux/bin
#!/emul/linux/bin/bash
cat > arch
echo i686
^D
chmod a+x arch
Скачиваем необходимые файлы с
http://www.oracle.com/technology/software/products/oracle9i/index.html,
выбираем Oracle 9i Database Release 2 Enterprise/Standard Edition для Linux. Учтите, что необходимо зарегестироваться.
Распаковываем 3 CD:
gzcat ship_9204_linux_disk1.cpio | cpio -idmv
gzcat ship_9204_linux_disk2.cpio | cpio -idmv
gzcat ship_9204_linux_disk3.cpio | cpio -idmv
Для монтирования
procfs необходимо добавить следущую строку в
/etc/fstab:
/emul/linux/proc procfs rw,linux
И примонтируем:
$ mount procfs
Создаем файлы
/proc/stat и
/proc/swaps, хотя я не знаю, зачем они
нужны Oracle. Возможно, установка будет работать и без них.
Скачиваем
stat и
swaps и копируем в /proc.
Создаем учетную запись и группу для Oracle:
- Создайте пользователя oracle. В качестве оболочки укажите linux bash.
- Необходимо две группы: oinstall и dba, ей принадлежат все файлы Oracle, необходимые для установки.
Для примера, если имеется Oracle9i и Oracle 10g, и создано два пользователя oracle9 и oracle10, то они
должны иметь первичной группой oinstall и в качестве вторичной группы, dba.
- Третья, дополнительная группа: oper. Имеет ограниченные привилегии и используется оператором.
Вы можете использовать другие имена пользователей/групп, я же предпочел стандартные. В результате мы получим:
#cat /etc/passwd:
oracle:*:101:100:Oracle administrator:/usr/oracle:/emul/linux/bin/bash
#cat /etc/group:
oinstall:*:1000:oracle
dba:*:1001:oracle
oper:*:1002:oracle
Опции ядра были выставлены следущие:
options SYSVMSG # System V-like message queues
options SYSVSEM # System V-like semaphores
options SEMMNI=128 # number of semaphore identifiers
options SEMMNS=256 # number of semaphores in system
#options SEMUME=10 # max number of undo entries per process
#options SEMMNU=30 # number of undo structures in system
options SYSVSHM # System V-like memory sharing
options SHMMAXPGS=409600 # 2048 pages is the default
options P1003_1B_SEMAPHORE # p1003.1b semaphore support
Должен быть включен режим эмуляции Linux (в ядре GENERIC присутствует по умолчанию):
options COMPAT_LINUX # binary compatibility with Linux
По желанию, вы можете задействовать опции отладки проблем ipc под NetBSD.
Вся информация будет записываться в /var/log/messages:
options SEM_DEBUG
options SHMDEBUG
Перекомпилируйте ядро и перезагрузитесь.
Установка переменных окружения
Бинарные файлы Oracle устанавливаются в ORACLE_HOME.
ORACLE_HOME находится в каталоге ORACLE_BASE:
ORACLE_BASE
|___
ORACLE_HOME.
Например, ORACLE_BASE=/u01/app, а ORACLE_HOME=/u01/app/oracle/product/9.2.0
Два различных продукта Oracle не могут находиться в одном ORACLE_HOME, но могут разделить ORACLE_BASE..
В ORACLE_BASE устанавливаются бинарные файлы (ORACLE_HOME), пишутся журнальные файлы, сценарии создания
базы данных, когда используется dbca.
Важно:
ORACLE_BASE обязательно должна быть указана. В Oracle 9.2.0.4 для Linux есть ошибка,
обрывающая установку на втором/третьем окне, если переменная ORACLE_BASE не установлена.
ORACLE_HOME необходима при работе программ Oracle, хотя при установке и не обязательна.
Я использую следующий
.profile:
export ORACLE_BASE=/usr/oracle/oracle
export ORACLE_HOME=/usr/oracle/oracle/9.2
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin
export LD_LIBRARY_PATH=/emul/linux/lib:$ORACLE_HOME/lib
export ORACLE_SID=PRUEBA
export THREADS_FLAG=native
#export LD_PRELOAD=/emul/linux/usr/lib/libInternalSymbols.so
Туь важно соблюсти порядок указания каталогов /bin и /usr/bin, так как
при /usr/bin, указанном перед /bin некоторые сценарии Oracle не будут работать, потому что
вместо бинарных файлов Linux будут использоваться бинарные файлы NetBSD.
Установка Oracle
Войдя под учетной записью пользователя oracle, выполните:
export JRE_LOCATION=/usr/pkg/java/sun-1.3.1
cd Disk1
./runInstaller
Укажите тип установки "Custom".
На следующем экране уберите флаг с Enterprise Manager Web Site (это один из компонентов "Oracle Enterprise Manager Products").
На вопрос о Oracle Management Server Repository я выбрал: The Management Server will use an existing repository (использовать существующий репозиторий).
На вопрос "Create Database": выберите "No".
Программа установки попросит выполнить несколько сценариев (root.sh) в правами пользователя root, вы должны
отредактировать эти файлы и заменить
#!/bin/sh или
#!/bin/bash на
#!/pkg/emul/bin/bash.
Инсталляция будет терпеть неудачу в фазе линковки, после копирования всех файлов.
В этом пункте Вы должны изменить все сценарии в Oracle Database и
заменить
#!/bin/sh или
#!/bin/bash на
#!/pkg/emul/bin/bash..
Сценарий
fix_scripts
позволит сделать автоматический поиск и замену соответствующих строк.
$ cd $ORACLE_BASE
$ fix_scritps
Будьте внимательны, изменены будут все сценарии, находящиеся в этом каталоге.
Релинковка базы данных
Выполните эту команду, чтобы завершить установку и слинковать все бинарные файлы.
$ relink all
Должно появиться одно сообщение об ошибке: не найден cob (компилятор КОБОЛа). Это не важно.
Далее необходимо выполнить следущие команды:
$ cd ${ORACLE_HOME}/lib
$ mv libvppdc.so libvppdc.so.old
$ gcc -O1 -Wl,-h,libvppdc.so -o libvppdc.so -shared ${ORACLE_HOME}/network/lib/libvppdc.a -L${ORACLE_HOME}/lib -lirc `cat
${ORACLE_HOME}/network/lib/libvppdc.def| grep -E "[a-zA-Z]+[;]" | sed 's/^/-u/' | sed 's/\;//'`
Этот шаг решает проблему с графическим менеджером производительности с некоторыми версиями linux и Oracle 9.2.0.4.
Заключительные шаги
Добавьте следущие строки в файл
$ORACLE_BASE/jre/1.1.8/bin/jre:
PRG=$ORACLE_BASE/jre/1.1.8/bin/.java_wrapper
export LD_PRELOAD=/emul/linux/usr/lib/libInternalSymbols.so
Добавьте их после строки, начинающейся после "# If PRG is a symlink, trace it to the real ...."
Установка патча 9.2.0.7
Вам необходимо скачать патч p4163445_92070_LINUX.zip, найти его можно в
Metalink->Patches->Quick Links to the Latest Patchets...->Oracle Database->Linux x86->9.2.0.7.
Вам необходима учетная запись Oracle support для metalink
(
http://metalink.oracle.com).
С правами пользователя root выполните:
#cd /emul/linux/usr/lib
#ln -s ../../lib/libpthread.so.0 libpthread.so.0
Эта символическая ссылка устранит ошибку " __sF symbol not found".
С правами пользователя oracle выполните:
$ulimit -d 656020
mkdir patch-dir
cd patch-dir
unzip /path-to-file/ p4163445_92070_LINUX.zip
cd Disk1/install
Отредактируйте файл oraparam.ini, добавив "-native" к параметру
JRE_OSDPARAM=, таким образом получим:
JRE_OSDPARAM="-native"
Далее выполните:
cd ..
./runInstaller
В течение установки вы получите подобные сообщения об ошибках:
Error in invoking target 'install' or makefile
'/usr/oracle/oracle/9.2/rdmbs/lib/ins_rdbms.mk' See
'/usr/oracle/oracle/oraInventory/logs/installActions2005-12-02_10-54-37PM.log' for details
Выполните
fix_scripts с правами пользователя
oracle в каталоге $ORACLE_BASE и нажмите Retry. Если ошибки повторятся, выполните "make -f file.mk".
$cd $ORACLE_BASE
path-to-fix-scripts/fix-scripts
Когда программа установки попросит выполнить root.sh, удостоверьтесь, что сценарий начинается с #!/emul/linux/bin/sh.
Для выполнения сценария используйте команду "su - root -c /emul/linux/bin/bash". Заключающим этапом у нас следует релинковка базы.
$ relink all
Для обновления базы данных, следуйте инструкциям в патче.
Создание базы данных
Создание в графическом режиме
Рекомендуемым способом создания базы данных является использование dbca.
Могут быть две ошибки на этапе создания базы данных:
- "ORA-29807: specified operator does not exist".
Вы должны игнорировать эту ошибку и выполнить сценарий prvtxml.plb из $ORACLE_HOME/rdbms/admin
и завершите установку. После этого выполните сценарий utlrp.sql, что-бы убедиться, что
в базе нет ошибочных объектов. Эта ошибка известна как Oracle bug 2925665.
- "ORA-10430: column being added already exists in table".
игнорируйте ее, она известна как Oracle bug 3955522.
Для запуска скриптов выполните следущее:
export ORACLE_SID=database;
sqlplus /nolog
sqlplus>connect / as sysdba
sqlplus>@?/rdbms/admin/script
sqlplus>quit
Создание в ручном режиме
Если вы хотите создать бызу в ручном режиме, то следуйте следующим шагам:
Сценарий создания базы находится в файле
create.sql.
Так же есть необходимость в создании файла параметров конфигурации базы данных.
Этот файл должен называться init$ORACLE_SID.ora, где ORACLE_SID - имя базы данных.
Файл должен находиться в $ORACLE_HOME/dbs.
Моя база называется PRUEBA (это означает TEST на испанском):
initPRUEBA.ora.
Для создания базы выполните:
export ORACLE_SID=PRUEBA
$ sqlplus /nolog
sqlplus> connect / as sysdba
sqlplus> startup nomount
sqlplus>@path/create.sql
sqlplus>quit
Вам необходимо развернуть структуру каталогов, куда будут сохраняться
файлы данных, перед тем, как будете создавать базу.
Если вы хотите получать доступ через графическую консоль, то необходимо создать файл паролей, для этого
используется утилита
orapwd:
Остановите базу:
qlplus /nolog
sql> connect / as sysdba
sql> shutdown immediate
sql> quit
cd $ORACLE_HOME/dbs
orapwd file=orapw$SID password=mypassword
Запустите базу:
sqlplus /nolog
sql>connect / as sysdba
sql>startup
sql>alter user sys identified by "mypassword";
sql>quit
Сетевая конфигурация (OracleNet)
Вот файлы, которые я использую для OracleNet:
tnsames.ora
listener.ora
Они должны быть сохранены в каталоге
$ORACLE_HOME/network/admin.
Для запуска используйте команду:
$ lsnrctl start
Графическая среда администрирования
Для запуска используйте команду:
$oemapp console
Известные проблемы
-
В эмуляции Linux в NetBSD не реализовано /proc/loadavg.
Это вызывает предупреждение при запуске базы и создает файл трасссировки (расширение .trc).
-
!/bin/sh,#!/bin/bash должны быть заменены на #!/emul/linux/bin/bash во всех сценариях linux.
- Performance Manager не работает по умолчанию.
Это - проблема Linux некоторых версий и Oracle 9.2.0.4. Вы можете пробовать решить это с этими командами:
Вы можете решить эту проблему следующим образом:
$ cd ${ORACLE_HOME}/lib
$ mv libvppdc.so libvppdc.so.old
$ gcc -O1 -Wl,-h,libvppdc.so -o libvppdc.so -shared ${ORACLE_HOME}/network/lib/libvppdc.a -L
${ORACLE_HOME}/lib -lirc `cat ${ORACLE_HOME}/network/lib/libvppdc.def| grep -E "[a-zA-Z]+[;]" | sed 's/^/-u/' | sed 's/\;//'`
$ ls -l libvppdc.so
-rwxr-xr-x 1 oracle oinstall 555621 Jun 15 17:12 libvppdc.so*
- Нельзя использовать Enterprise Manager Web Site. Приводит к прекращению установки.
- Intelligent agent не работает. При попытке запуска сообщает:
-bash-2.05b$ agentctl start agent
DBSNMP for Linux: Version 9.2.0.4.0 - Production on 13-NOV-2005 23:08:11
Copyright (c) 2003 Oracle Corporation. All rights reserved.
Starting Oracle Intelligent Agent.../usr/oracle/oracle/9.2/bin/dbsnmpwd: line 156: 6010 Segmentation fault
nohup $ORACLE_HOME/bin/dbsnmp $* >>$DBSNMP_WDLOGFILE 2>&1
/usr/oracle/oracle/9.2/bin/dbsnmpwd: line 156: 3854 Segmentation fault
nohup $ORACLE_HOME/bin/dbsnmp $* >>$DBSNMP_WDLOGFILE 2>&1
/usr/oracle/oracle/9.2/bin/dbsnmpwd: line 156: 1259 Segmentation fault
nohup $ORACLE_HOME/bin/dbsnmp $* >>$DBSNMP_WDLOGFILE 2>&1
/usr/oracle/oracle/9.2/bin/dbsnmpwd: line 156: 20406 Segmentation fault
nohup $ORACLE_HOME/bin/dbsnmp $* >>$DBSNMP_WDLOGFILE 2>&1
Скриншоты
Oracle Enterprise Manager (OEM) Console
Oracle Performance Manager
Logs : kdumps, etc...
Возможно, кому-то из разработчиков NetBSD будет интересно решить эту проблему:
Вот
Log1 этой команды:
sqlplus /nolog
sqlplus>connect / as /sysdba
sqlplus>startup nomount
sqlplus>quit
Этот лог можно увидеть в /proc/loadavg fail.