OracleDatabase12cのサイレントインストールに挑戦

Oracleのパフォーマンスチューニングについて勉強したので記事にしようと思ったのですが、

自宅にOracleの環境がない!!

ということでOracleDatabaseのインストールから取り組みました。

最近はGUIで「ポチポチ」っとインストールしていたのですが、コンソールしか無い環境だとどうすればいいんだ?的な素朴な疑問や思わぬトラブルも多かったので、まずはインストール作業からまとめます。

導入環境

  • CentOS release 6.5
  • OracleDatabase 12.1.0.2.0 Enterprise Edition

前述のとおりGUI環境はナシ。(面倒だから環境作ってないだけだけどね!) そのため今回はCUIからのサイレントインストールを行います。

まずはOSの設定

公式のインストレーションガイドに従えば大体うまくいきます。
Oracle Databaseドキュメント

なおカーネルパラメータの設定は飛ばしますが、要チェックやで!!

OSグループ

とにかくOSグループを追加!

$ groupadd -g 54321 oinstall    #OracleInventory
$ groupadd -g 54322 dba         #OSDBAグループ
$ groupadd -g 54323 backupdba   #OSBACKUPDBAグループ
$ groupadd -g 54324 oper        #OSOPERグループ
$ groupadd -g 54325 dgdba       #OSDGDBAグループ
$ groupadd -g 54326 kmdba       #OSKMDBAグループ

OSユーザ

OracleDB用のユーザを追加します。

$ useradd -u 1200 -g oinstall -G dba,oper,backupdba,dgdba,kmdba -h /home/oracle oracle
#パスワードを設定
$ passwd oracle
Changing password for user oracle.
New UNIX password: <oracle ユーザーパスワード>
Retype new UNIX password: <oracle ユーザーパスワード>
passwd: all authentication tokens updated successfully

ディレクトリの作成

インストールに必要なディレクトリを作成します。 ここで作成するのは導入後$ORACLE_BASEとなるディレクトリです。

# $ORACLE_BASEに設定するディレクトリ
$ mkdir -p /opt/app/oracle
$ chown oracle:oinstall /opt/app/oracle
$ chmod -R 775 /opt/app/oracle

# インベントリディレクトリ
$ mkdir -p /opt/app/oracle
$ chown oracle:oinstall /opt/app/oraInventory
$ chmod -R 775 /opt/app/oracle

インベントリのディレクトリはインストレーションガイド見る限りだと事前作成不要なんですが、サイレントインストールの場合は事前に作っていないとエラーになってしまいました。

リソース制限の設定

oracleユーザに対してのシェル制限を設定します。 ここはサーバ性能と相談ですね。

# /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768

いよいよインストールするよ!

ここからは、oracleユーザで実施します。

インストーラーの入手

これが無くちゃ始まらない。

Oracleは商用のイメージが強いですが、個人利用する分にはEnterpriseEditionも無料で入手できます。 (ただしOracleへのユーザ登録が必要です。)

OTN(OracleTechnologyNetwork)からダウンロードしましょう。

http://www.oracle.com/technetwork/jp/database/enterprise-edition/downloads/index.html

そうしたら適当なディレクトリへ配置して展開!!

$ unzip linuxamd64_12102_database_1of2.zip
$ unzip linuxamd64_12102_database_2of2.zip

$ ls -la
drwxr-xr-x 7 oracle oinstall 4096 Jul  7  2014 database
-rw-r--r-- 1 oracle oinstall 1673544724 Aug  5 19:45 linuxamd64_12102_database_1of2.zip
-rw-r--r-- 1 oracle oinstall 1014530602 Aug  5 20:32 linuxamd64_12102_database_2

databaseディレクトリの中にインストーラーが入っています。

レスポンスファイルの作成

このレスポンスファイルがサイレントインストールの肝です。

ここからはこちらのサイトを参考にさせていただきました。
Oracle VM Server とその周辺のもの: Oracle Database 12c を単純にサイレントインストール。

レスポンスファイルの中に、本来インストール時に入力が必要な項目を設定しておくことでコマンドを叩くだけでインストールが完了します。 名前の通りユーザの代わりにレスポンスしてくれているわけです。

レスポンスファイルの雛形が「database/response/db_install.rsp」です。 これを編集しましょう。

# database/response/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/app/oraInventory
SELECTED_LANGUAGES=ja,en
ORACLE_BASE=/opt/app/oracle
ORACLE_HOME=/opt/app/oracle/product/12.1.0/dbhome_1
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
oracle.install.db.BACKUPDBA_GROUP=backupdba
oracle.install.db.DGDBA_GROUP=dgdba
oracle.install.db.KMDBA_GROUP=kmdba
DECLINE_SECURITY_UPDATES=true

インストール実行!

レスポンスファイルができたら、いよいよインストーラーを起動します。

$ /home/oracle/database/runInstaller -ignoreSysPrereqs -waitforcompletion -silent -responseFile /home/oracle/database/response/db_install.rsp

オプションはこんな感じ。

  • ignoreSysPrereqs:システムの前提条件チェックを無視します。
  • waitforcompletion:インストーラーがフォアグランドで動きます。インストールが完了するまでコンソールは戻りません。
  • silent:サイレントモードでインストールを指定する。
  • responseFile:レスポンスファイルを絶対パスで指定する。

インストールが終わるとrootユーザでシェルを実行するようにメッセージが表示されるので、実行します。

$ /opt/app/oraInventory/orainstRoot.sh
$ /opt/app/oracle/product/12.1.0/dbhome_1/root.sh

これでインストールは完了です! $ORACLE_HOME配下を見てみましょう。

$ ls $ORACLE_HOME
addnode      dbs            javavm   odbc         plugins       sqlj
apex         dc_ocm         jdbc     olap         precomp       sqlpatch
assistants   deinstall      jdk      OPatch       QOpatch       sqlplus
bin          demo           jlib     opmn         R             srvm
ccr          diagnostics    ldap     oracore      racg          suptools
cdata        dmu            lib      oradata      rdbms         sysman
cfgtoollogs  dv             log      oraInst.loc  relnotes      ucp
clone        has            md       ord          rest          usm
crs          hs             mgw      oui          root.sh       utl
css          install        network  owm          scheduler     wwg
ctx          instantclient  nls      perl         slax          xdk
cv           inventory      oc4j     plsql        sqldeveloper

無事インストールできた!?

無事インストールできましたが、実は意外な展開がありました……

が、ちょっと長くなりすぎたのでそれはまた次回。

ひとまずOracleDatabaseのサイレントインストールはこんな具合です。参考にしていただければ幸いです。

絵で見てわかるOracleの仕組み (DB Magazine SELECTION)

絵で見てわかるOracleの仕組み (DB Magazine SELECTION)

Oracleの現場を効率化する100の技

Oracleの現場を効率化する100の技