Установка Oracle Database 12.х в Sun Solaris 11 в текстовом режиме

Данную заметку я написал больше для себя, чтобы в будущем было проще найти информацию и избежать уже сейчас очевидных ошибок. На работе выделили сервер Sparc T7-2 и поставили задачу: установить OS Solaris, разобраться с контейнерами и LDoms (Logical Domains), а также установить база данных Oracle Database. С серверами Sparc и OS Solaris столкнулся впервые, поэтому читал и «курил» кучу документации, статей и форумов. Со всеми поставленными задачами разобрался успешно, но больше всего времени потратил на установку базы данных Oracle. Везде, даже официальная документация предполагает установку в графическом режиме. Но это не наш метод. Графику на никсовых серверах не приемлю и не понимаю, зачем тратить ресурсы на «рюшечки»?

Мой руководитель сразу сказал, «не парься, ставь в графике, мы всегда так делаем». Но это же не интересно, к тому же время позволяло, чтобы разобраться и установить в текстовом режиме. Все свои шаги записывал, поэтому ниже привёл ту последовательность и те ошибки, которые у меня возникли во время установки.

С сайта oracle скачиваем zip-архив с файлами установки базы данных, не забывая правильно выбрать платформу установки. На момент установки была доступна версия 12c Release 2.

Устанавливаем следующие пакеты, если они ещё не были установлены.

# pkg install SUNWxwplt SUNWmfrun

Во время установки у меня появилось сообщение следующего содержания:

pkg install: 'SUNWxwplt' matches multiple packages
pkg://solaris/compatibility/packages/SUNWxwplt
pkg://solaris/SUNWxwplt
Please provide one of the package FMRIs listed above to the install command.

Изменим строку установки на предложенную.

# pkg install pkg://solaris/SUNWxwplt SUNWmfrun

Добавим необходимые группы и пользователя oracle:

# groupadd oinstall
# groupadd dba
# groupadd oper
# groupadd asmadmin
# groupadd asmdba
# groupadd asmoper
# useradd -g oinstall -G dba,oper,asmadmin,asmdba,asmoper -m oracle

В конец файла /export/home/oracle/.profile необходимо добавить следующие строки:

ORACLE_SID=orcl; export ORACLE_SID
ORACLE_UNQNAME=$ORACLE_SID; export ORACLE_UNQNAME
ORACLE_TERM=xterm; export ORACLE_TERM
ORACLE_HOSTNAME=solaris.local; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.2/db_1; export ORACLE_HOME
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

Соответственно, в параметре ORACLE_HOSTNAME указываете своё название хоста, а в параметре ORACLE_BASE указываете, где у вас будут лежать базы. Следующим шагом будет создание необходимого каталога

# mkdir /u01

Распаковываем скаченный ранее архив в только что созданный каталог и выставляем правильные права доступа.

# unzip -d /u01 /home/soft/solarissparc64_12201_database.zip
# chown -R oracle:oinstall /u01
# chmod -R 755 /u01

Как следует из документации Oracle, установку базы данных следует осуществлять из под пользователя oracle.

# su - oracle

Запускаем процесс установки:

$ /u01/database/runInstaller -silent -showProgress -responseFile /u01/database/response/db_install.rsp

У меня установка прервалась с сообщением на нехватку места в каталоге tmp, хотя на диске места было предостаточно. Выход простой, создать где-нибудь, например в /opt, каталог tmp и прописать соответствующий путь у пользователя oracle в .profile.

set TMP=/opt/tmp
set TMPDIR=/opt/tmp

Выставим необходимые права доступа к каталогу /opt/tmp

# chown -R oracle:oinstall /opt/tmp

Дальнейшая установка снова прерывалась с ошибкой. Вот тут пришлось немного попотеть и поискать ответ в интернете. На официальном сайте я так ничего толком не нашёл. В итоге необходимую мне информацию нашёл в личном блоге то ли поляка, то ли чеха (сейчас уже не вспомню, а ссылку у себя не сохранил). Как оказалось, необходимо заполнить файл /u01/v12/database/response/db_install.rsp, да не абы как, а правильным образом. Файл db_install.rsp на самом деле довольно большой с кучей комментариев, поэтому ниже я указал только те параметры, которые были изменены.

$ vi /u01/v12/database/response/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
ORACLE_HOME=/u01/app/12c/product/12.2.0.1/dbhome_1
ORACLE_BASE=/u01/app/12c
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.isRACOneInstall=false
oracle.install.db.rac.serverpoolCardinality=0
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.ConfigureAsContainerDB=false
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=false
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.managementOption=DEFAULT
oracle.install.db.config.starterdb.omsPort=0
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/app/12с/oradata
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/u01/app/12с/orabackup

Сохраняем файл и снова запускаем установку… Опять вылетает с ошибкой, но уже с другой.

[FATAL] [INS-13013] Target environment does not meet some mandatory requirements.
CAUSE: Some of the mandatory prerequisites are not met. See logs for details. /opt/tmp/OraInstall2018-05-28_07-01-31PM/installActions2018-05-28_07-01-31PM.log

Поиск в интернете подсказал, что в этом случае установку базы необходимо запустить с ключом -ignorePrereq.

$ /u01/v12/database/runInstaller -silent -ignorePrereq -showProgress -responseFile /u01/v12/database/response/db_install.rsp
Prepare in progress.
.................................................. 8% Done.
Prepare successful.
Copy files in progress.
.................................................. 20% Done.
.................................................. 25% Done.
.................................................. 30% Done.
.................................................. 37% Done.
.................................................. 42% Done.
.................................................. 47% Done.
.................................................. 56% Done.
.................................................. 61% Done.
.................................................. 66% Done.
.................................................. 71% Done.
.................................................. 76% Done.
.................................................. 81% Done.
Copy files successful.
Link binaries in progress.
Link binaries successful.
Setup files in progress.
..............................
Setup files successful.
Setup Inventory in progress.
Setup Inventory successful.
Finish Setup successful.
The installation of Oracle Database 12c was successful.
Please check '/u01/app/12c/oraInventory/logs/silentInstall2018-05-28_07-04-02PM.log' for more details.
Setup Oracle Base in progress.
Setup Oracle Base successful.
.................................................. 95% Done.
As a root user, execute the following script(s):
1. /u01/app/12c/oraInventory/orainstRoot.sh
2. /u01/app/12c/product/12.2.0.1/dbhome_1/root.sh
..................................................   100% Done.
Successfully Setup Software.

Далее, как советует установщик, из под пользователя root выполнить пару скриптов.

# /u01/app/12c/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/12c/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/12c/oraInventory to oinstall.
The execution of the script is complete
# /u01/app/12c/product/12.2.0.1/dbhome_1/root.sh
Check /u01/app/12c/product/12.2.0.1/dbhome_1/install/root_solaris_2018-05-28_19-23-30-157853780.log for the output of root script

Собственно, на этом установка базы данных oracle завершена. Создание и наполнение базы это уже тема отдельной заметки.

Несколько ссылок, которые мне помогли найти решение: