ここで改めてRDBMSとは?
第1回ではLinux環境にDB2のインストールを行いました。この作業、正確にはDB2のリレーショナル・データベース管理システム(RDBMS : Relational Database Management System)を導入したのであって、データベースをインストールしたわけではありません。DB2のリレーショナル・データベース管理システムを導入した後に、そのシステム内にデータベースを作成したのです。

一般的に広義にDB2やOracle、SQL Serverなどをデータベースと呼ぶ場合はリレーショナル・データベース管理システムを指しますが、正確にはデータベースとは、具体的なデータが格納されている入れ物を指しています。
データベース管理システムは、データベース内のデータがスムーズに参照・更新出来るようにしたり、データの可用性やセキュリティーを提供したりしているのです。(図1)
その名の通りデータを管理するシステムということです。
DB2の環境
前回、DB2をインストールした後に、いくつかのコマンドを実行して、サンプル・データベースへ接続しましたが、その手順を再確認しながらDB2の環境を見ていきましょう。
DB2をインストールした後は(図2)のような状態なのです。

インスタンス
DB2をインストールした後、db2icrt を使ってDB2「インスタンス」を作成しました(図3)。このインスタンスがデータベース管理システムの役割を担います。
インスタンスとはDB2の論理的なデータベース管理の単位で、独立した環境を持つことができます。そしてこの中にデータベースの作成やアプリケーションを実行します。

DB2はさらにインスタンスを複数持つことができます(図4)。先ほど述べたようにインスタンスの単位で独立しているため、一方のインスタンスの操作が他方へ影響することはありません。そのため、インスタンスが利用するホーム・ディレクトリーやポートをインスタンス単位で定義する必要があります。

そしてDB2は、このインスタンス単位でデータベース・システムを起動・停止させることができます。
インスタンスはDB2データベース・システムの起動停止の単位 DB2を起動するときは db2start 、停止する時は db2stop、コマンドを使います。
データベース
さて、手順に戻ります。DB2をインストールした後、db2icrt を使ってDBインスタンスを作成し、その次に「データベース」を作成しました。(図5)
このデータベースには、データを格納するためのオブジェクトやログファイル、バッファー・プール(メモリー領域)などが含まれています。また、バックアップ・リカバリーなどの基本的な単位となっています。

DB2はインスタンス同様、データベースも複数作成することが出来ます。(図6)

そして、データベース・サーバーのOS、インスタンス、データベースそれぞれに対し、様々な設定をする事ができます。(図7)

「環境変数」は、オペレーティング・システム・レベルで設定される変数です。
db2set コマンドを利用します $ db2set DB2COMM=TCPIP DB2AUTOSTART=YES
「データベース・マネージャー構成ファイル」(dbm cfgと記述される事が多い)は、インスタンスの作成時に作成され、定義されたパラメーターは、インスタンスとインスタンスに含まれるすべてのデータベースに影響します。パラメーターの多くは、 データベース・マネージャーの単一のインスタンスに割り振られるシステム・リソースの量を制御したり、 通信サブシステムを構成します。
db2 get dbm cfg コマンドでパラメーター一覧を取得できます。 $ db2 get dbm cfg データベース・マネージャー構成 ノード・タイプ = ローカルとリモート・クライアントを持つデータベ データベース・マネージャー構成リリース・レベル = 0x0f00 CPU 速度 (ミリ秒/命令) (CPUSPEED) = 8.659644e-07 並行アクティブ・データベースの最大数 (NUMDB) = 32 フェデレーテッド・データベース・システム・サポート (FEDERATED) = NO トランザクション・プロセッサー・モニター名 (TP_MON_NAME) = デフォルトのチャージ・バック・アカウント (DFT_ACCOUNT_STR) = Java 開発キット・インストール・パス (JDK_PATH) = /home/db2inst1/sqllib/java/jdk32 診断エラーのキャプチャー・レベル (DIAGLEVEL) = 3 通知レベル (NOTIFYLEVEL) = 3 診断データのディレクトリー・パス (DIAGPATH) = /home/db2inst1/sqllib/db2dump/ 現行メンバーの解決済の DIAGPATH = /home/db2inst1/sqllib/db2dump/ …………… エージェント・プール・サイズ (NUM_POOLAGENTS) = AUTOMATIC(100) プールにあるエージェントの初期化数 (NUM_INITAGENTS) = 0 コーディネーター・エージェントの最大数 (MAX_COORDAGENTS) = AUTOMATIC(200) クライアント接続の最大数 (MAX_CONNECTIONS) = AUTOMATIC(MAX_COORDAGENTS) ……………
「データベース構成ファイル」(db cfgと記述される事が多い) は、データベースの作成時に作成され、データベースごとに1つの構成ファイルがあります。 このデータベース構成ファイルで、データベースに割り当てるリソースの量を指定します。
対象のデータベースに接続してから、db2 get db cfg コマンドでパラメーター一覧を取得できます。 $ db2 connect to sample データベース接続情報 データベース・サーバー = DB2/LINUX 10.1.0 SQL 許可 ID = DB2INST1 ローカル・データベース別名 = SAMPLE $ db2 get db cfg データベースのデータベース構成 データベース構成リリース・レベル = 0x0f00 データベース・リリース・レベル = 0x0f00 データベース・テリトリー = JP データベース・コード・ページ = 1208 データベース・コード・セット = UTF-8
設定するパラメーターが多いのでは?と思われる方もいらっしゃるかもしれませんが、現在ではパラメーターの多くはAUTOMATIC、自動で設定されようになっています。