Comments
Description
Transcript
[Lab 1] DB2 のアーキテクチャ
[Lab 1] DB2 のアーキテクチャ Contents CONTENTS .......................................................................................................... 2 1. はじめに ........................................................................................................ 3 2. DB 作成と基本的な操作 ................................................................................ 3 2.1 仮想マシンの起動とログイン................................................................... 3 2.2 インスタンスの管理 ................................................................................. 4 2.2.1 インスタンス作成 ..................................................................................... 4 2.2.2 インスタンス起動 ..................................................................................... 5 2.2.3 インスタンスの設定 ................................................................................. 6 2.3 データベースの管理 ................................................................................. 8 2.3.1 データベース作成 ..................................................................................... 8 2.3.2 データベースの設定 ................................................................................. 9 2.3.3 データベースへの接続 ............................................................................. 9 2.3.3.1 DB2 コマンド行プロセッサー(CLP) .............................................9 3. OPTIM DATABASE ADMINISTRATOR ..................................................... 14 3.1 Optim Database Administrator の開始.................................................... 14 3.2 ODA を使用したデータベースの操作..................................................... 19 3.2.1 バッファー・プールの作成 ................................................................... 19 3.2.2 データベース・バックアップの取得 ................................................... 20 4. インスタンス削除 ........................................................................................ 22 2 1. はじめに このハンズオンでは、DB2 のインスタンス管理、データベース作成など基本的なオペレーション について取り上げます。 2. DB 作成と基本的な操作 このタスクでは、以下のことを実行します VMWare イメージの起動 インスタンス作成、DB 作成を含む DB2 の基本的な処理を行う 2.1 仮想マシンの起動とログイン 仮想マシンの起動とログイン _当ハンズオンでは SLES10 と DB2V9.7 の VMWare イメージを使用します。VMWare イメ ージをダブルクリックで起動してください。 _仮想マシンの“この仮想マシンをパワーオン”を選択 _仮想マシンに以下のユーザーでログイン User: root Password: Password: password _仮想マシンにログイン後、ターミナルウィンドウを起動する。デスクトップ上で右クリックを 選択し、”Open Terminal”を選択する。 3 2.2 インスタンスの管理 2.2.1 インスタンス作成 _インスタンス・オーナーの作成 db2inst2 という名前のユーザーを作成します。パスワードは、db2inst2 に設定します。本 ハンズオンで使用する/workshop/lab1 ディレクトリーのオーナーも、db2inst2 に変更しま す。 useradd db2inst2 –d /home/db2inst2 –g staff –m passwd db2inst2 <db2inst2 と入力してください> chown –R db2inst2 /workshop/lab1 DB2V97onSLES10:~ # useradd db2inst2 -d /home/db2inst2 -g staff -m DB2V97onSLES10:~ # passwd db2inst2 Changing password for db2inst2. New Password: Reenter New Password: Password changed. DB2V97onSLES10:~ # chown -R db2inst2 /workshop/lab1 4 _ポート番号の設定 db2inst2 インスタンスが使用するサービスポート番号を指定します。root ユーザーで、 /etc/services ファイルを編集し、ポート番号を追加してください。このハンズオンでは、ポ ート名 DB2_db2inst2 で、55000 を使用します。 vi /etc/services DB2_db2inst2 55000/tcp ←この1行を /etc/services に追加してください。 DB2V97onSLES10:/home/db2inst2 # vi /etc/services (vi エディタで /etc/services に1行追加してください) _インスタンスの作成 インスタンスは、root ユーザーが作成します。本環境では、DB2 V9.7 Enterprise Server Edition Fix Pack1 が導入されています。導入パスは/opt/ibm/db2/V9.7_FP1 です。導入パ ス配下の/instance ディレクトリに移動し、db2icrt コマンドを実行します。 cd /opt/ibm/db2/V9.7_FP1/instance ./db2icrt –u db2inst2 db2inst2 db2icrt コマンドが正常に終了することを確認してください。 DB2V97onSLES10:/home # cd /opt/ibm/db2/V9.7_FP1/instance DB2V97onSLES10:/opt/ibm/db2/V9.7_FP1/instance # ./db2icrt -u db2inst2 db2inst2 DBI1070I 2.2.2 プログラム db2icrt は正常に完了しました。 インスタンス起動 インスタンス起動 DB2 インスタンス作成後、インスタンスが正常に作成されたかどうか確認します。インスタ ンスの操作を行うために、インスタンス・オーナーdb2inst2 にユーザーを切り替えてくださ い。 su – db2inst2 インスタンスの開始、停止を行うためには、db2start、db2stop コマンドを使用することが出 来ます。これらのコマンドは、PATH 環境変数に含まれているディレクトリにあるため、どの ディレクトリでも実行することが出来ます。 以下の通り、db2start コマンドを実行し、DB2 インスタンス”db2inst2”を開始してください。 db2start コマンド実行後、db2_ps コマンドでインスタンスのプロセスを確認してください。 db2start 5 db2_ps もし db2stop コマンドを実行した場合は、次のステップの前に再度インスタンスを起動して ください。 DB2V97onSLES10:/opt/ibm/db2/V9.7_FP1/instance # su - db2inst2 db2inst2@DB2V97onSLES10:~> db2start SQL1063N DB2START の処理が正常に終了しました。 db2inst2@DB2V97onSLES10:~> db2_ps Node 0 UID PID PPID C STIME TTY TIME CMD db2inst2 21942 21940 3 13:43 pts/0 00:00:01 db2sysc root 21943 21942 0 13:43 pts/0 00:00:00 db2ckpwd root 21944 21942 0 13:43 pts/0 00:00:00 db2ckpwd root 21945 21942 0 13:43 pts/0 00:00:00 db2ckpwd 2.2.3 インスタンスの設定 _DB2 のバージョン、ライセンス情報の取得 DB2 の Version 情報を db2level コマンドで調べることが出来ます。 db2level db2inst2@db2V97onSLES10:~> db2level DB21085I インスタンス "db2inst2" は、"32" ビットおよび DB2 コード・リリース "SQL09071" をレベル ID "08020107" で使用します。 情報トークンは、"DB2 v9.7.0.1"、"s091114"、"LINUXIA3297"、およびフィックスパック "1" です。 製品は "/opt/ibm/db2/V9.7_FP1" にインストールされています。 _レジストリー変数の設定 レジストリー変数は、db2set コマンドで設定することができ、設定した場合、同一インスタン ス内の全 DB で有効になります。レジストリー変数を設定後、設定を有効にするためにイン スタンスを再起動してください。ここでは、TCP/IP 接続を可能にするためにインスタンスの DB2COMM レジストリー変数を設定します。 db2set DB2COMM=tcpip db2set db2inst2@db2V97onSLES10:> db2set DB2COMM=tcpip db2inst2@db2V97onSLES10:> db2set DB2COMM=tcpip _データベース・マネージャー構成パラメーターの設定 インスタンスレベルでの構成パラメーターを設定します。インスタンス内の全てのデータベ ースに対して有効になります。 6 パラメーターの設定情報を取得するためには、”get dbm cfg”コマンドを使用し、パラメータ ーの値を更新するためには、”update dbm cfg”コマンドを実行してください。 変更を有効にするためには、データベース、またはインスタンスの停止、再起動が必要な 場合もあります。 以下の例では、TCP/IP のサービスポートを指定する SVCENAME 構成パラメーターを設 定します。SVCENAME で指定するポートは、今回は先ほど/etc/services ファイルに追記 した DB2_db2inst2 55000/tcp を設定します。 db2 update dbm cfg using svcename DB2_db2inst2 db2stop db2start db2 get dbm cfg | grep SVCENAME db2inst2@db2V97onSLES10:> db2 update dbm cfg using SVCENAME DB2_db2inst2 DB20000I UPDATE DATABASE MANAGER CONFIGURATION コマンドが正常に完了しました。 db2inst2@db2V97onSLES10:> db2stop 2009-08-10 06:47:27 0 0 SQL1064N DB2STOP の処理が正常に終了しました。 SQL1064N DB2STOP の処理が正常に終了しました。 db2inst2@db2V97onSLES10:> db2start 08/10/2009 06:47:43 0 0 SQL1063N DB2START の処理が正常に終了しました。 SQL1063N DB2START の処理が正常に終了しました。 db2inst2db2V97onSLES10:> db2 get dbm cfg | grep SVCENAME TCP/IP サービス名 (SVCENAME) = DB2_db2inst2 7 2.3 データベースの管理 2.3.1 データベース作成 DB2 では 1 インスタンスに複数データベースを作成することが出来ます。db2sampl コマン ドを使用して、サンプルデータベースを作成します。サンプルデータベースでは、SQL や XQuery が実行できるサンプルデータが提供されています。 db2sampl コマンドを実行し、数分お待ちください。今回はデータベース・パスは指定しませ ん。デフォルトでは、インスタンス・ディレクトリー配下に作成されます。 db2sampl db2inst2@db2V97onSLES10:~> db2sampl Creating database "SAMPLE" ... Connecting to database "SAMPLE"... Creating tables and data in schema "DB2INST2"... Creating tables with XML columns and XML data in schema "DB2INST2"... 'db2sampl' processing complete. db2sampl コマンドの実行が完了したら、ローカル・データベース・ディレクトリーを確認して ください。 db2 list db directory db2inst2@db2V97onSLES10:~> db2 list db directory システム・データベース・ディレクトリー ディレクトリー中の項目数 = 1 データベース 1 項目: データベース別名 データベース名 ローカル・データベース・ディレクトリー データベース・リリース・レベル コメント ディレクトリー項目タイプ カタログ・データベース・パーティション番号 代替サーバー・ホスト名 代替サーバーのポート番号 8 = SAMPLE = SAMPLE = /home/db2inst2 = d.00 = = 間接 = 0 = = 2.3.2 データベースの設定 _データベース構成パラメーターを設定 “2.2.2 インスタンスの設定”の章では、インスタンスレベルの構成パラメーターの設定を行 いましたが、ここではデータベースレベルの構成パラメーターを設定します。データベース 単位に設定するため、1 インスタンスに複数データベースが存在する場合は、それぞれに 設定することになります。 パラメーターの設定情報を取得するためには、”get db cfg”コマンドを使用し、パラメーター の値を更新するためには、”update db cfg”コマンドを実行してください。以下の実行例で はログファイルのサイズを変更しています。 db2 get db cfg for sample db2 update db cfg for sample using LOGFILSIZ 4000 db2 get db cfg for sample | grep LOGFILSIZ db2inst2@db2V97onSLES10:> db2 get db cfg for sample sample データベースのデータベース構成 = 0x0d00 データベース構成リリース・レベル データベース・リリース・レベル = 0x0d00 データベース・テリトリー = JP データベース・コード・ページ = 1208 データベース・コード・セット = UTF-8 ・・・・ db2inst2@db2V97onSLES10:> db2 update db cfg for sample using LOGFILSIZ 4000 DB20000I UPDATE DATABASE CONFIGURATION コマンドが正常に完了しました。 db2inst2@db2V97onSLES10> db2 get db cfg for sample | grep LOGFILSIZ ログ・ファイルのサイズ (4KB) (LOGFILSIZ) = 4000 2.3.3 2.3.3.1 データベースへの接続 DB2 コマンド行プロセッサー( ) コマンド行プロセッサー(CLP) DB2 コマンド行プロセッサー(CLP)は、DB2 サーバーに接続するコマンドラインのインタフ ェースです。CLP を使用することで、データベースへの接続や、SQL ステートメントの実行、 スクリプトの実行や、DB2 の管理コマンドを実行することが出来ます。 CLP は以下のモードで開始することが出来ます。 9 対話式入力モード:db2 =>入力プロンプト コマンド・モード:各コマンドの前に db2 をつける バッチ・モード:-f ファイル入力オプションをつける _対話式入力モード 以下のようにターミナルウィンドウで”db2”とタイプしてください。db2 コマンドで CLP を開始 します。 db2 db2inst2@db2V97onSLES10:~> db2 (c) Copyright IBM Corporation 1993,2007 DB2 クライアント 9.7.0 コマンド行プロセッサー コマンド・プロンプトからデータベース・マネージャーのコ マンド、 および SQL ステートメントを呼び出せます。 例: db2 => connect to sample ・・・・・ db2 => 以下のようにサンプルデータベースへ接続してください。 connect to sample db2 => connect to sample データベース接続情報 = DB2/LINUX 9.7.0 = DB2INST2 = SAMPLE データベース・サーバー SQL 許可 ID ローカル・データベース別名 CLP のヘルプには、CLP を介して実行できる DB2 コマンドの構文とメッセージの説明があ ります。ヘルプを呼び出すために、”?”とタイプし、DB2 コマンドのリストを取得したり、”? <Command>”で詳細な情報を取得してください。 db2 => ? ACTIVATE DATABASE ADD CONTACT ADD CONTACTGROUP PARTITION ・・・ GET CONTACTGROUPS GET CONTACTS GET/UPDATE DB CFG RECONCILE RECOVER REDISTRIBUTE DB db2 => ? list tables LIST TABLES [FOR {USER | ALL | SYSTEM | SCHEMA schema-name}] [SHOW DETAIL] 10 _CLP で DB2 コマンドと SQL ステートメントを実行 実際に CLP で DB2 コマンドを実行してみます。実行例では表をリストするコマンドを実行 しています。これは自分のスキーマの表をリストします(ここでは db2inst2 の表をリストして います)。”for all”キーワードをコマンドの最後に付け加えれば、他のスキーマを含めたデ ータベースの全ての表をリストすることができます。 list tables db2 => list tables 表/ビュー ---------------------------ACT ADEFUSR CATALOG ・・・・ スキーマ --------------DB2INST1 DB2INST1 DB2INST1 タイプ ----T S T 作成時刻 -------------------------2009-08-10-06.24.40.546805 2009-08-10-06.24.47.204032 2009-08-10-06.25.02.146400 47 レコードが選択されました。 _ACT 表から全てのレコードを取り出すためには以下の SQL を実行します。 select * from act db2 => select * from act ACTNO ACTKWD ACTDESC ------ ------ -------------------10 MANAGE MANAGE/ADVISE 20 ECOST ESTIMATE COST ・・・ 18 レコードが選択されました。 _以下の SQL ステートメントを実行すると、指定した表が存在しないため SQL0204N エラ ーが返ります。以下のようにエラーメッセージの意味を”?”コマンドで確認してください。 select * from tables1 ? SQL0204N db2 => select * from tables1 SQL0204N "DB2INST1.TABLES1" は未定義の名前です。 db2 => ? sql0204n SQL0204N SQLSTATE=42704 "<name>" は未定義の名前です。 説明: このエラーは、以下のいずれかが原因です。 * * "<name>" によって示されているオブジェクトが、データベースに定義され ていません。 ..... 11 _データベースから切断し、CLP を終了する データベースから切断するために、”connect reset”コマンドを実行してください。接続情報 を取得するには、”get connection state”コマンドを実行します。CLP 環境から抜けるため には、”quit”コマンドを使用します。 connect reset get connection state quit db2 => connect reset DB20000I SQL コマンドが正常に完了しました。 db2 => get connection state データベース接続状態 = 接続可能および未接続 = 接続状態 接続モード ローカル・データベース別名 データベース名 ホスト名 サービス名 = = = = db2 => quit DB20000I QUIT コマンドが正常に完了しました。 _コマンド・モードでの CLP の開始 CLP 環境を開かずに SQL ステートメントを実行することが出来ます。以下のコマンドは、 先ほど CLP 環境で実行されたコマンドと同じ動きになります。 db2 connect to sample db2 list tables db2 “select * from act” *コマンド・モードで使用する場合、ステートメントまたはコマンドに特殊文字が含まれてい る場合は、そのステートメントを二重引用符で囲む必要があります。 _DB2 CLP を使用したスクリプト処理 DB2 CLP はテキストファイルからコマンドを実行する機能もあります。vi を使用して以下の 内容のスクリプトファイル lab1-1.sql を作成してください。(お時間がない場合は、 /workshop/lab1 にファイルがありますのでご利用ください。) connect to sample; get connection state; select * from act fetch first 5 rows only; 12 connect reset; スクリプトは以下のように実行します。 db2 –tvf lab1-1.sql オプションの”tvf”の意味は以下になります。 t ステートメントの終了文字にデフォルトの ; を使用する v 実行コマンドをエコーする f 入力ファイルから読み込む *コマンド行のオプションは、LIST COMMAND OPTIONS コマンドを実行することで確認す ることが出来ます。 db2inst2@db2V97onSLES10:~> vi lab1-1.sql -- This is the sample CLP script connect to sample; get connection state; select * from act fetch first 5 rows only; connect reset; db2inst2@db2V97onSLES10:/workshop/lab1> db2 -tvf lab1-1.sql connect to sample データベース接続情報 = DB2/LINUX 9.7.0 = DB2INST2 = SAMPLE データベース・サーバー SQL 許可 ID ローカル・データベース別名 get connection state データベース接続状態 = 接続可能および接続済み = SHARE = SAMPLE 接続状態 接続モード ローカル・データベース別名 データベース名 ホスト名 サービス名 = SAMPLE = = select * from act fetch first 5 rows only ACTNO -----10 20 30 40 50 ACTKWD -----MANAGE ECOST DEFINE LEADPR SPECS ACTDESC -------------------MANAGE/ADVISE ESTIMATE COST DEFINE SPECS LEAD PROGRAM/DESIGN WRITE SPECS 5 レコードが選択されました。 connect reset DB20000I SQL コマンドが正常に完了しました。 13 3. Optim Database Administrator このセクションでは、GUI ツールである Optim Database Administrator 2.2 (旧称 Data Studio Administrator)を使用した DB2 の管理を行います。 3.1 Optim Database Administrator の開始 ODA を開始し、サンプルデータベースへ接続します。 _『Computer』⇒『More Application』を選択し、”IBM Optim Database Administrator 2.2”を ダブルクリックしてください。 14 _ワークスペースを選択してください。ワークスペースは、プロジェクト情報を格納する場 所になります。ここではインスタンス・ホーム配下(デフォルトは/root)を選択しています。 _最初の起動時、Welcome メニューが出力されます。以下の図のように、右上にあるワー クベンチのアイコンを選択してください。 15 _SAMPLE データベースへの接続 Optim Database Administrator (ODA)は JDBC Type4 接続で、データベースに接続をしま す。今回のように同一 OS 上に接続先のターゲット DB が存在する場合でも、TCP/IP 接 続をします。そのため、ODA からの接続を可能にするため、TCP/IP 接続を可能にしておく 必要がありますが、今回は”2.2.2 インスタンスの設定”で設定しています。 画面の左側にある”データ・ソース・エクスプローラー”上の”データベース”を右クリックし、 “新規”を選択します。 16 以下の新規接続のウィンドウで、DB の接続情報を入力します。 左側の”データベース・マネージャーの選択”で『DB2 for Linux,Unix および Windows』を選 択してください。そして、右側のプロパティーを記入します。 ポート番号については今回 55000 ポートを指定しているため、55000 に書き換えてください。 またユーザー情報を以下の通り記入してください。 ユーザー名: db2inst2 パスワード: db2inst2 プロパティーの設定が完了したら、左下の接続のテストを実施し、正常に設定されたかどう か確認してください。正常に接続することが確認できたら、以下のウィンドウの終了を選択 し、構成リポジトリーを終了してください。 *SAMPLE[別名]が既に存在している場合は、SAMPLE1 という名称になりますが、ハンズ オンのシナリオ上、問題ありません。以降のハンズオンは、SAMPLE1 に対して行ってくだ さい。 17 現在 SAMPLE データベースに接続された状況にあります。接続できている状態の場合、 データベースのオブジェクト情報が以下のように表示されます。 なお、データベースへの接続・切断は、データベースを右クリックして、『接続』、『切断』を 選択すること出来ます。接続・切断を実行して確認してください。 18 3.2 ODA を使用したデータベースの操作 この章では、ODA を使用したデータベースオブジェクトの作成と、データベースのバックア ップの取得を行います。 3.2.1 バッファー・ バッファー・プールの作成 ー・プールの作成 以下の図のように、SAMPLE データベースの配下のバッファー・プールを右クリックし、作 成を選択してください。 エディターは、以下のデータ・オブジェクト・エディターを選択してください。 19 バッファプールのページサイズを選択します。設定情報を記入後、右側の DDL の実行を 選択してください。 右下の”SQL の処理”ウィンドウで、DDL が正常に終了したことが確認できます。 3.2.2 データベース・バックアップの取得 データベース・バックアップの取得 続いて、SAMPLE データベースのバックアップを取得します。 SAMPLE を右クリックし、バックアップを選択してください。 20 バックアップ・イメージの保管場所を指定します。ここでは、/workshop/lab1/を選択します。 選択後、実行をクリックしてください。 先ほどと同じく、”SQL の処理”ウィンドウでバックアップ取得の成功を確認してください。 バックアップが成功した場合、/workshop/lab1 にバックアップのイメージファイルが作成さ れていますので、作成されたイメージを確認してください。 21 4. インスタンス削除 この章で作成した、db2inst2 インスタンスを削除します。Terminal を開いてください。 _データベースの削除 インスタンスの削除の前に、SAMPLE データベースを削除します。データベースを削除す るためには、データベースをオフラインにする必要があります。force applications コマンド で接続しているアプリケーションを強制的に切断し、オフライン状態にします。 db2 list db directory db2 force applications all db2 deactivate db sample db2 drop db sample db2 list db directory db2inst2@DB2V97onSLES10:~> db2 list db directory システム・データベース・ディレクトリー ディレクトリー中の項目数 = 1 データベース 1 項目: データベース別名 = SAMPLE データベース名 = SAMPLE ローカル・データベース・ディレクトリー = /home/db2inst2 データベース・リリース・レベル = d.00 コメント = ディレクトリー項目タイプ = 間接 カタログ・データベース・パーティション番号 = 0 代替サーバー・ホスト名 = 代替サーバーのポート番号 = db2inst2@DB2V97onSLES10:~> db2 force applications all DB20000I FORCE APPLICATION コマンドが正常に完了しました。 DB21024I このコマンドは非同期であり、即時に有効にならない場合もあります。 db2inst2@DB2V97onSLES10:~> db2 deactivate db sample SQL1496W データベースの非アクティブ化は正常に実行されましたが、 このデータベースはアクティ ブにされてはいませんでした。 db2inst2@DB2V97onSLES10:~> db2 drop db sample DB20000I DROP DATABASE コマンドが正常に完了しました。 db2inst2@DB2V97onSLES10:~> db2 list db directory SQL1057W システム・データベース・ディレクトリーが空です。 SQLSTATE=01606 _インスタンスの削除 22 DB の削除が終了後、db2stop コマンドでインスタンスを停止状態にしてください。インスタ ンスの削除は、インスタンスの作成と同じく、root ユーザーで実行します。導入パス(当環 境ではデフォルトの/opt/ibm/db2/V9.7_FP1)配下の instance ディレクトリに移動してくださ い。db2ilist コマンドで現在作成されているインスタンスを確認してください。db2ilist コマン ドを実行すると、本ハンズオンで作成した db2inst2 インスタンス以外に、環境に事前に作 成してある db2inst1 インスタンス確認できます。次章以降は、db2inst1 インスタンスを使用 してハンズオンを行います。 db2stop su cd /opt/ibm/db2/V9.7_FP1/instance ./db2ilist ./db2idrop db2inst2 ./db2ilist db2inst2@DB2V97onSLES10:~> db2stop SQL1064N DB2STOP の処理が正常に終了しました。 db2inst2@DB2V97onSLES10:~> su パスワード: DB2V97onSLES10:~ # cd /opt/ibm/db2/V9.7_FP1/instance DB2V97onSLES10:/opt/ibm/db2/V9.7_FP1/instance # ./db2ilist db2inst1 db2inst2 DB2V97onSLES10:/opt/ibm/db2/V9.7_FP1/instance # ./db2idrop db2inst2 DBI1070I Program db2idrop completed successfully. DB2V97onSLES10:/opt/ibm/db2/V9.7_FP1/instance # ./db2ilist db2inst1 以上です。 23 © Copyright IBM Corporation 2011 All Rights Reserved. 本書に含まれている情報は、正式なIBMのテストを受けていません。また、明記にしろ、暗黙的にしろ、なんらの保証もなしに配布され るものです。 この情報の使用またはこれらの技術の実施は、いずれも、使用先の責任において行われるべきものであり、それらを評価し、実際に使用 する環境に統合する使用先の判断に依存しています。それぞれの項目は、ある特定の状態において正確であることがIBMによって調べら れていますが、他のところで同じまたは同様の結果が得られる保証はありません。これらの技術を自身の環境に適用することを試みる使 用先は、自己の責任において行う必要があります。 24