REINDEX DATABASE

ユーザー・データベースをバキュームして再索引付けする場合には、REINDEX DATABASE コマンドを使用します。 このコマンドを実行するには SYSTEM データベースに admin ユーザーとして接続す る必要があり ます。

ユーザー・データベースで SQL オブジェクトを作成、使用、および削除すると、データベース・ソフトウェアがシステム・カタログにそれらのオブジェクトのエントリを作成します。 システム・カタログ表には、カタログ・アクセスを高速化するための索引が含まれています。 データベース・ユーザーがオブジェクトの作成、使用、削除を頻繁に行い、そうした操作がサード・パーティーの SQL レポート 作成アプリケーションを使用して行われる場合、削除されたオブジェクトの索引エントリーが非常に大きくなり、照会パフォーマンスに影響を及ぼす恐れがあります。

REINDEX DATABASE コマンドを使用すると、カタログ表にある削除済みオブジェクト のエントリーを削除 (バキューム) し、ユーザー・データベースにカタログ表索引を再作成することができます。 このコマンドを実行するには、SYSTEM データベースに admin ユーザーとして接続する権限がなければなりません 。 ユーザー・データベースは、アクティブなセッションも接続も持つことはできません。 NPSシステムは、REINDEX DATABASE コマンドの実行中もオンライン状態を維持できる。 通常、再索引付け処理は高速です。 このコマンドは通常、小規模なユーザー・データベースを更新するのに数秒しか必要とせず、大規模なデータベースの場合には完了する のに数分かかる場合があります。

構文

REINDEX DATABASE コマンドの構文:
REINDEX DATABASE <name>

入力

REINDEX DATABASE コマンドの入力は以下のとおりです。
表 1. REINDEX DATABASE 入力
入力 説明
<name> 再索引付けするユーザー・データベースの名前。

出力

REINDEX DATABASE コマンドの出力は、以下のとおりです。
表 2. REINDEX DATABASE 出力
出力 説明
REINDEX DATABASE コマンドは成功します。
ERROR: command must be run from the system database このコマンドを実行するには、SYSTEM データベースに admin ユーザーとして接続する必要があります。
ERROR: unable to acquire lock on database name データベースにアクティブな接続があります。 データベースの再索引付けを行うには、その前にデータベースに対するセッションを停止しなければなりません。 SYSTEM データベースの再索引付けを行うことはできません。
ERROR: REINDEX DATABASE cannot run inside a BEGIN/END block or stored procedure REINDEX DATABASE コマンドは、ストアード・プロシージャー本文またはトランザクション・ブロック内で使用することはできません。
ERROR: REINDEX DATABASE: permission denied このコマンドを実行するには、SYSTEM データベースに admin ユーザーとして接続する必要があります。

使用法

以下に使用例を示します。
  • データベース emp を再索引付けします。
    SYSTEM.ADMIN(ADMIN)=> REINDEX DATABASE emp;
    REINDEX DATABASE