<< DB2 Express-C 9.7.4のインストールガイドを書きました | main | Redhat+IBMのKVMセミナー資料公開 >>

指定されたスキーマの表をRUNSTATSするストアドプロシージャのサンプル

DB2で統計情報を更新するにはRUNSTATSコマンドを使用します。

- RUNSTATS

このRUNSTATSコマンドは1つの表に対して実行するのですが、業務ではスキーマにある表全部にまとめてRUNSTATSを実行したい場合があります。

こういう場合は簡単なストアドプロシージャを作ることで対応できます。例えば以下のような感じです。

CREATE PROCEDURE runstats_by_schema (IN schema_name VARCHAR(100))
LANGUAGE SQL
BEGIN
DECLARE SQLSTATE CHAR(5);

DECLARE i INT DEFAULT 0;
DECLARE table_name VARCHAR (100);

FOR c AS SELECT TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA = schema_name AND TYPE = 'T'
DO
SET table_name = c.TABNAME ;
CALL ADMIN_CMD
('RUNSTATS ON TABLE "'||RTRIM(schema_name)||'"."'||RTRIM(table_name)||'" WITH DISTRIBUTION AND DETAILED INDEXES ALL');
SET i = i+1;
END FOR;

RETURN i;
END
@

上記をファイルに保存して、DB2コマンドウィンドウで、

> db2 "CONNECT TO mydb"
> db2 -td@ -vf ファイル名

でプロシージャを作成し、

> db2 "CALL runstats_by_schema('スキーマ名')"

でRUNSTATSを実行できます。戻り値はRUNSTATSを実行した表の数です。

プロシージャの中ではSELECTでSYSCAT.TABLESから表名一覧を出し、それをADMIN_CMDに渡してRUNSTATSを実行しています。ADMIN_CMDはSQLで管理コマンドを実行するためのプロシージャです。

RUNSTATSは表毎にオプションを変えたい場合もあるので、こういう一括した方法は不便な場合もありますが、テストや開発用途では便利だと思います。

またこういうプロシージャの書き方はRUNSTATSだけではなくREORGなど色々応用が効くと思います。

コメント
弊社では、REORGも含めてSHELL化してますね

SET PROFILEでテーブルごとのRUNSTATSオプションをセットしておき、SHELL内のRUNSTATSでは、USE PROFILEで実行するようにしています
  • nao
  • 2011/06/05 2:29 PM
コメントする(emailやurlは無記入でもOKです)









この記事のトラックバックURL (※SPAM対策のため、元記事のPermalink URLへのリンクがないものはトラックバックされません)
トラックバック
検索
著書
DB2cover_small.jpg
DB2の管理方法を解説した本を書きました。
ad
リンク集
about this site
recommend
プログラマのためのSQL 第4版
プログラマのためのSQL 第4版 (JUGEMレビュー »)
ジョー・セルコ
名著が第4版として、内容拡充されて発売されました。SQLの考え方を基礎からしっかり学習したい方にお勧めです。
recommend
recommend
WebSphere Application Server 構築・運用バイブル 【WAS8.5/8.0/7.0対応】
WebSphere Application Server 構築・運用バイブル 【WAS8.5/8.0/7.0対応】 (JUGEMレビュー »)
串宮 平恭,達見 圭介,田中 孝清,原口 知子,福崎 哲郎,盛林 哲
WebSphere Application Serverの運用管理本が出ました!WAS v7〜v8.5まで幅広いバージョンに対応しています。
recommend
recommend
Effective Java 第2版 (The Java Series)
Effective Java 第2版 (The Java Series) (JUGEMレビュー »)
Joshua Bloch
すべてのJava開発者必読の書が大幅改訂されて第2版になりました!。
文法などは解説していませんが、Java言語でプログラムを書くにはどういう事に気をつけるべきかという事が非常に端的に、かつ明確な理由とともに解説されています。
第2版ではJava SE 6対応がなされ、第1版で提案してJava SEに取り込まれた部分は整理され、新しい機能であるGenericsやアノテーションについての記述が多数追加されています。以前に増してお勧めできる書になりました。
まだ読んだことが無いJava開発者はぜひ読んでみてください。
recommend
 (JUGEMレビュー »)

基礎的なSQLは書けるようになったけど、今ひとつSQLのルールになんとなくしっくりこない、腑に落ちない。そんな人にお勧めの入門書です。SQLの根底に流れる基本的な考え方をやさしく解説してくれています。(レビューはこちら)
recommend
SQLパズル 第2版 プログラミングが変わる書き方/考え方
SQLパズル 第2版 プログラミングが変わる書き方/考え方 (JUGEMレビュー »)
ジョー・セルコ,Joe Celko
SQL入門を終えて、SQL中級/上級者になりたいと考えている方にぴったりのトレーニング本です(レビューはこちら)
recommend
XML-DB開発 実技コース
XML-DB開発 実技コース (JUGEMレビュー »)
下佐粉 昭,野間 愛一郎,久保 俊彦,高橋 賢司
XML-DBのやさしい入門書です。XMLの基礎から、XPath,XQueryの解説、設計の基礎、Javaでのプログラミング等盛りだくさんの内容です。
recommend
データベースパフォーマンスアップの教科書 基本原理編
データベースパフォーマンスアップの教科書 基本原理編 (JUGEMレビュー »)
エンコアコンサルティング
DBMSの基本的な内部構成、動作についての考え方をやさしく解説してくれています。(レビューはこちら)
recommend
メインフレーム実践ハンドブック z/OS(MVS),MSP,VOS3のしくみと使い方
メインフレーム実践ハンドブック z/OS(MVS),MSP,VOS3のしくみと使い方 (JUGEMレビュー »)
神居 俊哉
メインフレームの技術について、基礎概念から、実践的な使い方までを網羅した初めての解説書です。
recommend
 (JUGEMレビュー »)

CSSの概念/基礎をしっかりと解説してくれるCSS入門書。サイトへの実践的な適用方法も解説されています(レビューはこちら)
無料のDB2 Express-C
DB2 Express-C ダウンロード
recent entries
categories
recent comments
  • DB2の正式名称が"Db2"に変更。dashDB for TransactionもDb2 on Cloudに名称変更
    Taco (06/24)
  • DB2でインスタンスを追加で作成するには
    SIM (03/18)
  • DB2でインスタンスを追加で作成するには
    晩衛 (03/17)
  • SQLの学習サイト
    SIM (03/26)
  • SQLの学習サイト
    DB (03/25)
  • IBMとマイクロソフトが提携!AzureでDB2やWebSphereが、IBMクラウドでSQL Serverが提供される事に
    sim (10/25)
  • IBMとマイクロソフトが提携!AzureでDB2やWebSphereが、IBMクラウドでSQL Serverが提供される事に
    INA (10/24)
  • OpenSSLのHeartbleed脆弱性(CVE-2014-0160)は、DB2には影響ありません
    SIM (04/24)
  • OpenSSLのHeartbleed脆弱性(CVE-2014-0160)は、DB2には影響ありません
    oda (04/23)
  • IBM BLU for Cloudの日本語ガイド
    SIM (03/13)
recent trackbacks
archives