пятница, 7 февраля 2014 г.

Ставим oracle 11 на debian

Для боевой среды это плохая связка, а для тестовой вполне допустимо. И есть много нюансов. Для боевой из бесплатных лучше взять centos

Установка Oracle 11g R2 на Debian Lenny
под squeeze и wheezy алгоритмы примерно те же
HOWTO: Install Oracle 11gR2 on Debian Wheezy

доставим софт
apt-get install libaio-dev sysstat unixodbc-dev libelf-dev unzip g++ libstdc++6-4.7-dev libstdc++5 build-essential gcc-multilib ia32-libs libaio1 rpm xauth

делаем а-ля centos

ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename

для 32 бит
mkdir /usr/lib
ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib
ln -s /usr/lib/i386-linux-gnu/libc_nonshared.a /usr/lib
ln -s /lib/i386-linux-gnu/libgcc_s.so.1 /lib
ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib
Только надо проверить, что все эти файлы существуют. При необходимости ищем их (find, locate) и делаем правильный симлинк.

для 64 бит - будет lib64. Также поиск может быть в /lib или /lib64, надо читать сообщения при попытке сборки

нужен пользователь oracle
groupadd dba
useradd -m -g dba -s /bin/bash -d /home/oracle oracle
passwd oracle

но пользователя и данные можно (нужно?) разделить
mkdir -p /opt/oracle/11g
mkdir /opt/oraInventory
mkdir -p /oradata/db
chown -R oracle:dba /opt/oracle /opt/oraInventory /oradata

Надо настроить /etc/sysctl.conf
vm.swappiness=0
vm.dirty_background_ratio=3
vm.dirty_ratio=15
vm.dirty_expire_centisecs=500
vm.dirty_writeback_centisecs=100
vm.min_free_kbytes=1024

kernel.shmmax=536870912
kernel.shmmni=4096
kernel.shmall=262144

kernel.sem=250 32000 100 142

net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_max=262144

net.ipv4.tcp_rmem=4096 262144 4194304
net.ipv4.tcp_wmem=4096 262144 262144

net.ipv4.ip_local_port_range=1024 65000
fs.file-max = 6553600

а также /etc/security/limits.conf
oracle               soft    nproc   2047
oracle               hard    nproc   16384
oracle               soft    nofile  1024
oracle               hard    nofile  65536

Очередь профиля для oracle
входим под пользователем oracle (локально или по ssh) или делаем sudo -u oracle -i и правим .profile
cat > ~/.profile <<EOF
ORACLE_BASE=/oradata/db
ORACLE_HOME=/opt/oracle/11g
ORACLE_SID=test
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_SID ORACLE_HOME LD_LIBRARY_PATH PATH
EOF

установка проводится в графическом режиме, поэтому нужно или поднимать полноценный Х сервер, или серверную часть + проброс экранов через ssh, лучше второе.
Тогда нужен или Linux на второй машине, или проброс Х
подключение:
$ ssh -XC oracle@orclserver.example.org

Запуск инсталлера
распаковываем инсталлер, переходим туда и от пользователя oracle делаем ./runInstaller

Добавим в автозагрузку
# update-rc.d dbora defaults

Возможные ошибки
ORA-29516: Aurora assertion failure
ORA-29516: Bulk load of method failed; insufficient shm-object space
http://idba-oracle.blogspot.ru/2013/02/ora-29516-aurora-assertion-failure.html
Alter session set JAVA_JIT_ENABLED=FALSE;

https://community.oracle.com/thread/2269694
https://community.oracle.com/thread/1106718

sshd[3786]: error: Failed to allocate internet-domain X11 display socket.
disable ipv6 in general
add AddressFamily inet" to sshd_config
add "X11UseLocalhost no" to sshd_config
set IPv4 explicitly in sshd_config 
+ подключаться нужно именно от юзера oracle

Exception String: Error in invoking target 'agent nmhs' of makefile '.../db/sysman/lib/ins_emagent.mk'. See '.../oraInventory/logs/installActions*.log' for details.

/usr/bin/ld: note: 'B_DestroyKeyObject' is defined in DSO 
в sysman/lib/env_emagent.mk находим
NNMEFET_STACKLIBS_LINK=$(LDPATHFLAG)$(ORACLE_HOME)/$(LIBDIR)  $(LDPATHFLAG)$(PRODLIBHOME) $(LLIBNMEMSO) $(LLIBCORE) -Wl,-rpath,$(AGENTRPATH):$(JAVA_RTLINK_PATH) $(LIB_JVM_LINK) -Wl,--allow-shlib-undefined
заменяем на
NNMEFET_STACKLIBS_LINK=$(LDPATHFLAG)$(ORACLE_HOME)/$(LIBDIR)  $(LDPATHFLAG)$(PRODLIBHOME) $(LLIBNMEMSO) $(LLIBCORE) -lnnz11 -Wl,-rpath,$(AGENTRPATH):$(JAVA_RTLINK_PATH) $(LIB_JVM_LINK) -Wl,--allow-shlib-undefined
(добавляется -lnnz11)
как вариант, меняем $(MK_EMAGENT_NMECTL) на $(MK_EMAGENT_NMECTL) -lnnz11

Error in invoking target 'all_no_orcl' of makefile '/oracle/11g/rdbms/lib/ins_rdbms.mk'
фикс:
sudo apt-get install libstdc++5

INFO: gcc: error: /lib64/libgcc_s.so.1: No such file or directory
фикс
ln -s /usr/lib/gcc/x86_64-linux-gnu/4.7/libgcc_s.so /lib64/libgcc_s.so.1

линки

Комментариев нет:

Отправить комментарий