キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
データベース都市伝説「DB2は単一トランザクション内に、複数のセーブポイントを定義することができません」
0
    トランザクションまわりの調査をしている私です。

    ポケリファ第四版や、ここの記述に、首記のことが書いてあります。

    はぁ?

    2009年リリースのIBM DB2のリファレンスには、複数のセーブポイントの例があります。

    たぶん古いバージョンの記述を訂正せずにきたものだと類推。

    おおもとの記述はなんと、IBM自体からでていた!

    [JAVA Developer特別企画]2003年10月号 知っておきたいデータベース移行術「Oracle→DB2編」 (6/7)

    これが2003年の記事。ということは、前年にでた8.1ベースの記事と思われます。

    んで、調べたら2004年に出た8.2のリリースノートに以下の記事があり、これで対応したのだと思います。

    ◇ ネストされたセーブポイント

    ネストされたセーブポイントにより、ロールバックのより優れた制御が行えるようになります。セーブポイントを別のセーブポイント内にセットアップすることができます。DB2 UDB では、ネストされたセーブポイントを上限なく必要なレベルだけ設定することができます。ネストされたセーブポイントを使えば、アプリケーションに複数レベルのアクティブなセーブポイントを同時に設定でき、必要に応じて、どのアクティブなセーブポイントまででもアプリケーションをロールバックすることができます。

    JUGEMテーマ:コンピュータ



    | meijik | DB2 | 13:39 | comments(0) | trackbacks(0) | - | - |
    Club DB2 第169回 DBとアプリとDB2をつなぐ架け橋、DBFlute (ゲスト講師:jfluteさん)
    0
      夏の間は体調を崩し、仕事以外はあまり活動できなかった私ですが、秋になりやっとマイペースで活動できるようになりましたので、興味がある(かつ、飲み会が連続しない形で) Club DB2復活させていただきました。

      今回はMySQLのみならずFirebirdにも対応してくださっているDBFluteについて作者であるjfluteさん自身が語る、といった大変興味深く、おもしろいセッション(セミナー)でした。不思議なテンションと熱意はO社のOさんを思い出させるもので、いつかこの二人でセッション対決やってもらいたいなー、と思うことしきり。



      その後の懇親会は禁煙、禁酒(本人のみ?)という高いハードルで場所を探していただいたすみちゃんに感謝しつつ、
      夜更けまでDB談義をおこないましたとさ。ぜひ皆さんもチェックしてみてくださいね。

      DBアクセスを定番化しよう DBFlute入門(gihyo)

      JUGEMテーマ:コンピュータ


      | meijik | DB2 | 23:54 | comments(0) | trackbacks(0) | - | - |
      第142回:初心者歓迎!DB2の使い方【はじめの一歩編】
      0
        DSC_0821.JPG
        今回の講師はおのちん。関西から異動だそうで。途中から参加いたしましたが、簡単な言葉で初心者にわかるようにデータベースを説明するのは難しいですなぁ。いろいろ考えさせられました。

        本編ではせっかく新人が集まっているので、その人に役立つ景品ということで「100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊」を出しました。ゲットしたかたは是非ご活用ください。

        その後の食事会では自著の「プロになるための データベース技術入門」をじゃんけん大会で出してみました。(写真)
        | meijik | DB2 | 23:44 | comments(0) | trackbacks(0) | - | - |
        [書評] 即戦力のDB2管理術
        0
          評価:
          下佐粉 昭
          技術評論社
          ¥ 3,675
          (2011-04-08)
          コメント:最新DB2(9.7)初心者を次のステップへと導く良書。

          JUGEMテーマ:コンピュータ


          最新DB2(9.7)運用・管理者の初心者を次のステップへ導く良書

          Unofficial DB2や、Club DB2で活躍するシモサコマーン、もとい下佐粉さんの新刊。技術評論社殿から献本いただく。

          「うわーうまくまとめたなぁ」というのがざっくり読んだ感想です。元々は私は日立HiRDBとOracle7くらいからデータベースに関わってきたため、DB2の理解というのも「DB2 UDB V8.1 AND Oracle9i 比較ハンドブック」を用いてOracleとの比較でおこなったり、「DB2逆引きリファレンス」にて細部を確認したり、というかたちでおこなってきましたが、今ひとつ仕組みや実運用については自信が持てませんでした。

          本書は「運用/管理に最低限必要となる基礎知識とコツ」を提示したうえで、操作法を解説していっています。DB初心者向けのステップバイステップな入門書を終えて、いきなりDB2の管理をまかされたり、ある意味充実しすぎている(?) DB2の膨大なマニュアルの前で呆然としている初心者に福音となり、次のステップに導いてくれることでしょう。まだ、前半を駆け足で読んだだけですが、いくつもの発見がありました。

          私がDB2の管理者になるような時には(今の状況ではあまりなさそうですが(^_^;))デスクトップにおきたい一冊です。

          下佐粉さんの語り口は堅実でなおかつ経験に裏打ちされたものです。ちまたにあふれる
          「〜リファレンス」「〜極意」といいつつ、現場の「リアル」はまったく感じられないものや、リファレンスから一歩もでれないどころか、あまつさえリファレンスすら読み切れない著者が書く本とは、一線を画しています。

          DB2の初心者のみならず、Express-Cで軽く使いたいライトユーザ(私です(^_^;))にもオススメです。
          | meijik | DB2 | 03:22 | comments(0) | trackbacks(0) | - | - |
          DB2での一意インデックス(Unique index)の実装について
          0
            JUGEMテーマ:コンピュータ


            ということで、今回はDB2と、それに似ているMS SQL Serverの一意インデックスについて。

            DB2(とMS SQL Server)ではNULLも一つの「ユニークな値」としてカウントされるため、重複登録はできません。

            db2 => create table t1(i1 int)
            db2 => create unique index idx_t1 on t1(i1)
            db2 => insert into t1 values(1)
            db2 => insert into t1 values(null)
            db2 => insert into t1 values(null)
            DB21034E コマンドが、有効なコマンド行プロセッサー・コマンドでないため、 SQL
            ステートメントとして処理されました。 SQL 処理中に、次のエラーが返されました。
            SQL0803N INSERT ステートメント、UPDATE ステートメントの 1 つ以上の値、および
            DELETE ステートメントが原因で発生した外部キーの更新は無効です。これは、"1"
            で識別される主キー、ユニーク制約、またはユニーク索引が表 "MEIJI.T1"
            が索引キーに対して重複する値を持つことを制限しているためです。 SQLSTATE=23505
            db2 => select * from t1

            I1
            -----------
            1
            -

            2 レコードが選択されました。

            複合カラムにおいても同じようにNULLを一つの「ユニークな値」として扱います。そのため、
            構成するすべてのカラムがNULLの場合でも重複登録できません。

            db2 => create table t2(i1 int, i2 int)
            db2 => create unique index idx_t2 on t2(i1, i2)
            db2 => insert into t2 values(1,1)
            db2 => insert into t2 values(1,2)
            db2 => insert into t2 values(1,null)
            db2 => insert into t2 values(1,null)
            DB21034E コマンドが、有効なコマンド行プロセッサー・コマンドでないため、 SQL
            ステートメントとして処理されました。 SQL 処理中に、次のエラーが返されました。
            SQL0803N INSERT ステートメント、UPDATE ステートメントの 1 つ以上の値、および
            DELETE ステートメントが原因で発生した外部キーの更新は無効です。これは、"1"
            で識別される主キー、ユニーク制約、またはユニーク索引が表 "MEIJI.T2"
            が索引キーに対して重複する値を持つことを制限しているためです。 SQLSTATE=23505
            db2 => insert into t2 values(null,null)
            db2 => insert into t2 values(null,null)
            DB21034E コマンドが、有効なコマンド行プロセッサー・コマンドでないため、 SQL
            ステートメントとして処理されました。 SQL 処理中に、次のエラーが返されました。
            SQL0803N INSERT ステートメント、UPDATE ステートメントの 1 つ以上の値、および
            DELETE ステートメントが原因で発生した外部キーの更新は無効です。これは、"1"
            で識別される主キー、ユニーク制約、またはユニーク索引が表 "MEIJI.T2"
            が索引キーに対して重複する値を持つことを制限しているためです。 SQLSTATE=23505
            db2 => select * from t2

            I1 I2
            ----------- -----------
            1 1
            1 2
            1 -
            - -

            4 レコードが選択されました。

            さて、今回一意インデックス定義をCREATE TABLEとは別に宣言していることにお気づきでしょうか?

            実は一般的なデータベースでは一意制約(UNIQUE CONSTRAINT)と一意インデックス(UNIQUE INDEX)は、
            仕様的には等価なので、前回、前々回と代用してきました。(一意制約を満たすために、内部的に一意インデックスを用います)

            しかしながら、実はDB2だけ、一意制約と一意インデックスは仕様的に違うために、今回は厳密に一意インデックスで定義しています。DB2の一意制約はNULLを許しません。そのため、一意制約の構成列はすべてNOT NULLとして定義する必要があります。

            db2 => create table t3(i1 int, unique(i1))
            DB21034E コマンドが、有効なコマンド行プロセッサー・コマンドでないため、 SQL
            ステートメントとして処理されました。 SQL 処理中に、次のエラーが返されました。
            SQL0542N "I1" という名前の列は、NULL
            値を含む可能性があるので、主キーまたはユニーク・キー制約の列にすることができません。 SQLSTATE=42831

            これは仕様としてはかなり厳しいものです。そのため、他のデータベースからDB2にテーブル定義を持ってくる場合は一意制約は一意インデックスに書き直した方が、スムーズにことが運びます。
            | meijik | DB2 | 23:41 | comments(0) | trackbacks(0) | - | - |
            DB2マガジン
            0

              掃除にて発見。DB2 Magazineという申し込めば無料で送付してくれる英文の雑誌がありました。私が以前ジャストシステム社で五郎というデスクトップデータベースを開発していたときに、各種資料が欲しくて申し込んだものです。懐かしいなあ。


              | meijik | DB2 | 12:06 | comments(0) | trackbacks(0) | - | - |
              DB2 9.7 エバリュエーション・ガイドブック
              0
                DB2 9.7 エバリュエーション・ガイドブック
                DB2 9.7 エバリュエーション・ガイドブック
                日本アイ・ビー・エム

                金曜日のClub DB2でじゃんけん大会に勝ってゲットしました。

                さて、私のDB2歴を振り返ると、まじめにさわりはじめたのは実はClub DB2が初めてだったりします。それまでにも、各種仕事で商用、オープンソースのデータベースを実際のシステムに適用してきたのですが、DB2だけはさわったことがありませんでした。たまたま「Club DB2」という催しがある、ということで「ちょっと様子見」で参加したのが2006-10でした。simさんのブログをみるとちょうどsimさんが関わり始めたのと同時期ですねw

                DB2ってすばらしい!!!(キムラデービー)

                ちょうどDB2 9がリリースされ始めた年で、それまで私のイメージでは「おっとりとした優等生」イメージのDB2が徐々にアグレッシブさを備えて進歩を始めた年でもあります。

                本書はその最新版DB2 9.7を紹介した本で、以下の3パートから成り立っています。

                Part 1 DB2とは
                Part 2 DB2の基本機能とアーキテクチャー
                Part 3 DB2の新しいテクノロジー

                いままでのDB2の本はといえば、V8時代のものや、V9ではXMLに関連したものがほとんどだったのですが、本書は正面切ってのV9(主に9.7)の概説書です。主に以下のような事柄の概略を知りたい方に役立つと思います。

                (1) DB2 8以前を利用している人へのV9.x機能
                (2) DB2 9.7でサポートされたOracle互換機能

                ただし本書の力の配分は(1)>(2)のように見受けられ、この部分ではDB2 9.7のとんがったイメージ(Oracle互換で既存のOracleユーザをぐいぐい引き込む)よりは「よりよいDB2」
                の紹介に終始しているともいえます。

                しかしながらPart 2の2.1基本アーキテクチャではOracleの用語や作りと適宜比較しながら、うまくPart3の3.1,3.2に結びつくようにしていますので、いままでOracleしか知らない人にも(2)の意図は理解しやすいのではないでしょうか。

                ページ数のコンパクトさと、そのまとまり具合から(1),(2)をざっくり理解したい方にはおすすめの一冊です。
                | meijik | DB2 | 21:30 | comments(0) | trackbacks(0) | - | - |
                [Club DB2] 第103回 リレーショナルとはどんなことか〜RDBとSQLの過去・現在・未来〜
                0
                  第103回 達人がみんなにわかるように話す!データベース徹底指南(ゲスト講師:ミックさん)

                  自分が講師だった第94回以来の参加となった今回。講師はあのミックさんです。万難を排して参加、の予定だったのですが、ちょうど会社の仕事とバッティングして、それでも半分は聞けるかな〜という感じで20:00過ぎにはたどり着けたのですが、すでに最後のページの説明に入ってましたorz

                  ミックさんに初めてあったのは訳書の『SQLパズル 第2版』打ち上げだったので、もう二年半も前なんですねー。時の流れるのは速いです。今やすっかり人気者になり、今回も100名以上キャパがありそうな会場がうまる、ということは日本のRDB, SQL界の未来もあかるいですね。

                  本当は飲み会にも参加したかったのですが、既に酔っぱらっていた上に
                  体調も悪かったのでおいとましました。ただ、前回もらえなかったサインだけはしっかりもらってきました。ははは、すみません。

                  資料なども後ほど公開していただけるとのことなので、チェックしてみてください。当日の雰囲気なども含めて詳細はsimさんの以下のエントリなどで。

                  5/28のCLUB DB2 ミックさんゲスト編は大盛況のうちに終了しました(Unofficial DB2 BLOG)

                  [2010-05-30 追記]ミックさんの資料、公開されました。
                  [SQL]Club DB2 第103回 講演「リレーショナルとはどんなことか」(ミックのブログ)
                  | meijik | DB2 | 23:06 | comments(0) | trackbacks(0) | - | - |
                  [Club DB2] 第94回 トリガーやストアドを作ってみよう!
                  0
                    以前からお世話になっているClub DB2で、SQL/PSMの勉強会をさせていただきました。SQL/PSMはSQL標準(ISO/IEC 9075-4)の永続格納モジュール (Persistent Storage Module: 通常ストアドプロシージャと呼ばれる機能)規格です。OracleやSybase/MS SQL Serverはそれぞれ独自の規格(PL/SQL, T-SQL)で実装していますが、このSQL標準以降にストアドプロシージャやトリガを実装したデータベースでは、SQL/PSMを利用しています。

                    OSCでは昨年一年間MySQLを使ったSQL/PSMのセミナーを行ってきましたが、今回はそのDB2版になります。IBM DB2 UDB V8.2以降から手軽に使えるようになっています。
                    手元にDB2の環境がない方は、無償のIBM DB2 9.7 Expressを利用できます。

                    MySQLからSQL/PSMを利用する場合と違うのは以下の項目です。

                    (1) デリミタを変更する必要がない
                     IBM DB2のコマンドラインツールはCLPといって、リターンがCLPへのデリミタとなります。そのため、mysqlコマンドラインツールのように、SQL/PSMの行終端記号;(セミコロン)がmysqlコマンドラインツールのデリミタとなることを防ぐために、デリミタの変更をする必要がありません。その代わり、行を継続するための¥が必要になります。

                    (2) バインドされていない(Unbound)値は使えない。
                    例えば、以下のようなストアドプロシジャはエラーになります。これは'Hello SP'の出力先がバインドされていないためです。

                    CREATE PROCEDURE HelloSP() ¥
                    BEGIN ¥
                    SELECT ‘Hello SP’ FROM SYSIBM.SYSDUMMY1; ¥
                    END

                    上記をDB2のCLPから実行するためには、次のように定義します。

                    CREATE PROCEDURE HelloSP(out oVar varchar(10)) ¥
                    BEGIN ¥
                    SET oVar = ‘HelloSP’; ¥
                    END

                    そして、次のように実行します。

                    db2 => call HelloSP(?)

                    出力パラメーターの値
                    --------------------------
                    パラメーター名: OVAR
                    パラメーター値: HelloSP

                    リターン状況 = 0

                    IBM DB2でSQL/PSM(SQL PL)を利用するには、勉強会でも参照しましたが、次のドキュメントが詳しいです。是非参照してSQL/PSMを利用してみてください。

                    DB2 UDB V8.2 SQLプロシージャー・ガイド
                    | meijik | DB2 | 16:46 | comments(0) | trackbacks(0) | - | - |
                    デービーマガジン八月号
                    0

                      DB2中林さんの記事。なぜかイルカ(笑)

                      | meijik | DB2 | 11:56 | comments(1) | trackbacks(0) | - | - |
                         1234
                      567891011
                      12131415161718
                      19202122232425
                      262728293031 
                      << May 2019 >>
                      + RECOMMEND
                      100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊
                      100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊 (JUGEMレビュー »)

                      100人のうちの一人としてミックさんの本を推薦しています。
                      + RECOMMEND
                      MySQL 5.1 Plugin Development
                      MySQL 5.1 Plugin Development (JUGEMレビュー »)
                      Andrew Hutchings,Sergei Golubchik
                      MySQL 5.1 のプラグインを作るならこれ!
                      + RECOMMEND
                      AWKを256倍使うための本 (Ascii 256倍)
                      AWKを256倍使うための本 (Ascii 256倍) (JUGEMレビュー »)
                      志村 拓,鷲北 賢,西村 克信
                      ここにきてまさかの復刊。15〜16年前の本ですが、いまでも十分役立ちますよ!!
                      + RECOMMEND
                      Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
                      Linux-DB システム構築/運用入門 (DB Magazine SELECTION) (JUGEMレビュー »)
                      松信 嘉範
                      Linux-DB システム構築の新スタンダード。DB Magazine人気連載、待望の書籍化です!!
                      + RECOMMEND
                      + RECOMMEND
                      超・極める!MySQL
                      超・極める!MySQL (JUGEMレビュー »)
                      坂井 恵,志村 和彦,ひろせ まさあき,松信 嘉範
                      内容は少々古くなりましたが、内部説明があり、いろいろ面白いです。
                      + RECOMMEND
                      The Root of .NET Framework
                      The Root of .NET Framework (JUGEMレビュー »)
                      荒井 省三
                      .NETの根っこをつかむ、か?
                      + RECOMMEND
                      エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
                      エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド (JUGEMレビュー »)
                      奥野 幹也
                      これまでにない構築、そして構築後のMySQLのための本。
                      + RECOMMEND
                      Database Management Systems
                      Database Management Systems (JUGEMレビュー »)
                      Raghu Ramakrishnan,Johannes Gehrke
                      ミックさん連載の参考書籍です。
                      + RECOMMEND
                      Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series)
                      Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series) (JUGEMレビュー »)
                      W. Richard Stevens,Stephen A. Rago
                      必読! といいつつ私が読んだのは初版の日本語訳です。差分はチェックしないといけませんね。
                      + RECOMMEND
                      + RECOMMEND
                      + RECOMMEND
                      Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE
                      Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE (JUGEMレビュー »)

                      DELL SX260の換装用に購入。今はコチラのほうが安いですね。
                      + RECOMMEND
                      情熱プログラマー ソフトウェア開発者の幸せな生き方
                      情熱プログラマー ソフトウェア開発者の幸せな生き方 (JUGEMレビュー »)
                      Chad Fowler
                      OSC2010神戸に出展されたジュンク堂で買いました。
                      + RECOMMEND
                      Software Design 総集編 【2000~2009】(DVD付)
                      Software Design 総集編 【2000~2009】(DVD付) (JUGEMレビュー »)

                      メガトン級の過去記事。売り切れる前にお店に急げ!
                      + RECOMMEND
                      + RECOMMEND
                      玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2
                      玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2 (JUGEMレビュー »)

                      Aspire 1410 HDD換装後、昔のHDDはこれにいれます。
                      + RECOMMEND
                      + RECOMMEND
                      acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22
                      acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22 (JUGEMレビュー »)

                      色違い黒(他に青と白があります): メモリは最大4GBとあるが、がんばれば8GBいけるらしい。
                      + RECOMMEND
                      Firebird 徹底入門
                      Firebird 徹底入門 (JUGEMレビュー »)
                      木村 明治,はやし つとむ,坂井 恵
                      Firebird日本ユーザ会のはやしさん、そしてMyNAから拝借(?) してきた坂井さんとともに書きました。まだ誰も知らないFirebird 2.5や、いままでドキュメントのなかったツール類についてもソースを確認してとりあげた本です。是非ご活用ください。
                      + SELECTED ENTRIES
                      + RECENT COMMENTS
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        meijik (03/03)
                      • 2019年の木村明治
                        田中尚 (01/08)
                      • 使い慣れたSQLに潜む実装依存: Firebirdの場合(6) 文字列との結合演算子
                        noname (12/10)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        Moriaki_ (01/05)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        Moriaki_ (01/05)
                      • 2015年版 InterBaseの歩み
                        nakagami (12/06)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        meijik (11/22)
                      • 分散DB本読書会第46回メモ「STOP AFTER 10」
                        masudahidehiko (09/01)
                      • Windows上でのMySQLビルド方法
                        kinoyasu (03/31)
                      • 気軽に新しいMySQLを試してみる: MySQL Sandboxのススメ
                        MeijiK (09/19)
                      + RECENT TRACKBACK
                      + CATEGORIES
                      + ARCHIVES
                      + MOBILE
                      qrcode
                      + LINKS
                      + PROFILE