DB2 レイヤ別トラブルシューティング集:DB2マイスター養成講座(最終回)(2/2 ページ)
DB2ではどのようなトラブルが想定されるのか。レイヤ別に主なトラブルとその解決方法を紹介する。(編集局)
データベースに関するトラブル
データベース自体のトラブルは、パフォーマンスの問題からデータ・ページの破損によってデータベースにアクセスできなくなるなどの問題まで、さまざまです。パフォーマンスに関しては、大半がチューニングの問題であるため、Database Expertフォーラムの「DB2チューニング・ベストプラクティス」を参考にしてください。
Linux環境で特に多いのは表スペースに関する問題です。中でもRAWデバイスのパーミッションに関する問題が一番多いのではないでしょうか。Linuxでは、rootユーザーとdiskグループにしかRAWデバイスにパーミッションがありません。
# ll /dev/raw* crw-rw---- 1 root root 171, 0 Jul 1 04:04 /dev/raw1394 crw-rw---- 1 root disk 162, 0 Jul 1 04:04 /dev/rawctl crw-rw---- 1 root root 30, 41 Jul 1 04:04 /dev/rawip crw-rw---- 1 root disk 27, 32 Jul 1 04:04 /dev/rawqft0 /dev/raw: total 175 drwxr-xr-x 2 root root 408 Jul 21 23:33 . drwxr-xr-x 35 root root 179544 Sep 2 13:58 .. crw-rw---- 1 root disk 162, 1 Jul 1 04:04 raw1 crw-rw---- 1 root disk 162, 10 Jul 1 04:04 raw10 (以下略)
しかし、DB2はインスタンス・ユーザー権限でRAWデバイスにアクセスしようとするので、書き込み権限などの問題が発生します。そこで、インスタンス・ユーザーもRAWデバイスが使えるように、RAWデバイス設定時にRAWデバイス自体とコントロール・ファイル(rawctl)にパーミッションを与えておきます。
# chown db2inst1.db2grp1 /dev/raw/raw1 # chmod 664 /dev/rawctl
ツール/コマンドに関するトラブル
DB2のツール/コマンドについてのトラブルは、DB2が提供するメッセージ機能が充実しているため、比較的対応が簡単です。例えば、以下のようなエラーに対しては、
$ db2 ? [メッセージ番号]
を使って、エラーメッセージの詳細と対応方法を確認できます。
$ db2 create db test on /db2data SQL1052N データベース・パス "/db2data" が存在しません。
$ db2 ? SQL1052N SQL1052N データベース・パス "<path>" が存在しません。 説明: コマンドの path パラメーターに指定されたパスが無効です。その名前のパスは存在しません。 (以下略)
この場合、「/db2data」というディレクトリが存在しないことが原因なので、正しいパスを指定すれば解決します。
SQL/トランザクションに関するトラブル
SQL/トランザクションに関しては、Linux環境だから特に多いという問題はありません。また、このたぐいのエラーの70%はSQLの文法に関する問題なので、マニュアルのSQLリファレンスを参考に修正すればいいでしょう。
複雑なアプリケーションなどは、トレースファイルを活用することで問題解決を早めることができます。例えば、JDBCとODBCトレースを有効にするには、db2cli.iniに以下のセクションを追加します。
[COMMON] jdbctracepathname=/tmp/jdbctrace jdbctrace=1 trace=1 tracepathname=/tmp/db2trace
以下、ODBCトレース・ファイルの例です。
SQLExecDirect( hStmt=1:1, pszSqlStr="SELECT EMPNO FROM EMPLOYEE", cbSqlStr=-3 ) ---> Time elapsed - +2.500000E-005 seconds ( StmtOut="SELECT EMPNO FROM EMPLOYEE" ) ( Package="SYSSH200 ", Section=4 ) ( Requested Cursor Attributes=1027 ) ( Reply Cursor Attributes=525322 ) ( Actual Cursor Attributes=525323 ) SQLExecDirect( ) <--- SQL_SUCCESS Time elapsed - +1.798410E-001 seconds
このトレースファイルで、カーソルの状態やオプションの詳細などが確認できます。エラー個所の特定も、SQL_ERRORをトレースすることで容易に見つけることができます。
以上、Linux環境を前提に、DB2のトラブルシューティングについて説明しました。DB2の品質自体はそれほど悪くないので、よほどのことがない限り致命的な障害が起こることはありません。皆さんが遭遇するトラブルのほとんどは、解決できるものです。この記事や以下のWebページを参考にして、トラブルに挑んでみてください。トラブルから学ぶことも多いはずです。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 連載:快速MySQLでデータベースアプリ!(全11回)
軽快な動作で知られるRDBMS、MySQLでDBアプリの構築を行う。MySQLのインストールに始まり、PerlやRubyなどのスクリプトでデータベースを操作する方法までを完全解説 - 連載:今から始める MySQL入門(連載中)
定番のLAMP(Linux+Apache+MySQL+PHP)構成でWebアプリケーション開発に挑戦!サンプルアプリの構築を進めながら、基礎知識や操作方法について詳しく解説する - 連載:Oracleマイスター養成講座(全6回)
本連載では、Oracleの管理・チューニング方法を紹介していく。これからOracleを始める人、そしてOracleをより深く理解したい人のための、一歩踏み込んだ実用講座 - 連載:DB2マイスター養成講座(全7回)
本連載では、DB2 UDBの実践的な運用・管理方法を紹介していく。DB2を利用するうえで必要な知識を、実運用を前提にDB2のプロが解説 - 特集:エンタープライズ市場に向かうMySQL 5.0[前編] MySQL 5.0の新機能をアルファ版でチェック
1月に公開された5.0アルファ版は大幅に拡張されており、エンタープライズ市場への進出を予感させる - 特集:Linuxで動くリレーショナルデータベース・カタログ
データベースサーバのOSとしてLinuxを採用するケースが増えている。Linuxで動作する7つの主なリレーショナルデータベースを紹介する。製品導入の際の参考にしてほしい - データベース関連記事一覧