DB2
IBMのデータベース V7.1
●コマンドプロンプトからSQLを実行する
db2cmd
を実行してコマンド行プロセッサを起動する
--上記の方法にて以下操作--
コマンドの先頭にdb2 をつける
※ スタートメニューからのコマンド行プロセッサでは
コマンドの先頭にdb2はいらない
●コマンド行プロセッサとSQL*Plusとの違い
1.自動コミットがデフォルト
○解除方法(毎回解除する)
> update command options using c off
○確認方法
> db2 list command options
2.文の最後に";"は付けない
---------------------------------------------
●作成手順
1.データベース作成 ⇒ 2.バッファプール ⇒ 3.テーブルスペース作成 ⇒ 4.表作成
1.データベース作成
db2cmdを開いてからCREATE DABASE 文を流す
2.テーブルスペース作成
テーブルにコネクトしてからCREATE TABLESPACE 文を流す
3.表作成
テーブルにコネクトしてからCREATE TABLESPACE 文を流す
---------------------------------------------
●インストールログファイル
OSがインストールされているディスク上
(例 C:\DB2LOG\db2.log)
●インスタンス
・サービス
DB2-DB2(デフォルト)
※ DB2-DB2CTLSVはいらない
・サービス起動、停止
> db2 db2start
> db2 db2stop
コマンドから環境変数DB2INSTANCEに設定されている
インスタンスを起動、停止する
●データベース管理インスタンス(DAS)
・サービス
DB2-DB2DAS00(デフォルト)
> db2 db2start
> db2 db2stop
・機能
DASはデータベースを持たずマシン1台に対してDAS1つしか持たない。
Windows環境では自動的に作成される。
「コントールセンター」や「クライアント構成アシスタント」等の
GUIオペレーションを提供する
●環境変数
DB2INSTANCE変数...デフォルトでアクセスするインスタンス
デフォルト:DB2
DB2DBDFT変数...デフォルトで接続するデータベース名
●インスタンス作成
> db2 db2icrt my_inst
my_inst インスタンスを作成
●インスタンス確認
> db2 db2ilist
●db2接続
> db2 connect to ipofdb user ipof using ipof
データベース接続情報
データベース・サーバー = DB2/NT 7.2.5
SQL 権限 ID = IPOF
ローカル・データベース別名 = IPOFDB
●表スペース情報
> db2 list tablespaces [show detail]
●データベース情報
> db2 list database directory
●コンテナー情報
> db2 list tablespace containers for 表スペースID
表スペースID...list tablespace で確認
●表スペースの作成(SMS表スペース)
> db2 create tablespace SERIGO_TS managed by system using ('D:\DB2\NODE0000\SERIGO_TS')
●データベース作成
> db2 create database DTSERIGO ON D: USING CODESET IBM-943 TERRITORY JP COLLATE USING IDENTITY
●表作成
> db2 create table MSTUSER { 列名1 データ型1, 列名2 データ型2,・・・} in serigo_ts
●表を確認
> db2 list tables for all
●表(カラム)を確認する
> db2 describe table IPOF.USRMSGMT
●カラムを追加する
ALTER TABLE IPOF.USERMST ADD COLUMN DATE_TEST DATE NOT NULL DEFAULT CURRENT
DATE
ALTER TABLE IPOF.USERINFMST ADD COLUMN DATE_TEST DATE NOT NULL DEFAULT CURRENT DATE
●インデックスを確認
> db2 describe indexes for table 表名
●SQLファイルを実行
> db2 -tf xxxx.sql
●テーブルをコピーしたい
あるデータベース(SOURCE_DATABASE)から別のデータベース(TARGET_DATABASE)にテーブル(HOGEHOGE)をコピーするには、 次のコマンドを実行してやると便利。インポートでCREATEを指定してする場合、TARGET_DATABASEにはテーブル(HOGEHOGE)がないことが前提です。
CONNECT TO SOURCE_DATABASE;
EXPORT TO HOGEHOGE.IXF OF IXF MESSAGES HOGEHOGE.EXM SELECT * FROM HOGEHOGE;
CONNECT RESET;
※(HOGEHOGEがない場合)
CONNECT TO TARGET_DATABASE;
IMPORT FROM HOGEHOGE.IXF OF IXF MESSAGES HOGEHOGE.IMM CREATE INTO HOGEHOGE;
CONNECT RESET;
※(HOGEHOGEにデータがない場合)
CONNECT TO TARGET_DATABASE;
IMPORT FROM HOGEHOGE.IXF OF IXF MESSAGES HOGEHOGE.IMM INSERT INTO HOGEHOGE;
CONNECT RESET;