DB2 エクステンダーを使用していると、古い項目が次第に管理サポート表にたまります。 また、メディア・ファイルが削除されたのに、その参照がデータベースから削除されない場合もあります。 古いメタデータを削除すれば、パフォーマンスを改善し、記憶スペースを再利用することができます。
API の使用: 次の例の のサンプル・コードは、ANITAS によって所有されている全ユーザー表の画像メタデータをクリーンアップします。 この例には、エラー検査コードが組み込まれています。 このサンプル・プログラム全体は、SAMPLES サブディレクトリーの API.C ファイルにあります。
図 16. 管理サポート表のクリーンアップを行うサンプル・コード
/*---- query database using DBiAdminReorgMetadata API ----*/ step="DBiAdminReorgMetadata API"; rc = DBiAdminReorgMetadata("anitas"); if (rc < 0) { printf("%s: %s FAILED!\n", argv[0], step); printMsg(rc); DBiGetError(&sqlcode, errorMsgText); printf("sqlcode=%i, errorMsgText=%s\n", sqlcode, errorMsgText); fail = TRUE; } else if (rc > 0) { printf("%s: %s, warning detected.\n", argv[0], step); printMsg(rc); DBiGetError(&sqlcode, errorMsgText); printf("sqlcode=%i, errorMsgText=%s\n", sqlcode, errorMsgText); } else printf("%s: %s PASSED\n\n", argv[0], step); /*---- end of query using DBiAdminReorgMetadata API ----*/ |
db2ext コマンド行の使用:
reorg database user anitas for db2image
DBA でなくても、CONTROL 権限があれば、DBxReorgMetadata API か REORG コマンドを使って、所有する表に対しメタデータのクリーンアップを行うことができます。