グローバル領域の割り当てを使用するデータベースに割り当てられた、未使用で一時的な固定スプール領域を解放します。これで1つまたは複数のデータベースの領域を更新できます。
DBC.DatabaseSpaceテーブルのAMPレベルの領域の割り当てとDBC.GlobalDBSpaceテーブルのグローバルレベルの領域の割り当ての間の不整合を修正します。
構文
CALL [SYSLIB.] FixAllocatedSpace ( 'FixSpaceOption', 'AllDatabases', 'AllProxyUsers', 'FixDatabaseName', FixedDatabaseCount Errinfo ) [;]
構文要素
| 構文要素 | 説明 |
|---|---|
| SYSLIB | 関数が格納されているデータベースの名前。 |
| FixSpaceOption | 更新する割り当て領域の種類。次のいずれかのオプションを指定します。
NULLにすることはできません。 |
| AllDatabases | すべてのデータベースに割り当てられた領域を更新します。次のいずれかの値を指定します。
|
| AllProxyUsers | すべてのプロキシ ユーザーに割り当てられた領域を更新します。次のいずれかの値を指定します。
|
| FixDatabaseName | ターゲット データベース名。AllDatabasesおよびAllProxyUsersが指定されていない場合(NまたはNULLの値が指定されている場合)は必須です。AllDatabasesまたはAllProxyUsersのいずれかの値がYの場合、FixDatabaseNameにはNULLを指定する必要があります。 |
| FixedDatabaseCount | 割り当てられた領域が修正されたデータベースの出力数。 |
| ErrInfo | 固定領域の操作が成功した場合はNULLです。それ以外の場合は、操作の完了前にプロシージャを停止させたエラーに関する情報が表示されます。 |
許可
このストアド プロシージャまたはSYSLIBデータベースに対するEXECUTE権限が必要です。
引数のタイプ
| データ型 | 値 |
|---|---|
| FixSpaceOption | CHAR(2) CHARACTER SET LATIN |
| AllDatabases | CHAR(1) CHARACTER SET LATIN |
| AllProxyUsers | CHAR(1) CHARACTER SET LATIN |
| FixDatabaseName | VARCHAR(128) CHARACTER SET UNICODE |
使用上の注意
まだ着手していない今後の作業用として余分な領域をAMPに割り当てられる場合があります。この余分な領域は、同一データベースの他のAMPまたは同一AMPの別のデータベースで必要になる場合があります。この未使用の領域が徐々に増え、実行されるべき自動解放が何らかの理由で実行されない場合があります。このプロシージャを使用すると、未使用の領域をグローバル プールに戻せます。
現在の領域使用状況が0の場合、このプロシージャの実行後でも、割り当てられた領域が解放されていません。
このプロシージャを使用する場合
このプロシージャは、グローバル領域のアカウント処理を使用するデータベースにのみ適用されます。SPAAGGRTRACKINFOGLOBAL UDFの結果から、vproc全体に割り当てられた領域値とDBC.GlobalDBSpaceに割り当てられた合計値の間に不整合があると判明した場合は、UDFの実行後にこのプロシージャを使用します。例えば、次のように、すべてのAMP全体に割り当てられたPERMの合計が、DBC.GlobalDBSpaceに割り当てられた領域と異なる場合などです。
select base.databasename databasename,
sum(dbspace.allocatedpermspace) dbspaceallocperm,
syslib.SPAAGGRTRACKINFOGLOBAL(cast(dbglobal.Trackinfo as byte(3880)),'P') delta,
dbglobal.allocatedpermspace globalallocperm
from dbc.databasespace dbspace,dbc.globaldbspace dbglobal,dbc.dbase base
where dbspace.databaseid=dbglobal.databaseid and dbspace.databaseid=base.databaseid and base.databasename='db1' and dbspace.tableid='00000000'XB
group by 1,3,4;
*** Query completed. One row found. 4 columns returned.
*** Total elapsed time was 1 second.
databasename db1
dbspaceallocperm 1,999,900
delta 100
globalallocperm 2,000,000
例
次の例では、データベースTravelに割り当てられたすべての領域フィールドを更新するためにFixAllocatedSpaceを実行する方法について示します。
call SYSLIB.FixAllocatedSpace('A', 'N', 'N', 'Travel', cnt, err);