Заходим в web-интерфейс управления proxmox и создаём на основе шаблока openvz-контейнер. В качестве шаблона я взял centos-6-standard_6.3-1_i386.tar.gz.
Например был создан контейнер с id 105.
"Протюнингуем" этот контейнер:
Скачиваем архивы с Oracle (в моём случае это linux_11gR2_database_1of2.zip и linux_11gR2_database_2of2.zip) и распаковываем их, подготавливаем окружение к последующей установке. Производим нижеследующие действия из под пользователя oracle:
Например был создан контейнер с id 105.
"Протюнингуем" этот контейнер:
эти же действия можно проделать соответствующим образом отредактировав конфигурационный файл контейнера /etc/pve/openvz/105.conf. Теперь можно запустить контейнер. В контейнере установим пакеты, которые нам могут потребоваться по зависимостям:vzctl set 105 --kmemsize unlimited --save vzctl set 105 --lockedpages unlimited --save vzctl set 105 --privvmpages unlimited --save vzctl set 105 --shmpages unlimited --save vzctl set 105 --numproc unlimited --save vzctl set 105 --numtcpsock unlimited --save vzctl set 105 --numflock unlimited --save vzctl set 105 --numpty unlimited --save vzctl set 105 --numsiginfo unlimited --save vzctl set 105 --tcpsndbuf unlimited --save vzctl set 105 --tcprcvbuf unlimited --save vzctl set 105 --othersockbuf unlimited --save vzctl set 105 --dgramrcvbuf unlimited --save vzctl set 105 --numothersock unlimited --save vzctl set 105 --dcachesize unlimited --save vzctl set 105 --numfile unlimited --save vzctl set 105 --numiptent unlimited --save
Так-же может возникнуть необходимость установить rpm-пакет pdksh версии 5.2.14, но так как в репозитории установленного контейнера его нет то придётся его скачать из "сторонних" источников:yum install binutils compat-db gcc gcc-c++ glibc glibc-common libstdc++ libstdc++-devel gnome-media-libs gnome-utils-libs make ksh sysstat libaio gnome-screensaver openmotif22 xorg-x11-twm xorg-x11-xinit xorg-x11-xauth usbutils urw-fonts shared-mime-info perl-libwww-perl perl-XML-Parser perl-URI perl-HTML-Tagset perl-HTML-Parser patch lvm2 intltool libIDL libart_lgpl libbonobo xterm libcap libcroco libgnomecanvas libexif libgnomecups libgnomeprint22 libsoup libwnck libxklavier unixODBC unixODBC-devel libaio-devel elfutils-libelf-devel compat-libstdc++-33 -y
Проверяем:wget ftp://ftp.sunet.se/pub/Linux/distributions/redhat/redhat-archive/redhat/linux/6.1/en/os/i386/RedHat/RPMS/pdksh-5.2.14-1.i386.rpm rpm -i pdksh-5.2.14-1.i386.rpm
Добавляем группы и пользователей:rpm -q pdksh
Проверяем:groupadd oinstall groupadd dba useradd -m -g oinstall -G dba oracle usermod -s/bin/bash oracle passwd oracle
Добавляем необходимые лимиты в /etc/security/limits.conf:id oracle uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),1001(dba)
Создаём директории для нашего Oracle:oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
И, если не будет установлен libstdc++.so.5, можно создать символическую ссылку:mkdir /home/oracle/11gR2_db mkdir -p /u01/app/oracle/product/11.2.0/db_1 mkdir /u01/app/oracle/oradata mkdir /u01/app/oraInventory chown -R oracle:oinstall /u01/app/oracle /home/oracle/11gR2_db chown -R oracle:oinstall /u01/app/oraInventory chmod -R 775 /u01/app/oracle /home/oracle/11gR2_db /u01/app/oraInventory
Отредактируем /etc/sysctl.conf на предмет следующих значений:ls -l /usr/lib/libstdc++.so.5 || \ ln -s /usr/lib/libstdc++.so.6.0.13 /usr/lib/libstdc++.so.5
и применим изменения:kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default=4194304 net.core.wmem_default=1048576 net.core.rmem_max=4194304 net.core.wmem_max=1048576 fs.aio-max-nr=1048576
sysctl -p
Вполне вероятно, что некоторые значения fs.file-max, net.ipv4.ip_local_port_range, net.core.rmem_default, net.core.wmem_default, net.core.rmem_max, net.core.wmem_max и fs.aio-max-nr придётся установить не в контейнере, а на самом хосте управления. Будьте готовы к этому. Если вы не являетесь администратором хоста управления то помните, что "админ шоколадки не пьёт!".На данным момент времени мы потратили достаточно усилий и проделали работу результаты которой не хотелось бы потерять если дальше что-то пойдёт не так. Поэтому останавливаем контейнер, создаём резервную копию и запускаем его снова чтобы двигаться дальше.
Скачиваем архивы с Oracle (в моём случае это linux_11gR2_database_1of2.zip и linux_11gR2_database_2of2.zip) и распаковываем их, подготавливаем окружение к последующей установке. Производим нижеследующие действия из под пользователя oracle:
Если не установлена переменная окружения DISPLAY то попробуем сделать это самостоятельно:cd ~oracle/11gR2_db unzip linux_11gR2_database_1of2.zip unzip linux_11gR2_database_2of2.zip cd ~oracle/11gR2_db/database export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1/ export ORACLE_SID=ORA11G
export DISPLAY=localhost:0.0
"Кстати, о птичках". Наткнулся на "удивительный" баг когда при выставленном в sshd_config значении X11Forwarding yes, этот самый x11-форвардинг не работал.
Наткнулся на следующее "решение": в /etc/security/pam_env.conf определяем следующие строки:
REMOTEHOST DEFAULT=localhost OVERRIDE=@{PAM_RHOST} DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY} XAUTHORITY DEFAULT= OVERRIDE=@{XAUTHORITY}
Но в моём случае это не помогло. Но зато помогла установка AddressFamily в значение inet в файле /etc/ssh/sshd_config. Пишут, что это известный баг. Вот только отчего-то очень не очевидный и мало кто приподнимает завесу тайны. Лично у меня ушел целый день на то чтобы совершенно случайно наткнутся на это решение и ву-а-ля X11Forwarding мгновенно заработал.
И ещё, так как успешно-неудачных попыток при написании этого мануала было чуть менее чем более (и никто не сможет утверждать, что у него будет не так-же) то файлики с инсталяцией Oracle я предварительно скачал в /var/lib/vz, а затем, так как контейнеры находятся на том же разделе файловой системы, в момент когда это было необходимо, перед распаковкой, просто создавал жёсткие ссылки:
cd /var/lib/vz/private/105/home/oracle/11gR2_db ln /var/lib/vz/linux_11gR2_database_1of2.zip linux_11gR2_database_1of2.zip ln /var/lib/vz/linux_11gR2_database_2of2.zip linux_11gR2_database_2of2.zip
Достаточно быстро и достаточно удобно.
Ну так вот, теперь мы перед финишной прямой. Хорошей идеей будет создание очередной резервной копии.
Запускаем установку:
После успешного окончания установки заходим root-ом и выполним следующие скрипты:./runInstaller -ignoreSysPrereqs
Для успешного выполнения скрипта root.sh мне пришлось немного подредактировать 84-ю строку, заменив/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/11.2.0/db_1/root.sh
$ECHO 6553600 > $FSMAXFILE
на
$ECHO 6553600
ORACLE_HOSTNAME и ORACLE_UNQNAME можно определить из имени OC4J_DBConsole_*:export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH export ORACLE_HOSTNAME=localhost export ORACLE_UNQNAME=oracle export ORACLE_SID=oracle
ls -l $ORACLE_HOME/oc4j/j2ee| grep OC4J_DBConsole drwxr-x--- 6 oracle oinstall 4096 Май 26 12:36 OC4J_DBConsole drwxr-x--- 10 oracle oinstall 4096 Май 26 12:49 OC4J_DBConsole_localhost_oracle
В файле /etc/oratab будут содержаться ссылки на базы, а также указания какие из них должны запускаться автоматически:
Любители sqlplus могут попробовать выполнить следующую команду:oracle:/u01/app/oracle/product/11.2.0/db_1:Y
Всё это хорошо, но к сожалению установщик Oracle совсем забыл о том, что мы не просто хотим установить Oracle, но ещё и использовать его после каждой перезагрузки контейнера, а для этого нам нужен какой-никакой стартовый скрипт. Вот его нам придётся создать вручную, /etc/init.d/dbora:sqlplus / as sysdba
Далее:#!/bin/sh -e # chkconfig: 345 90 10 # description: Oracle 11G custom start/stop script . /etc/rc.d/init.d/functions LOCKFILE=/var/lock/subsys/oracle DAEMON=oracle ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 ORACLE_OWNER=oracle restart() { stop start } case $1 in 'start') if [ -f $LOCKFILE ]; then echo $0 already running. exit 1 fi su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/lsnrctl start" su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/dbstart $ORACLE_HOME" su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/emctl start dbconsole" #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/isqlplusctl start" touch $LOCKFILE ;; 'stop') if [ ! -f $LOCKFILE ]; then echo $0 already stopping. exit 1 fi su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/lsnrctl stop" su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/dbshut" su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/emctl stop dbconsole" #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/isqlplusctl stop" rm -f $LOCKFILE ;; restart) restart ;; *) echo "Usage: $0 {start|stop}" exit ;; esac exit $?
reboot-им контейнер!chmod +x /etc/init.d/dbora chkconfig --add dbora chkconfig dbora on
Теперь зайти в Oracle Enterprise Manager можно по ссылке https://oraclecontainerhost:1158/em, пользователь SYS, пароль тот, что вводился при установке, входить как SYSDBA.
Продолжение возможно будет следовать... ;)
Немає коментарів:
Дописати коментар