« みんなみくみくにしてあげる♪ | トップページ | 御荷鉾スーパー林道・中津川林道 通行止め »

2012年10月14日 (日)

DB2 表スペース作成関連 その2

さて、テストデータでも挿入しますか。

C:\Program Files\IBM\SQLLIB\BIN>db2 ^
More? INSERT INTO XXTBL1 (COL1, COL2, COL3, COL4, COL5, COL6) ^
More? VALUES ('AA000001', 0, 'A', '','','')
DB20000I  SQL コマンドが正常に完了しました。

うん、うん。

C:\Program Files\IBM\SQLLIB\BIN>db2 ^
More? INSERT INTO XXTBL2 (COL1, COL2, COL3, COL4, COL5, COL6, COL7) ^
More? SELECT COL1, COL2, COL3, COL4, COL5, COL6, 'TBL2' ^
More? FROM XXTBL1
DB20000I  SQL コマンドが正常に完了しました。

よし、よし。

C:\Program Files\IBM\SQLLIB\BIN>db2 ^
More? INSERT INTO XXTBL2 (COL1, COL2, COL3, COL4, COL5, COL6, COL7) ^
More? SELECT COL1, 1, COL3, COL4, COL5, COL6, COL7 ^
More? FROM XXTBL2 WHERE COL2 = 0
DB21034E  コマンドが、有効なコマンド行プロセッサー・コマンドでないため、 SQL
ステートメントとして処理されました。 SQL 処理中に、次のエラーが返されました。
SQL1585N  ページ・サイズに互換性のある SYSTEM TEMPORARY
表スペースが存在しないため、一時表を作成できませんでした。  SQLSTATE=54048

なんじゃ、こりゃー。

どうも、表「XXTBL2」をWHERE句に従って選択するため、システム内部でソートする際、

対応するページサイズを使ったシステム一時表が無いらしい。

ん~、細かな設定が出来るといえば聞こえは良いが、面倒くさい。

Oracleで無理に表現するとしたら、、、システム表領域の調整かな。

またまた、さっさと作る。

C:\Program Files\IBM\SQLLIB\BIN>db2 "CONNECT TO SAMPLEDB"

   データベース接続情報

 データベース・サーバー = DB2/NT 10.1.0
 SQL 許可 ID            = ADMINIST...
 ローカル・データベース別名 = SAMPLEDB


C:\Program Files\IBM\SQLLIB\BIN>db2 "LIST TABLESPACES"

           現在のデータベースの表スペース

 表スペース ID                        = 0
 名前                                 = SYSCATSPACE
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 REGULAR 表スペース
。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 1
 名前                                 = TEMPSPACE1
 タイプ                               = システム管理スペース
 内容                                 = システム一時データ
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 2
 名前                                 = USERSPACE1
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 LARGE 表スペース。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 3
 名前                                 = SYSTOOLSPACE
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 LARGE 表スペース。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 4
 名前                                 = USERSPACE32K
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 LARGE 表スペース。
 状態                                 = 0x0000
   詳しい説明:
     正常

作成前の状況はこんな感じ。

システムが使用する領域なので、バッファプールも分けた方が良いかな?

と、勝手に思い、作成。

C:\Program Files\IBM\SQLLIB\BIN>db2 ^
More? CREATE BUFFERPOOL DEFAULTBP32K ^
More? PAGESIZE 32K
DB20000I  SQL コマンドが正常に完了しました。

んでもって、目的のシステム用一時表領域「DFLTTEMP32K 」を作成。

C:\Program Files\IBM\SQLLIB\BIN>db2 ^
More? CREATE SYSTEM TEMPORARY TABLESPACE DFLTTEMP32K ^
More? PAGESIZE 32K MANAGED BY AUTOMATIC STORAGE ^
More? BUFFERPOOL DEFAULTBP32K
DB20000I  SQL コマンドが正常に完了しました。

状況確認。

C:\Program Files\IBM\SQLLIB\BIN>db2 "LIST TABLESPACES"

           現在のデータベースの表スペース

 表スペース ID                        = 0
 名前                                 = SYSCATSPACE
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 REGULAR 表スペース
。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 1
 名前                                 = TEMPSPACE1
 タイプ                               = システム管理スペース
 内容                                 = システム一時データ
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 2
 名前                                 = USERSPACE1
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 LARGE 表スペース。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 3
 名前                                 = SYSTOOLSPACE
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 LARGE 表スペース。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 4
 名前                                 = USERSPACE32K
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 LARGE 表スペース。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 5
 名前                                 = DFLTTEMP32K
 タイプ                               = システム管理スペース
 内容                                 = システム一時データ
 状態                                 = 0x0000
   詳しい説明:
     正常

OK!!先ほどのSQLを再度実行してみる。

C:\Program Files\IBM\SQLLIB\BIN>db2 ^
More? INSERT INTO XXTBL2 (COL1, COL2, COL3, COL4, COL5, COL6, COL7) ^
More? SELECT COL1, 1, COL3, COL4, COL5, COL6, COL7 ^
More? FROM XXTBL2 WHERE COL2 = 0
DB20000I  SQL コマンドが正常に完了しました。

今度は上手く行きました。大丈夫そうです。

この後忘れた頃に、ユーザ一時表領域がない、なんて怒られそうなので、(今は必要ないけど・・)

ついでに「USERTEMP32K 」として作っておき、権限も与えておく。

C:\Program Files\IBM\SQLLIB\BIN>db2 ^
More? CREATE USER TEMPORARY TABLESPACE USERTEMP32K ^
More? PAGESIZE 32K MANAGED BY AUTOMATIC STORAGE ^
More? BUFFERPOOL USERBP32K
DB20000I  SQL コマンドが正常に完了しました。

C:\Program Files\IBM\SQLLIB\BIN>db2 ^
More? GRANT USE OF TABLESPACE USERTEMP32K ^
More? TO DB2USER
DB20000I  SQL コマンドが正常に完了しました。

C:\Program Files\IBM\SQLLIB\BIN>db2 "LIST TABLESPACES"

           現在のデータベースの表スペース

 表スペース ID                        = 0
 名前                                 = SYSCATSPACE
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 REGULAR 表スペース
。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 1
 名前                                 = TEMPSPACE1
 タイプ                               = システム管理スペース
 内容                                 = システム一時データ
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 2
 名前                                 = USERSPACE1
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 LARGE 表スペース。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 3
 名前                                 = SYSTOOLSPACE
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 LARGE 表スペース。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 4
 名前                                 = USERSPACE32K
 タイプ                               = データベース管理スペース
 内容                                 = すべての永続データ。 LARGE 表スペース。
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 5
 名前                                 = DFLTTEMP32K
 タイプ                               = システム管理スペース
 内容                                 = システム一時データ
 状態                                 = 0x0000
   詳しい説明:
     正常

 表スペース ID                        = 6
 名前                                 = USERTEMP32K
 タイプ                               = システム管理スペース
 内容                                 = ユーザー一時データ
 状態                                 = 0x0000
   詳しい説明:
     正常

|

« みんなみくみくにしてあげる♪ | トップページ | 御荷鉾スーパー林道・中津川林道 通行止め »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/538346/55879155

この記事へのトラックバック一覧です: DB2 表スペース作成関連 その2:

« みんなみくみくにしてあげる♪ | トップページ | 御荷鉾スーパー林道・中津川林道 通行止め »