2017/04/16

Oracle Database 12.2検証環境をVagrantで素早く構築

Oracle Cloud で先行してリリースされていた Oracle Database 12c リリース 2 のオンプレミス版がリリースされました。

仮想環境を手軽に構築できる Vagrant を使用して Linux 版 Oracle Database 12.2 検証環境を構築する方法を紹介します。

Vagrantによるセットアップ手順

リリース当日(3月2日)にすでに Vagrant を使用した手順が公開されています。

この README には全て必要なことが書かれています。

Oracle Database にはインストールの自動実行用にサイレントインストール手順が用意されていますので、上記手順ではサイレントインストール前に必要な処理とサンプルデータベースを作成する手順をシェルスクリプトで実行しています。

epel リポジトリから rlwrap をインストールして sqlplus のエイリアスにしているところにこだわりを感じます。

Vagrant のプロビジョニングによる構築ですので手順の紹介はこれで終わりですが、これだけだと面白くないので、この手順を参考にして変更したところを紹介します。

Vagrantによるセットアップ手順(Ansible Provisioner)

最近 Ansible を使い始めたので Vagrant の Ansible Provisioner を試してみたかったのと、Oracle 公式の Vagrant Box がリリースされたようですのでそれらを使用してみます。

Vagrant のプロビジョナとして Ansible を使う場合 2 種類の方法があります。Vagrant を実行するノードからプレイブックを実行する ansible プロビジョナと、起動した VM インスタンスに ansible コマンドをインストールしてプレイブックを実行する ansible_local プロビジョナがあります。 どちらの方法でもプレイブックは共通ですので、Vagrant ファイルで ansible コマンドの存在を確認してプロビジョナを決めています。

検証した環境は以下になります。

  • macOS 10.12.3
  • VirtualBox 5.1.18
  • Vagrant 1.9.3
  • Vagrant Box
    • http://yum.oracle.com/boxes/oraclelinux/ol73/ol73.box
    • http://yum.oracle.com/boxes/oraclelinux/ol69/ol69.box
  • Ansible 2.2.2.0(homebrew) / 2.2.1.0(epel)
Ansible Provisioner を使用するように変更したものは以下に公開しています。 参考にした setup.sh との変更点をまとめます。

ツールのインストール

完全に好みの問題ですが rlwrap 以外にパッケージをインストールしています。

  • vim-enhanced
  • emacs
  • screen
  • tmux

サービススクリプトの設置

今回は Database ソフトウェアのインストールのみですので、OS 起動時に Oracle Database (とリスナー)を開始するようにスクリプト(dbora)を設置しました。

マニュアルには dbora スクリプトのサンプルがありましたが systemd に関する記述は見当たらなかったので、以下を参考に Oracle Linux 7 の場合には systemd のユニットファイル(dbora.service)を設置しています。

プラガブルデータベースのオープン・モードの保持

12.1 がリリースされた頃にマルチテナント機能を試した時はコンテナデータベースを再起動するたびにプラガブルデータベースを毎回手動でオープンしなければならず面倒だなと思っていましたが、12.1.0.2 からプラガブルデータベースの状態を指定できるようになったようです。

ここでは pdb1 を save state しています。

SQLclを設定

Oracle Database 12.2 には SQL Developer の CUI 版ともいえる SQLcl が同梱されています。

バージョンが RC なのでサポートの位置づけがどうなるか分かりませんが、better SQL*Plus として活躍の場面があるかも知れません。 SQL Developer 同様、最新版は OTN から別途ダウンロードする必要があります。 スクリプトファイルに実行権限が付与されていないようなので、ここでは権限を付与してシェルのエイリアスを定義しています。
$ sudo -u oracle bash -l
$ sql /nolog

SQLcl: Release 12.2.0.1.0 RC on Sun Apr 16 06:56:08 2017

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


SQL> conn system/oracle@localhost/pdb1
Connected.

SQL> show jdbc
-- Database Info --
Database Product Name: Oracle
Database Product Version: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Database Major Version: 12
Database Minor Version: 2
-- Driver Info --
Driver Name: Oracle JDBC driver
Driver Version: 12.2.0.1.0
Driver Major Version: 12
Driver Minor Version: 2
Driver URL: jdbc:oracle:oci8:@localhost/pdb1
Driver Location:
resource: oracle/jdbc/OracleDriver.class
jar: /u01/app/oracle/product/12.2.0.1/dbhome_1/jdbc/lib/ojdbc8.jar
JarSize: 4036257
JarDate: Tue Dec 13 16:39:52 UTC 2016
resourceSize: 2604
resourceDate: Tue Dec 13 08:39:48 UTC 2016
今となっては内容が古いですが以前少し試した時の記事です。

おわりに

Vagrant や Ansible など環境構築を手軽に行えるツールを活用しつつ他のかたのインストール情報も参考に 12.2 環境を色々と試そうと思います。

今回は試していませんが Grid Infrastructure をインストールしない環境で複数のデータベースを管理する場合は、systemd で複数のユニットをインスタンス化する方法などもありそうですね。

0 件のコメント:

コメントを投稿