DB2 Express-C 11.1 をVagrant上のCentOs7にインストール

1.準備

1.1 参考

以前のインストールメモ、

および

DB2 Express-C 11.1 for Linux クイックインストール

を参考に、DB2 Express-C 環境を、Vagrant を利用して VirtualBox の仮想マシン上に作成する。

1.2 Vagrant

Vagrantを利用すると、仮想環境へのサーバーの構築が非常に簡単にできる。Vagrant入門ガイド Kindle版は、500円以下で購入できるので、全体像を把握するにはコストパフォーマンスが高いと思う。

Vagrantでは、Boxファイルという仮想マシンのベースとなるイメージファイルが必要になる。

Vagrantのリポジトリで、そのBoxファイルが公開されているのだが、Centos7を導入するには、Vagrant および VirtualBox をインストールしたのちに、

vagrant init centos/7 コマンドで初期化、vagrant up で仮想マシンの構築から起動まで行われるので、CentOSのインストール作業を行う必要がない。

ただ、DB2をインストールするには、GUI環境が必要なので、上記公式CentOSのBoxではなく、有志が作成し、公開されている、CentOS7にGUI環境を適用済みで公開されているBoxファイルを使用する。

Vagrant box カタログ

https://app.vagrantup.com/boxes/search

で、centos gui で検索、今回は検索で最上位に表示されたBoxを使用する。

vagrant_boxies

vagrant init pbarriscale/centos7-gui

上記コマンドで、環境の初期化を行うと、実行したフォルダに、Vagrantfile という設定ファイルが生成されるので、テキストエディタで、vb.gui = true に編集した後で、vagrant up コマンドを実行。CentOSがGUIモードで立ち上がる。停止時は、vagrant halt、vagrant ssh で SSH接続できる。

  config.vm.provider "virtualbox" do |vb|
     # Display the VirtualBox GUI when booting the machine
    vb.gui = true
        :
  end

1.3 CentOS設定

SELinux を無効化

/etc/selinux/config を編集

#SELINUX=enforcing
SELINUX=disabled

Firewall の設定

管理用523ポートと接続用デフォルト5000ポートを開放する。

db2_firewall

2.DB2インストール

2.1 ダウンロード

IBMのサイトが非常に分かりにくいので、URLを示せないが、ググって以下のファイル(本体と言語パック)をダウンロード、上記でVagrantfileがあるフォルダに配置すると、ゲストOSと共有される。

v11.1_linuxx64_expc.tar.gz
v11.1_linuxx64_nlpack.tar.gz

root でログイン(ログインするには passwd root でパスワードを設定)、vagrant ディレクトリに共有されたファイル(v11.1_linuxx64_expc.tar.gz)を展開する。

db2_extract

解凍されたディレクトリ、expc/の中に言語パックを展開。後で適用もできるが、ここで上書きしておけばそれでOK

2.2 インストールの実行

/db2/expc/db2setup を実行

ダブルクリックで、エディタが起動してしまう場合は、ファイルを選択状態で、メニュー - ファイル - 設定 - 動作 から、実行可能形式のファイルは実行するにチェックして実行(もしくはターミナルから実行)

centos7_shell_run_gui

あとは、ウィザードに従いインストール

db2_install01

新規インストール

db2_install02

製品を選択

db2_install03

標準で。

以下の設定を準備しておく。

http://typea.info/blg/glob/2012/01/db2-express-c-97-centos-6.html

DB2管理サーバーのユーザー名 デフォルト:dasadm1
DB2のインスタンス・オーナー・ユーザー名 デフォルト:db2inst1
fencedユーザーのユーザー名 デフォルト:db2fenc1
インスタンスのTCP/IPポート番号 50000番

db2_install04

準備した設定に従い、ユーザーおよびパスワードを設定。

db2_install05

db2_install06

準備完了、完了ボタン。

db2_install07

インストールが実行される。

db2_install08

インストール完了。

db2inst1でログインしなおし、db2level コマンドで状況を確認。OSを再起動するか、db2start でDB2を起動

db2_install09

2.3 サンプルDBをインストール

$ db2sampl –xml –sql

db2_after_install03

3.DataStudioのインストールと実行

DB2の管理ツール、DataStudioのダウンロードとインストールを実行

http://typea.info/blg/glob/2011/05/db2-ibm-data-studio-sql.html

3.1 トラブルシュート

4.4.2 だと、結構な確率で、以下のエラーが発生する。

datastudio_err

org.osgi.framework.BundleException: モジュールの状態変更ロックを取得できませんでした:osgi.identity; osgi.identity="org.eclipse.core.runtime"; type="osgi.bundle"; version:Version="3.10.0.v20140318-2214"; singleton:="true" [id=1902] STOPPED [STARTED]
	at org.eclipse.osgi.container.Module.lockStateChange(Unknown Source)
	at org.eclipse.osgi.container.Module.stop(Unknown Source)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.decStartLevel(Unknown Source)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(Unknown Source)
	at org.eclipse.osgi.container.SystemModule.stopWorker(Unknown Source)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule.stopWorker(Unknown Source)
	at org.eclipse.osgi.container.Module.doStop(Unknown Source)
	at org.eclipse.osgi.container.Module.stop(Unknown Source)
	at org.eclipse.osgi.container.SystemModule.stop(Unknown Source)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

インストールフォルダ(例えば以下)の、ecplise.ini ファイル

C:\Program Files\IBM\DS4.1.2\eclipse.ini

から、

-Xquickstart

を削除することで解決。OKできた。

db2_install_success

以降は、上記で設定した、Vagrantfile の gui を falseにしとけばいい。

4.再利用

DB2のインストールができたので、vagrant の Boxイメージを作成しておき、再利用する。

4.1 Boxファイルの作成

http://typea.info/tips/wiki.cgi?page=Vagrant

centos7db2 というBoxを作成する

vagrant package default --output centos7db2.box

centos7db2.box というファイルが作成されるので、取り込みたいPCにコピーし以下を実行

vagrant box add centos7db2 centos7db2.box

あとは、同様に初期化と実行

vagrant init centos7db2

以上。

DB2使用者必携の良書!