17.10 - FixAllocatedSpaceプロシージャ - Advanced SQL Engine - Teradata Database

Teradata Vantage™- データベースの管理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
管理
Publication ID
B035-1093-171K-JPN
Language
日本語 (日本)

グローバル領域の割り当てを使用するデータベースに割り当てられた、未使用で一時的な固定スプール領域を解放します。これで1つまたは複数のデータベースの領域を更新できます。

DBC.DatabaseSpaceテーブルのAMPレベルの領域の割り当てとDBC.GlobalDBSpaceテーブルのグローバルレベルの領域の割り当ての間の不整合を修正します。

構文

CALL [SYSLIB.] FixAllocatedSpace (
  'FixSpaceOption',
  'AllDatabases',
  'AllProxyUsers',
  'FixDatabaseName',
  FixedDatabaseCount
  Errinfo
) [;]

構文要素

構文要素 説明
SYSLIB 関数が格納されているデータベースの名前。
FixSpaceOption 更新する割り当て領域の種類。次のいずれかのオプションを指定します。
  • P(永久)
  • S(スプール)
  • A(すべてのオプション)

NULLにすることはできません。

AllDatabases すべてのデータベースに割り当てられた領域を更新します。次のいずれかの値を指定します。
  • Y
  • N
  • NULL
AllProxyUsers すべてのプロキシ ユーザーに割り当てられた領域を更新します。次のいずれかの値を指定します。
  • Y
  • N
  • NULL
固定領域を操作できるのは、プロファイルを割り当てられたプロキシ ユーザーのみです。
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);