2015年10月18日日曜日

Oracle Database 12c を単純にサイレントインストール。

Oracle Database 12c のサイレントインストールをしてみたので、記録を残してみようと思います。
今回は下記のような流れです。
  1. 環境準備。Oracle Linux インストール ~ RPM 導入。
  2. Oracle Database のソフトウェアをサイレントインストール。
  3. DB を DBCA のサイレントモードで作成。
  4. 起動確認。
DB も create database ではなく
あえてサイレントモードの DBCA で作成してみました。

Oracle Linux インストール。

Oracle Linux 6.7 をインストールしました。
[root@db01 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.7
[root@db01 ~]# uname -r
3.8.13-68.3.4.el6uek.x86_64

ちなみに、minimal インストールでも OK です。



OS の ネットワーク設定。

★ここからは、root ユーザで作業しています。
  • DB サーバなので、静的な設定(DHCP でなく) にしておきます。
  • インストール簡略化のために ORACLE の Public-yum サーバにアクセスするべく
    インターネットに出られるようにしておきます。

1-3 Oracle のインストール要件となる RPM のインストール。

RPM をダウンロードできる Yum リポジトリは、
Oracle Linux をインストールするとデフォルトで設定されています。
[root@db01 ~]# yum repolist
読み込んだプラグイン:ulninfo
リポジトリー ID          リポジトリー名                                                             状態
public_ol6_UEKR3_latest  Unbreakable Enterprise Kernel Release 3 for Oracle Linux 6Server (x86_64)     469
public_ol6_latest        Oracle Linux 6Server Latest (x86_64)                                       32,352
repolist: 32,821

Oracle Database が必要とする RPM をインストールして、さらに
最低限の設定をしてくれる RPM 「oracle-rdbms-server-12cR1-preinstall」 をインストールします。
※この RPM は、Oracle Linux の ISO イメージにも含まれています。
※ちなみに、これにより今日の時点で 56 個の RPM がダウンロードされました。
※この RPM で、「oracle」 OS ユーザも作成されます。
[root@db01 ~]# yum install -y oracle-rdbms-server-12cR1-preinstall

あと、Oracle Database インストーラを解凍するために、
unzip (ついでに zip も) インストールしておきます。
[root@db01 ~]# yum install -y zip unzip

OS 設定の調整。

hosts ファイルを vi などのエディタで編集して、
IP アドレスと、ホスト名を追記しておきます。
[root@db01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 db01 db01.gowatana.lab

インストール先ディレクトリを作成しておきます。
※今回の ORACLE_BASE は /u01/app/oracle にします。
[root@db01 ~]# mkdir -p /u01/app/oracle
[root@db01 ~]# chown -R oracle:oinstall /u01/app

SELinux は、無効にしてしまいます。
下記のように設定ファイルを編集します。※OS 再起動で反映されます。
[root@db01 ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

OS 再起動。

SELinux の設定変更などのため、いったん OS を再起動します。
[root@db01 ~]# reboot

Oracle Database インストーラの配置。

★ここ以降は、基本的に oracle ユーザでログインして作業します。

OTN から ダウンロードした、Oracle Database のインストーラを配置します。
インストーラのファイルは 2つに分割されています。
[oracle@db01 ~]$ ls -sh1 *zip
1.6G linuxamd64_12102_database_1of2.zip
968M linuxamd64_12102_database_2of2.zip

インストーラを解凍しておきます。
[oracle@db01 ~]$ mkdir work[oracle@db01 ~]$ cd work/
[oracle@db01 work]$ unzip ../linuxamd64_12102_database_1of2.zip
[oracle@db01 work]$ unzip ../linuxamd64_12102_database_2of2.zip
[oracle@db01 work]$ du -sh *2.8G    database

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

サイレントインストールすべく、
Oracle Universal Installer(OUI) のレスポンスファイルを作成します。
ちなみにサンプルファイルは、Database のインストールメディアに含まれています。
( ./database/response/db_install.rsp)

また、いったんどこかで OUI を起動~インストールを進めて、
レスポンスファイルを生成することもできます。

今回は、下記のようなレスポンスファイルを作成しました。
ファイル名は、dbms_oui.rsp としています。

/home/oracle/work/dbms_oui.rsp の内容
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=db01.gowatana.lab
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=ja,en
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.BACKUPDBA_GROUP=dba
oracle.install.db.DGDBA_GROUP=dba
oracle.install.db.KMDBA_GROUP=dba
DECLINE_SECURITY_UPDATES=true

DBMS インストールから DB 作成までまとめて実施することが可能ですが、
経験上、DB 作成で失敗すると悲しいので分けて実施します。

Oracle Database サイレントインストール。

レスポンスファイルを指定して、インストーラを起動します。
  • レスポンスファイルは、フルパスで指定する。
    「-responseFile 」 を相対パスで指定するとエラーになるようです。
  • 気持ち的な妥協レベルに応じて、「-ignoreSysPrereqs」 をつける。
  • 今回は、実は SWAP 容量が足りない環境なので付与しています。
  • インストール処理が一通りおわってからプロンプトが戻るよう 「-waitforcompletion」 をつける。
    デフォルトだと、インストーラが起動されたらプロンプトが戻ってしまいます。
    これで処理の終了がわかりやすくなります。

runInstaller でインストールします。
インストール様子は、下記のような感じです。
[oracle@db01 work]$ /home/oracle/work/database/runInstaller -ignoreSysPrereqs -waitforcompletion -silent -responseFile /home/oracle/work/dbms_oui.rsp
Oracle Universal Installerを起動中です...

一時領域の確認中: 500MBを超えている必要があります.   実際 2804MB    問題なし
スワップ領域の確認中: 150MBを超えている必要があります.   実際 1227MB    問題なし
Oracle Universal Installerの起動を準備中 /tmp/OraInstall2015-10-18_08-49-55PM. お待ちください...[WARNING] [INS-13014] ターゲット環境は、いくつかのオプションの要件を満たしていません。
   原因: 一部のオプションの前提条件が満たされていません。詳細はログを参照してください。/tmp/OraInstall2015-10-18_08-49-55PM/installActions2015-10-18_08-49-55PM.log
   アクション: ログから失敗した前提条件チェックのリストを確認します: /tmp/OraInstall2015-10-18_08-49-55PM/installActions2015-10-18_08-49-55PM.log。次に、ログ・ファイルまたはインストレーション・マニュアル のいずれかから、前提条件を満たす適切な構成を見つけ、手動で修正してください。
このインストール・セッションのログは次の場所にあります:
 /u01/app/oraInventory/logs/installActions2015-10-18_08-49-55PM.log
Oracle Database 12cのインストールが成功しました。
詳細は'/u01/app/oraInventory/logs/silentInstall2015-10-18_08-49-55PM.log'を確認してください。

rootユーザーとして次のスクリプトを実行します:
        1. /u01/app/oraInventory/orainstRoot.sh
        2. /u01/app/oracle/product/12.1.0/dbhome_1/root.sh



Successfully Setup Software.
[oracle@db01 work]$

root ユーザでのスクリプト実行。

上記にもある指示に従って、OUI でのインストールの場合と同じようにスクリプトを実行します。
※これは、root ユーザで実行します。
[root@db01 ~]# id
uid=0(root) gid=0(root) 所属グループ=0(root)

一つめ。
[root@db01 ~]# /u01/app/oraInventory/orainstRoot.sh
権限を変更中 /u01/app/oraInventory.
グループの読取り/書込み権限を追加中。
全ユーザーの読取り/書込み/実行権限を削除中。

グループ名の変更 /u01/app/oraInventory 宛先 oinstall.
スクリプトの実行が完了しました。

二つめ。
[root@db01 ~]# /u01/app/oracle/product/12.1.0/dbhome_1/root.sh
Check /u01/app/oracle/product/12.1.0/dbhome_1/install/root_db01_2015-10-18_20-57-06.log for the output of root script

DB 作成のためのレスポンスファイルの作成。

DB は、サイレントモードの DBCA で作成してみます。
dbca コマンドで指定するレスポンスファイルを作成しておきます。
こちらも OUI のもの同様、サンプルファイルが Database のインストールメディアに含まれています。
( ./database/response/dbca.rsp)

今回のレスポンスファイル /home/oracle/work/dbca_testdb.rsp の内容。
※せっかくなので、コンテナデータベースにして、PDB を 2つ作成してみます。
[GENERAL]
RESPONSEFILE_VERSION = "12.1.0"
OPERATION_TYPE = "createDatabase"

[CREATEDATABASE]
GDBNAME = "testdb"
SID = "testdb"
TEMPLATENAME = "General_Purpose.dbc"
CHARACTERSET = "AL32UTF8"
NATIONALCHARACTERSET = "AL16UTF16"

CREATEASCONTAINERDATABASE = true
NUMBEROFPDBS = 2
PDBNAME = pdb
いろいろ省略して、メモリ容量すら省略してますが、
これでとりあえず DB が作成できます。
レスポンスファイルのパラメータは、
だいたい DBCA の GUI と同じ感覚で指定(省略も)できるようです。

サイレントモードの DBCA で DB 作成。

とりあえず、環境変数を設定しておきます。
[oracle@db01 work]$ export ORACLE_BASE=/u01/app/oracle
[oracle@db01 work]$ export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1
[oracle@db01 work]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@db01 work]$ env | grep ORACLE
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
[oracle@db01 work]$ which dbca
/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbca

dbca をサイレント実行します。
インストール様子は、下記のような感じです。
[oracle@db01 work]$ dbca -silent -responseFile /home/oracle/work/dbca_testdb.rsp
SYSユーザー・パスワードを入力してください:  ★設定するパスワードを入力。

SYSTEMユーザー・パスワードを入力してください:  ★設定するパスワードを入力。

PDBADMINユーザー・パスワードを入力してください:  ★設定するパスワードを入力。

データベース・ファイルのコピー中
1%完了
2%完了
8%完了
13%完了
27%完了
Oracleインスタンスの作成および起動中
29%完了
32%完了
33%完了
34%完了
38%完了
42%完了
43%完了
45%完了
データベース作成の完了
48%完了
51%完了
53%完了
62%完了
70%完了
72%完了
プラガブル・データベースの作成
78%完了
83%完了
100%完了
詳細はログ・ファイル"/u01/app/oracle/cfgtoollogs/dbca/testdb/testdb.log"を参照してください。
[oracle@db01 work]$

作成された DB の様子。

DBCA の終了直後に、DB インスタンスに接続してみました。
[oracle@db01 work]$ export ORACLE_SID=testdb
[oracle@db01 work]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Oct 18 22:18:32 2015

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------
testdb           OPEN

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

PDB もちゃんと 2つ作成されていました。
レスポンスファイルで指定した PDBNAME の末尾に数字が付きます。
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB2                           READ WRITE NO


以上、Oracle Database のサイレントインストールでした。

0 件のコメント:

コメントを投稿