Т.к. Oracle Database будет устанавливаться на сервер, где X-сервера нет, то установим Xming на рабочей машине с Windows.
Качаем и устанавливаем.
Редактируем файл C:Program Files (x86)XmingX0.host
s, добавляем в него IP или имена хостов, которым можно подключаться к этой машине:
Редактируем C:WindowsSystem32driversetc
и добавляем адрес и имя сервера, на котором будет устанавливаться Oracle.
Переходим к самому серверу.
Установка производится на:
# uname -a Linux cent2 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/redhat-release CentOS release 6.4 (Final)
Обновляем все установленные пакеты:
# yum update
Открываем файл /etc/sysconfig/network
, проверяем соответствие имени хоста:
HOSTNAME=cent2
Проверяем файл /etc/hosts
:
# cat /etc/hosts | grep cent2 127.0.0.1 cent2 localhost.localdomain localhost
Обратите внимание, что имя хоста должно идти первым, до localhost
и прочего. Иначе будет ошибка, описанная ниже.
# cd /etc/yum.repos.d
Устанавливаем Oracle Public Yum:
# wget https://public-yum.oracle.com/public-yum-ol6.repo
Устанавливаем ключ:
# wget https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
В случае ошибки “Connecting to public-yum.oracle.com|95.100.248.80|:443… failed: Connection refused“. – можно установить репозиторий вручную.
Устанавливаем пакет oracle-rdbms-server-11gR2-preinstall
, который установит все необходимые зависимости, создаст пользователя, группы и установит limits
:
# yum install oracle-rdbms-server-11gR2-preinstall ... --> Running transaction check ---> Package oracle-rdbms-server-11gR2-preinstall.i686 0:1.0-7.el6 will be installed --> Processing Dependency: kernel-uek for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.i686 ... Total download size: 52 M Installed size: 145 M ... Installed: oracle-rdbms-server-11gR2-preinstall.i686 0:1.0-7.el6 ... Complete!
Качаем архив с необходимым пакетом со страницы загрузок сайта Oracle. Отмечаем “Accept License Agreement“, в данном примере устанавливаться будет:
Oracle Database 11g Release 2 (11.2.0.1.0) for Linux x86 | ||
linux_11gR2_database_1of2.zip (1,285,396,902 bytes) (cksum – 2237015228) | ||
linux_11gR2_database_2of2.zip (995,359,177 bytes) (cksum – 2649514514) |
Проверяем наличие пользователя:
# cat /etc/passwd | grep oracle oracle:x:54321:54321::/home/oracle:/bin/bash
Проверяем группы:
# cat /etc/group | tail -n 2 oinstall:x:54321: dba:x:54322:oracle
Устанавливаем пароль пользователю:
# passwd oracle Changing password for user oracle. New password: BAD PASSWORD: it is too short BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully.
Далее действия выполняем от пользователя oracle
:
# su -l oracle
Проверяем установленные ограничения для пользователя:
$ cat /etc/security/limits.conf | grep oracle # oracle-rdbms-server-11gR2-preinstall setting for nofile soft limit is 1024 oracle soft nofile 1024 # oracle-rdbms-server-11gR2-preinstall setting for nofile hard limit is 65536 oracle hard nofile 65536 # oracle-rdbms-server-11gR2-preinstall setting for nproc soft limit is 2047 oracle soft nproc 2047 # oracle-rdbms-server-11gR2-preinstall setting for nproc hard limit is 16384 oracle hard nproc 16384 # oracle-rdbms-server-11gR2-preinstall setting for stack soft limit is 10240KB oracle soft stack 10240 # oracle-rdbms-server-11gR2-preinstall setting for stack hard limit is 32768KB oracle hard stack 32768
В случае необходимости – их можно изменить.
Вывести текущие данные для пользователя можно командой ulimit
. Например – посмотреть ограничения на количество одновременно открытых файлов:
$ ulimit -n 1024
Ограничение на максимальное количество процессов:
$ ulimit -u 2047
При достижении параметра soft limit
для nofile
– система будет сообщать об ошибке:
fork: retry: Resource temporarily unavailable
В таком случае можно изменить лимит командой:
$ ulimit -u 2048
Но нельзя увеличить лимит свыше параметра, указанного как hard
.
Создадим домашнюю директорию для самого Oracle:
$ mkdir u01
Директорию для баз:
$ mkdir u01/app/oracle/product/11.2.0/dbhome_1
Редактируем .bashrc
:
TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_HOSTNAME=cent2.localhost1; export ORACLE_HOSTNAME ORACLE_UNQNAME=DB11G; export ORACLE_UNQNAME ORACLE_BASE=/home/oracle/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME ORACLE_SID=orcl; export ORACLE_SID PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH export PATH
Перечитываем файл:
$ . .bashrc
Устанавливаем вывод DISPLAY
на IP машины с Windows:
$ export DISPLAY=10.249.***.**:0.0
Запускаем терминал:
$ xterm Warning: Cannot convert string "nil2" to type FontStruct xterm: cannot load font -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
На машине с Windows должно открыться окно:
В случае ошибки вида:
$ xterm No protocol specified
Проверяем логи Xming-а (правой кнопкой на иконке в трее – View Log).
Разархивируем пакет с Oracle Database 11g:
$ unzip linux_11gR2_database_1of2.zip $ unzip linux_11gR2_database_2of2.zip
В окне xterm на Windows запускаем установку:
$ ./database/runInstaller Starting Oracle Universal Installer... Checking Temp space: must be greater than 80 MB. Actual 25721 MB Passed Checking swap space: must be greater than 150 MB. Actual 4062 MB Passed Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed Preparing to launch Oracle Universal Installer from /tmp/OraInstall2013-10-11_12-07-31PM. Please wait ...
Должно появится окно:
Заполняем поля, жмём Next. Устанавливаем параметры proxy
, если требуется:
В данном случае Oracle будет использовать локальный CNTLM-прокси.
Есил не хотите получать обновления и прочее – поставьте галочку:
Или просто не указывайте ничего в первом окне, и нажмите Yes в появившемся окне с предупреждением.
Создаём новую базу данных:
Выбираем тип установки Server Class:
Указываем Single Instance:
Выбираем Typical install:
Далее нам необходимо указать пути к каталогам, которые мы задали в .bashrc
:
$ tree -L 5 ... └── u01 └── app └── oracle └── product └── 11.2.0
Будем использовать принятые по-умолчанию значения:
ASMSNMP Password
– оставляем пустым;
Database Edition
– в данном случае подойдёт Standart Edition One, но на рабочий сервер лучше всё-таки Enterprise Edition. Разница хорошо видна тут>>>.
OSDBA group
– по-умолчанию принята dba
, но в данном случае нужна oistall
:
$ cat /etc/group | tail -n 2 oinstall:x:54321: dba:x:54322:oracle
Проверим группы пользователя:
# groups oracle oracle : oinstall dba
Если необходимо – добавьте вручную:
# useradd -G oinstall oracle
Если кликнуть на значок ? слева от поля – появится окно с описанием каждого пункта.
Указываем директорию для файлов установки:
Начинаются различные предустановочные проверки:
Проверка необходимых зависимостей:
Устанавливаем необходимое:
# yum -y install elfutils-libelf-devel unixODBC unixODBC-devel pdksh
Копировать можно прямо из окна инсталятора, но иногда приходится несколько раз выполнять Ctrl+C и Ctrl+V.
Возможна ошибка:
No package pdksh available.
Нажимаем Check again:
Теперь не хвататет только пакета pdksh-5.2.14
. Однако, на официальной странице руководства Oracle об этом поминается, и сказано:
11.2.0.1: The installer shows multiple “missing package” failures because it does not recognize several of the newer version packages that were installed. These “missing package” failures can be ignored as the packages are present. The failure for the “pdksh” package can be ignored because we installed the “ksh” package in its place.
Проверяем:
# yum info ksh ... Installed Packages Name : ksh ... Repo : installed
ОК, ставим галочку Ignore All и нажимаем Next:
Последний раз всё проверяем:
Если есть необходимость повторной установки в Silent Mode Installation – сохраните файл, нажав кнопку Save Response File.
Запускаем установку:
В случае ошибки Oracle Net Configuration Assistant failed:
Проверьте файл /etc/hosts
– первым в нём должно идти имя машины:
# cat /etc/hosts | head -n 1 127.0.0.1 cent2 localhost.localdomain localhost
После этого – нажимаем Retry:
Начинается копирование файлов базы:
Можно понаблюдать за логами:
# ls -l /home/oracle/u01/app/oracle/cfgtoollogs/dbca/orcl/ total 56 -rw-r-----. 1 oracle oinstall 276 Oct 12 07:30 cloneDBCreation.log -rw-r-----. 1 oracle oinstall 330 Oct 12 07:30 CloneRmanRestore.log -rw-r-----. 1 oracle oinstall 1888 Oct 12 07:30 initorclTemp.ora -rw-r-----. 1 oracle oinstall 1428 Oct 12 07:28 rmanRestoreDatafiles.sql -rw-r-----. 1 oracle oinstall 40640 Oct 12 07:30 trace.log
# tail -f /home/oracle/u01/app/oracle/cfgtoollogs/dbca/orcl/trace.log [Thread-14] [ 2013-10-12 07:30:54.828 EDT ] [CloneDBCreationStep.executeImpl:521] Removing existing services from sourcedb seeddata [Thread-14] [ 2013-10-12 07:30:55.037 EDT ] [CloneDBCreationStep.executeImpl:526] Renaming globale_name [Thread-14] [ 2013-10-12 07:30:55.073 EDT ] [CloneDBCreationStep.executeImpl:601] Temp file to be added:=/home/oracle/u01/app/oracle/oradata/{DB_UNIQUE_NAME}/temp01.dbf [Thread-14] [ 2013-10-12 07:30:55.073 EDT ] [CloneDBCreationStep.executeImpl:602] Temp file size in KB:=20480 [Thread-14] [ 2013-10-12 07:30:55.725 EDT ] [CloneDBCreationStep.executeImpl:632] Establish USERS as the default permanent tablespace of the database [Thread-14] [ 2013-10-12 07:30:55.740 EDT ] [TemplateManager.isInstallTemplate:2300] Selected Template by user:=General Purpose [Thread-14] [ 2013-10-12 07:30:55.740 EDT ] [TemplateManager.isInstallTemplate:2307] The Message Id to be searched:=GENERAL_PURPOSE [Thread-14] [ 2013-10-12 07:30:56.068 EDT ] [CloneDBCreationStep.executeImpl:650] ** INSTALL SAMPLE SCHEMA'S ** [Thread-14] [ 2013-10-12 07:30:56.068 EDT ] [CloneDBCreationStep.executeImpl:691] Transportable datafile:=/home/oracle/u01/app/oracle/oradata/orcl/example01.dbf [Thread-14] [ 2013-10-12 07:30:56.068 EDT ] [CloneDBCreationStep.executeImpl:698] Script to be Excecuted ::::=/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/mkplug.sql
Полный лог установки – в файле:
# tail -f /home/oracle/u01/app/oraInventory/logs/installActions2013-10-12_05-53-05AM.log
В случае ошибки вида Listener is not up or database service is not registered with it:
Проверяем настройки.
Запускаем консоль LISTENER
:
$ /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl
LSNRCTL> start Starting /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.2.0.1.0 - Production System parameter file is /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Log messages written to /home/oracle/u01/app/oracle/diag/tnslsnr/cent2/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=cent2.localhost)(PORT=1521))) TNS-12545: Connect failed because target host or object does not exist TNS-12560: TNS:protocol adapter error TNS-00515: Connect failed because target host or object does not exist Listener failed to start. See the error message(s) above...
Файл /etc/hosts
– первым должна идит запись об имени хоста (об этому уже упоминалось в начале статьи):
# cat /etc/hosts | head -n 1 127.0.0.1 cent2 localhost.localdomain localhost
Далее:
# cat /etc/sysconfig/network | grep HOSTNAME HOSTNAME=cent2
Проверяем имя хоста в данный момент:
$ hostname cent2
Проверяем файл настроек самого Listener
-а – /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
$ cat /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora | grep HOST (ADDRESS = (PROTOCOL = TCP)(HOST = cent2)(PORT = 1521))
Пробуем запустить ещё раз:
LSNRCTL> start Starting /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.2.0.1.0 - Production System parameter file is /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Log messages written to /home/oracle/u01/app/oracle/diag/tnslsnr/cent2/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=cent2)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 12-OCT-2013 07:56:39 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File /home/oracle/u01/app/oracle/diag/tnslsnr/cent2/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=cent2)(PORT=1521))) The listener supports no services The command completed successfully
LSNRCTL> status Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 12-OCT-2013 07:56:39 Uptime 0 days 0 hr. 5 min. 53 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File /home/oracle/u01/app/oracle/diag/tnslsnr/cent2/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=cent2)(PORT=1521))) Services Summary... Service "orcl.localdomain" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "orclXDB.localdomain" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully
Проверяем порт:
# netstat -anp | grep 1521 tcp 0 0 127.0.0.1:38293 127.0.0.1:1521 ESTABLISHED 6030/ora_pmon_orcl tcp 0 0 :::1521 :::* LISTEN 6421/tnslsnr tcp 0 0 ::ffff:127.0.0.1:1521 ::ffff:127.0.0.1:38293 ESTABLISHED 6421/tnslsnr unix 2 [ ACC ] STREAM LISTENING 881216 6421/tnslsnr /var/tmp/.oracle/sEXTPROC1521
В окне с ошибкой нажимаем OK и продолжаем установку.
В следующем окне кликаем на Password Management:
Устанавливаем пароль для пользователя SYS
:
Жмём OK, и переходим к запуску скриптов от пользователя root
:
# /home/oracle/u01/app/oraInventory/orainstRoot.sh Changing permissions of /home/oracle/u01/app/oraInventory. Adding read,write permissions for group. Removing read,write,execute permissions for world. Changing groupname of /home/oracle/u01/app/oraInventory to oinstall. The execution of the script is complete.
# /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/root.sh Running Oracle 11g root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1 Enter the full pathname of the local bin directory: [/usr/local/bin]: Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ... Creating /etc/oratab file... Entries will be added to the /etc/oratab file as needed 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. Finished product-specific root actions.
Жмём ОК для продолжения.
Установка завершена:
Проверяем работу TNSLSNR
:
$ tnsping localhost 10 TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 12-OCT-2013 09:26:35 Copyright (c) 1997, 2009, Oracle. All rights reserved. Used parameter files: /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora Used EZCONNECT adapter to resolve the alias Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))) OK (20 msec) OK (20 msec) OK (10 msec) OK (10 msec) OK (20 msec) OK (10 msec) OK (10 msec) OK (10 msec) OK (10 msec) OK (10 msec)
Проверяем наличие процесса:
$ ps -ef | grep pmon oracle 6030 1 0 07:37 ? 00:00:05 ora_pmon_orcl
Или так:
$ ps -ef| grep $ORACLE_SID | grep -v grep | grep -v ora_ oracle 14918 14917 0 10:05 ? 00:00:04 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
Проверим работает ли сама база. Подключаемся через sqlplus
:
$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Sat Oct 12 12:05:21 2013 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Release 11.2.0.1.0 - Production SQL>
SQL> SELECT NAME FROM v$database; NAME --------- ORCL
Или так:
SQL> select database_status from v$instance; DATABASE_STATUS ----------------- ACTIVE
Возможна ошибка:
ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initDB11G.ora'
Необходимо проверить переменную $ORACLE_SID
:
$ echo $ORACLE_SID orcl
Если во время установки был указан другой SID
, или отличается в файле профиля пользователя:
$ cat .bashrc | grep SID ORACLE_SID=orcl; export ORACLE_SID
То будут возникать подобные проблемы.