DB2 Version 10.1 for Linux, UNIX, and Windows

データ・パーティションのドロップ

データ・パーティションをドロップするには、パーティションをデタッチし、 デタッチ操作によって作成される表をドロップします。DETACH PARTITION 節を 指定した ALTER TABLE ステートメントを使用して、 パーティションのデタッチおよびスタンドアロン表の作成を 行い、DROP TABLE ステートメントを使用して、その表をドロップします。

始める前に

データ・パーティションをパーティション表からデタッチするには、ユーザーは以下の権限または特権を持っていなければなりません。
  • DETACH 操作を実行するユーザーには、ソース表に対して ALTER、SELECT、および DELETE を行う権限が必要です。
  • また、ユーザーには、ターゲット表を作成する権限も必要です。 そのため、データ・パーティションをデタッチするために表を変更するには、ステートメントの許可 ID が所有する特権に、少なくとも、ターゲット表に対する以下の特権の 1 つが含まれている必要があります。
    • DBADM 権限
    • データベースに対する CREATETAB 権限と表により使用される表スペースに対する USE 特権、および次のいずれか:
      • データベースに対する IMPLICIT_SCHEMA 権限 (表の暗黙または明示スキーマ名がない場合)
      • スキーマに対する CREATEIN 特権 (表のスキーマ名が既存のスキーマを指す場合)
表をドロップするには、ユーザーに次の権限または特権が必要です。
  • SYSCAT.TABLES の DEFINER 列に記録されている定義者であるか、または次の特権の少なくとも 1 つを持っている必要があります。
    • DBADM 権限
    • 表のスキーマに対する DROPIN 特権
    • 表に対する CONTROL 特権
注: データ・パーティションのデタッチを行うと、 ステートメントの許可 ID は事実上 CREATE TABLE ステートメントを発行しようとするため、 その操作の実行に必要な特権を持っていなければなりません。 表スペースは、デタッチされているデータ・パーティションがすでに存在する表スペースです。 ALTER TABLE ステートメントの許可 ID は、ユーザーが CREATE TABLE ステートメントを発行したかのように、CONTROL 権限を持つ新規表の定義者になります。 変更されている表の権限はいずれも新規表には転送されません。 ALTER TABLE ... DETACH PARTITION 操作の直後にデータにアクセスできるのは、ALTER TABLE ステートメントの許可 ID、および DBADM または SYSADM のみです。

手順

パーティション表のデータ・パーティションをデタッチするには、DETACH PARTITION 節を指定して ALTER TABLE ステートメントを発行します。

次の例では、表 stock からデータ・パーティション dec01 がデタッチされ、表 junk に置かれます。 非同期パーティション・デタッチ・タスクによってターゲット表 junk が使用可能になったことを確認したら、表 junk をドロップします。これによりそれに関連したデータ・パーティションもドロップされます。
    ALTER TABLE stock DETACH PART dec01 INTO junk;
     -- ターゲット表が使用可能になったら、DROP TABLE ステートメントを実行します。
    DROP TABLE junk;

次のタスク

DB2® バージョン 9.7 フィックスパック 1 以降のリリースでは ALTER TABLE ... DETACH を可能な限り高速化するために、 非同期のパーティション・デタッチ・タスクによって、デタッチ操作が非同期で 実行されます。デタッチされた従属表が存在する場合、非同期パーティション・デタッチ・タスクは開始されず、デタッチされたデータ・パーティションはスタンドアロン表になりません。 この場合、すべてのデタッチされた従属表に対して、SET INTEGRITY ステートメントを発行する必要があります。 SET INTEGRITY の完了後、非同期パーティション・デタッチ・タスクが開始され、ターゲット表が使用可能 になります。ターゲット表がアクセス可能になったら、表のドロップを実行できます。