ALTER STOGROUP ステートメント
ALTER STOGROUP ステートメントは、ストレージ・グループの定義を変更するために使用されます。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
このステートメントの許可 ID が持つ特権には、SYSCTRL または SYSADM 権限が含まれている必要があります。
構文
説明
- ストレージ・グループ名
- 変更されるストレージ・グループを指定します。storagegroup-name には、現行のサーバー上の既存のストレージ・グループを指定する必要があります (SQLSTATE 42704)。 これは、1 部構成の名前です。
- ADD
- これを指定すると、指定ストレージ・グループに 1 つ以上の新しいストレージ・パスが追加されます。
- storage-path
- 自動ストレージ表スペースが作成されるコンテナー・ロケーションを指定するストリング定数。 以下の表に示すとおり、ストリングの形式はオペレーティング・システムによって異なります。
オペレーティング・システム ストレージ・パス・ストリングの形式 Linux®
AIX®絶対パス Windows ドライブ・レター名 ストリングには、ストレージ・パス内でデータベース・パーティション番号情報を指定するためのデータベース・パーティション式を含めることができます。 パフォーマンスを予測可能にするには、ストレージ・グループに追加されるストレージ・パスのメディア特性を、類似したものにします。
ストレージ・パスの最大長は 175 文字です (SQLSTATE 54036)。
追加するストレージ・パスは、パスの命名規則に照らして有効でなければなりませんし、アクセス可能であることも必要です (SQLSTATE 57019)。 同様に、パーティション・データベース環境では、ストレージ・パスが存在し、各データベース・パーティションごとにアクセス可能でなければなりません (SQLSTATE 57019)。
- 自動ストレージ表スペースが作成されるコンテナー・ロケーションを指定するストリング定数。 以下の表に示すとおり、ストリングの形式はオペレーティング・システムによって異なります。
- DROP
- これを指定すると、特定のストレージ・グループから 1 つ以上のストレージ・パスが除去されます。 表スペースがアクティブに使用しているストレージ・パスをドロップすると、そのストレージ・パスの状態は『使用中』から『ドロップ・ペンディング』に変更され、今後そのストレージ・パスを使用できないようになります。
DROP Storage-Path 節は、 Db2® pureScale® 環境ではサポートされていません (SQLSTATE 56038)。
- storage-path
- ストレージ・グループからドロップするストレージ・パスを指定するストリング定数。 以下の表に示すとおり、ストリングの形式はオペレーティング・システムによって異なります。
オペレーティング・システム ストレージ・パス・ストリングの形式 Linux
AIX絶対パス Windows ドライブ・レター名 ストリングには、ストレージ・パス内でデータベース・パーティション番号情報を指定するためのデータベース・パーティション式を含めることができます。
ドロップするストレージ・パスは現在ストレージ・グループ内に存在している必要があり (SQLSTATE 57019)、既に『ドロップ・ペンディング』状態であってはなりません (SQLSTATE 55073)。
- ストレージ・グループからドロップするストレージ・パスを指定するストリング定数。 以下の表に示すとおり、ストリングの形式はオペレーティング・システムによって異なります。
- OVERHEAD number-of-milliseconds
- 入出力コントローラー使用、ディスク・シーク、および待ち時間を指定します。 この値を使用して、照会最適化時の入出力のコストを判別します。 number-of-milliseconds の値は数値リテラル (整数、10 進数、または浮動小数点数) です。 この値がすべてのストレージ・パスに対して同じでない場合は、値を、ストレージ・グループに属するすべてのストレージ・パスの平均を表す数値リテラルに設定します。
- DEVICE READ RATE 数値-メガバイト/秒
- 読み取り転送速度のデバイス仕様を表します (メガバイト/秒単位)。 この値を使用して、照会最適化時の入出力のコストを判別します。 number-megabytes-per-second の値は数値リテラル (整数、10 進数、または浮動小数点数) です。 この値がすべてのストレージ・パスに対して同じでない場合は、値を、ストレージ・グループに属するすべてのストレージ・パスの平均を表す数値リテラルに設定します。
- DATA TAG integer-constant または DATA TAG NONE
- 特定のストレージ・グループ内のデータにタグを指定します。 この値は、作業クラス定義に含まれる WLM 構成の一部として使用することもできますし、しきい値定義内で参照することもできます。 詳しくは、CREATE WORK CLASS SET、ALTER WORK CLASS SET、CREATE THRESHOLD、ALTER THRESHOLD の各ステートメントを参照してください。
- integer-constant
- integer-constant の有効値は、1 から 9 までの整数定数です。
- NONE
- NONE が指定されている場合、データ・タグはありません。
- SET AS DEFAULT
- これを指定すると、変更対象のストレージ・グループがデフォルトのストレージ・グループとして指定されます。 デフォルトのストレージ・グループとして指定できるのは、1 つのストレージ・グループだけです。 そのストレージ・グループを使用する既存の表スペースには影響はありません。 表スペースの作成時にストレージ・グループが指定されておらず、リダイレクト・リストア中にデータベース管理の表スペースが自動ストレージ管理に変換される場合には、指定されるデフォルトのストレージ・グループが自動ストレージ表スペースによって使用されます。
ルール
- ストレージ・グループには、少なくとも 1 つのストレージ・パスがなければなりません。 ストレージ・グループからすべてのストレージ・パスをドロップすることはできません (SQLSTATE 428HH)。
- ALTER STOGROUP ステートメントは、データベース・パーティション・サーバーの追加中には実行できません (SQLSTATE 55071)。
- ストレージ・グループには最大 128 個のストレージ・パスを定義できます (SQLSTATE 5U009)。
- トランザクションには、ストレージ・グループごとに ALTER STOGROUP ステートメントを 1 つまでしか指定できません。 デフォルトのストレージ・グループの場合、ALTER DATABASE ステートメントまたは ALTER STOGROUP ステートメントのいずれかを、1 つまでしか指定できません (SQLSTATE 25502)。
注
- 新規ストレージ・パスの追加: 新規ストレージ・パスを追加する際には、
- このストレージ・グループを使用する既存の REGULAR および LARGE 表スペースは、最初、これらの新規パスを使用しません。 データベース・マネージャーは、スペース不足状態が発生した場合にのみ、これらのパスに新しい表スペース・コンテナーを作成する可能性があります。 既存の表スペースに対して ALTER TABLESPACE REBALANCE ステートメントを発行すると、新しく追加された複数のストレージ・パスにそれらの表スペースを分散してストライピングすることができます。
- 自動ストレージによって管理される既存の TEMPORARY 表スペースが、新しいストレージ・パスを自動的に使用することはありません。 これらの表スペース内のコンテナーが 1 つ以上の新しいストレージ・パスを使用するには、データベースを通常どおり停止してから再始動しなければなりません。 代わりに、TEMPORARY 表スペースをドロップして再作成することもできます。 これらの表スペースを作成すると、十分なフリー・スペースがあるすべてのストレージ・パスを自動的に使用します。
- フリー・スペースの計算: データベース・パーティション上のストレージ・パス用のフリー・スペースの計算時には、ストレージ・パス内で以下のディレクトリーまたはマウント・ポイントが存在するかどうかがデータベース・マネージャーによって検査され、最初に見つかったものが使用されます。
説明:<storage path>/<instance name>/NODE####/<database name> <storage path>/<instance name>/NODE#### <storage path>/<instance name> <storage path>
- <storage path> は、データベースに関連付けられたストレージ・パスです。
- <instance name> は、データベースが存在するインスタンスです。
- NODE#### は、データベース・パーティション番号に対応します (例えば、 NODE0000 または NODE0001)。
- <database name> はデータベースの名前です。
- 複数のデータベース・パーティションを分離して 1 つのストレージ・パスの下にまとめる操作: ファイル・システムは、ストレージ・パスの下の特定の地点にマウントすることができます。そのようにすると、表スペース・コンテナーに使用できる実際のフリー・スペース量が、ストレージ・パス・ディレクトリーそのものに関連付けられている量と同量ではない可能性があることがデータベース・マネージャーで認識されます。
1 台の物理コンピューター上に 2 つの論理データベース・パーティションが存在し、単一のストレージ・パス (/dbdata) が存在する例を考えてみます。 各データベース・パーティションはこのストレージ・パスを使用しますが、独自のファイル・システム内の各パーティションからデータを分離することもできます。 この場合、パーティションごとに別個のファイル・システムを作成し、/dbdata/<instance>/NODE#### にマウントすることができます。 ストレージ・パス上にコンテナーを作成し、フリー・スペースを決定する場合、データベース・マネージャーは /dbdataのフリー・スペース情報を取得せず、代わりに対応する /dbdata/<instance>/NODE#### ディレクトリーの情報を取得します。
- 1 つ以上の表スペースで使用中であるストレージ・パスのドロップ: 1 つ以上の表スペースが使用しているストレージ・パスをドロップすると、パスの状態は「使用中」から「ドロップ・ペンディング」に変更されます。 このパスでその後増加が生じることはありません。
そのパスをストレージ・グループから完全に除去できるようにするには、その前に影響を受けるそれぞれの表スペースを (ALTER TABLESPACE ステートメントの REBALANCE 節を使用して) 再平衡化し、そのコンテナー・データを該当するストレージ・パスから送出しなければなりません。 再平衡化がサポートされているのは、REGULAR および LARGE 表スペースだけです。 ドロップされるパスからコンテナーを除去するには、一時表スペースをいったんドロップしてから再作成します。 いずれの表スペースによっても使用されていないパスの場合、データベースから物理的に除去されます。
パーティション・データベース環境の場合、パスは各パーティション上に個別に維持されます。 あるデータベース・パーティションでパスが使用されなくなると、そのパーティションから物理的に除去されます。 その他のパーティションでは、そのパスは『ドロップ・ペンディング』状態のものとして引き続き示される場合があります。 ドロップ・ペンディング状態のストレージ・パスを使用している自動ストレージ表スペースのリストについては、以下の SQL ステートメントを発行すると判別できます。SELECT DISTINCT TBSP_NAME, TBSP_ID, TBSP_CONTENT_TYPE FROM TABLE(MON_GET_TABLESPACE(NULL,-2)) AS T WHERE TBSP_PATHS_DROPPED = 1
- ストレージ・グループに複数回追加されたストレージ・パスのドロップ: ある特定のストレージ・パスを 1 つのストレージ・グループに複数回追加することも可能です。 DROP 節を使用する場合、そうしたパスを一度指定すると、パスのすべてのインスタンスがストレージ・グループからドロップされます。
例
- ドライブ D と E を COMPLIANCE という名前のストレージ・グループ名に追加します。
ALTER STOGROUP COMPLIANCE ADD 'D:\', 'E:\'
- COMPLIANCE という名前のストレージ・グループにストレージ・パスを追加します。
ALTER STOGROUP COMPLIANCE ADD '/db/filesystem3', '/db/filesystem4'
- OPERATIONAL ストレージ・グループのデータ・タグを変更し、それをデフォルトのストレージ・グループとして指定します。
ALTER STOGROUP OPERATIONAL DATA TAG 3 SET AS DEFAULT
- 各データベース・パーティション上のストレージ・パスを区別するために、データベース・パーティション式を使用するストレージ・パスを追加します。
ALTER STOGROUP TESTDATA ADD '/dataForPartition $N'
- ストレージ・グループ TESTDATA からパス /db/filesystem1 および /db/filesystem2 を除去します。
ALTER STOGROUP TESTDATA DROP '/db/filesystem1', '/db/filesystem2'