Edited at

CentOS7.2にDB2の検証環境を作ってA5:SQLで接続する

More than 1 year has passed since last update.

DB2は有償だけれど、DB2 Express-Cはその小規模無償版。

小規模といっても数TB使えるので検証利用なら充分です。

探してもまとまった情報が出てこないのでまとめました。

ホストマシン: Windows10 + vagrant 2.0.1 + VirtualBox

ゲストマシン: CentOS7.2 + DB2

DB2はインストーラを使ったGUIでのインストールが基本。

CUIで入れる方法もあるようですが、折角なので最小構成のCentOSにGUIを入れるのもやってみました。


前提

VagrantとVirtualBoxがインストール済。

下記がVagrantとは?から始まりわかりやすいです。

Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する


仮想マシン立ち上げ

ホストマシンの適当なフォルダでvagrant initVagrantfileを修正します。

boxファイルはDiscover Vagrant Boxesで探します。


Vagrantfile

# L15 適当なボックスを記述。

config.vm.box = "bento/centos-7.2"

# L35 必要に応じてコメントイン
config.vm.network "private_network", ip: "192.168.33.10"

# L46 共有フォルダのマウント設定、必要に応じてコメントイン
config.vm.synced_folder "../data", "/vagrant_data"


vagrant up


DB2インストーラのダウンロード

初回vagrant upは時間がかかるので、この間にDB2のインストーラをDLします。

DB2 Express-C database server

適宜情報を入力して同意し、DB2 Express-CNational Language Pack for DB2をダウンロード。

jnlpファイルが落ちてきます。

(Javaのバージョンが古い場合はインストーラが出るのでアップデートします)。

DownloadDirector.jnlpをダブルクリックしてtar.gzファイルをダウンロード、ゲストマシンに設置します。

今回は/home/vagrant/db2に置いたものとして話を進めます。


Gnomeデスクトップ導入


Virtualboxからログイン

//名前を確認する

$ sudo yum grouplist
$ sudo yum groupinstall "GNOME Desktop"

$ sudo startx
//セットアップ画面が開くので、言語・キーボード設定などするとGUI画面がたちあがる


DB2インストール

# cd /home/vagrant/db2

# ls
//必要ファイルを解凍する
# tar zxvf v11.1_linuxx64_expc.tar.gz
//言語パックはexpcの中に解凍
# cd expc
# tar zxvf ../v11.1_linuxx64_nlpack.tar.gz
# ls
# ./db2setup
// インストーラが立ち上がる

インストーラの項目は基本選択するだけです。GUIってすごいですね。


  • [Choose a Product] バージョンを確認

  • [Configuration] Customを選択、「I agree」選択

  • [Select Features] 全て選択

  • [Select Languages] 日本語を選択

  • [Documentation]「 On the IBM Web site」が選択されていることを確認

  • [Instance Owner] Password, Confirm passwordのみ入力でOK


    • username: db2inst1

    • groupname: db2iadm1

    • デフォルトユーザー名をメモするか希望のものに変更します



  • [Fenced User] Password, Confirm passwordのみ入力でOK


    • Username: db2fenc1

    • groupname: db2fadm1



  • [Instance Communication] OS起動時自動起動しない場合はAutostartのチェックを外す


    • service name: db2c_db2inst1

    • port number: 50000

    • デフォルトポート番号をメモするか希望のものに変更します



  • [Text Search Service] デフォルトでOK


    • service name: db2j_db2inst1

    • port number: 55000



  • [Response File and Summary] 内容を確認して「Finish」クリック


サンプルデータベースの作成、接続

//Instance Ownerで指定したユーザーが作られているのでユーザー切替

# su - db2inst1
//バージョン確認
$ db2level
Informational tokens are "DB2 v11.1.3.3"

//サンプルデータベース作成(eがないことに注意)
$ db2sampl

//db2起動、autostartをチェックした場合は起動済になっています
$ db2start
$ db2 "connect to sample"
$ db2 "list tables"
$ db2 "select * from staff where id = 10"
$ db2stop


検証用データベースの作成、接続

db2の後にコマンドを書けば他のRDBMSと同様にSQLを実行できます。

DB2の特異性のひとつに文字コードがあると思うので、その辺りは下記参照ください。

DB2でデータベースを作る方法

//オプションの指定がなくてもcreate database自体は実行できる

$ db2 "create database SAMPLE2"
//create tableはこんな感じ
$ db2 "create table users (
id int,
user_name varchar(255),
agreement_flag boolean,
entry_date date,
entry_time time
)"
//DBに接続したまだとdatabaseをdropできないので接続を解除する。
$ db2 "connect reset"
$ db2 "list applications"
$ db2 "drop database SAMPLE2"

なお、connectlistのようなコマンドは"がなくても実行できるようです。

(SQL(DMLだけ?)の実行には"が必要っぽい)

2018/04/23追記:

コメントで、"を使うのは*等の記号がシェルに解釈されないようにする為とのご指摘いただきました。

ありがとうございます!


A5:SQL Mk-2からの接続

普段使っているSQL開発ツールから接続します。


ODBCドライバのインストール

IBM Data Server Driver Package (DS Driver)でタイトルのリンクをクリック(一番上)。

IBM ID未登録なら登録してSign in。

ホストマシンのPlatform(今回はWindows64bit)の通常版ファイルをDLします。

DLファイルをダブルクリックするとインストーラが起動するので、流れに沿ってインストール。

基本全部デフォルトでいいかと思います。


ODBC接続設定

参考: DB2設定方法

「データベース」>「データベースの追加と削除」>「64bit ODBCアドミニストレータ」>「システムDSN」>「追加」をクリック。

先ほどインストールしたODBCドライバ(IBM DB2 ODBC DRIVER-IBMDBCL1)が追加されているので選択します。


  • [Data souce name]にDB名(SAMPLE)を入力して「add」押下。


    • [Data Souce]タブでDescription(null可), UserID(db2inst1), Passwordを入力します。

    • [Advanced Settings]タブで「Add」押下、「Hostname 192.168.33.10」「Port 50000」「Protocol TCP/IP」「Database SAMPLE」を入力。




DB2への接続

参考: DB2への接続

「データベース」>「データベースの追加と削除」>「追加」>「ADO(OLD DB, ODBC)」をクリック。


  • 「接続文字列」の「...」からで先ほど指定したODBCドライバ(IBM DB2 ODBC DRIVER-IBMDBCL1)を選択します。


    • 「Data Source」にDB名、「Password」「UserID」にdb2inst1を記入し「OK」。

    • 「テスト接続」ボタン押下で確認して、接続が成功したら「OK」で完了です。




DBの変更

なお、接続するDB名を変更した時は、

C:\users\all users\IBM\DB2\IBMDBCL1\cfg

にあるdb2cli.iniのDB名(タイトル)の変更(要管理者権限)・A5の再起動も忘れずに。

参考リンク

DB2 Express-C 11.1をCentOS 7.3へインストール

DB2チートシート