DBMS_SPACEパッケージによって、セグメントの成長と領域要件を分析できます。
この章では、次の項目について説明します。
セキュリティ・モデル
DBMS_SPACEパッケージでは、オブジェクト・タイプ、レコード・タイプおよび表タイプを定義します。
このタイプには、ASA_RECOMMENDATIONSファンクションによって戻される個々の列のタイプが含まれています。
構文
TYPE asa_reco_row IS RECORD ( tablespace_name VARCHAR2(30), segment_owner VARCHAR2(30), segment_name VARCHAR2(30), segment_type VARCHAR2(18), partition_name VARCHAR2(30), allocated_space NUMBER, used_space NUMBER, reclaimable_space NUMBER, chain_rowexcess NUMBER, recommendations VARCHAR2(1000), c1 VARCHAR2(1000), c2 VARCHAR2(1000), c3 VARCHAR2(1000), task_id NUMBER, mesg_id NUMBER);
属性
表134-2 ASA_RECO_ROWの属性
| フィールド | 説明 |
|---|---|
|
|
オブジェクトを含む表領域の名前。 |
|
|
スキーマの名前。 |
|
|
オブジェクト名。 |
|
|
' |
|
|
パーティションの名前。 |
|
|
セグメントに割り当てる領域。 |
|
|
実際にセグメントに使用される領域。 |
|
|
セグメント内の再利用可能な空き領域。 |
|
|
排除可能な余分な連鎖行のパーセント。 |
|
|
このセグメントに対するリコメンデーションまたは検索結果。 |
|
|
リコメンデーションに関連付けられたコマンド。 |
|
|
リコメンデーションに関連付けられたコマンド。 |
|
|
リコメンデーションに関連付けられたコマンド。 |
|
|
このセグメントを処理するアドバイザ・タスク。 |
|
|
リコメンデーションに対応するメッセージID。 |
表134-3 DBMS_SPACEパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
システムによって自動的に起動されているか、またはユーザーが手動で起動しているセグメント・アドバイザのリコメンデーションまたは検索結果を戻します。 |
|
|
既存の表に索引を作成するコストを判断します。 |
|
|
様々な属性を備えた表のサイズを判断します。 |
|
|
オブジェクト(表、索引またはクラスタ)にある空きブロックに関する情報を戻します。 |
|
ISDATAFILEDROPPABLE_NAMEプロシージャ |
データファイルが削除可能かどうかを確認します。 |
|
OBJECT_DEPENDENT_SEGMENTSファンクション |
オブジェクトに関連付けられたセグメントのリストを戻します。 |
|
|
特定の時点におけるオブジェクトの領域使用を、この表ファンクションの各行に示します。 |
|
|
自動セグメント領域管理セグメントでの空きブロックの情報を戻します。 |
|
|
オブジェクト(表、索引またはクラスタ)にある未使用領域に関する情報を戻します。 |
このファンクションは、自動セグメント・アドバイザの保存された結果を使用してリコメンデーションを戻します。また、指定したオブジェクトに対する最新の実行結果を戻します。
構文
DBMS_SPACE.ASA_RECOMMENDATIONS ( all_runs IN VARCHAR2 DEFAULT := TRUE, show_manual IN VARCHAR2 DEFAULT := TRUE, show_findings IN VARCHAR2 DEFAULT := FALSE) RETURN ASA_RECO_ROW_TB PIPELINED;
パラメータ
表134-4 ASA_RECOMMENDATIONSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
|
|
リコメンデーションではなく、検索結果のみを表示します。 |
このプロシージャでは、既存の表に索引を作成するコストを判断します。索引の作成に使用するDDL文を入力します。このプロシージャは、索引の作成に必要な記憶域を出力します。
構文
DBMS_SPACE.CREATE_INDEX_COST ( ddl IN VARCHAR2, used_bytes OUT NUMBER, alloc_bytes OUT NUMBER, plan_table IN VARCHAR2 DEFAULT NULL);
このプロシージャは、様々な属性を備えた表のサイズを判断するため、容量計画で使用されます。オブジェクトのサイズは、表領域の記憶域の属性、表領域のブロック・サイズなどによって大きく異なります。このプロシージャには、2つのオーバーロードがあります。
最初のバージョンでは、表の列情報を引数として使用して、表サイズを出力します。
2つ目のバージョンでは、表の標準行サイズを引数として使用し、表サイズを出力します。
このプロシージャは、ディクショナリ管理表領域とローカル管理表領域のエクステント管理でも、手動および自動によるセグメント領域管理でも使用できます。
構文
DBMS_SPACE.CREATE_TABLE_COST ( tablespace_name IN VARCHAR2, avg_row_size IN NUMBER, row_count IN NUMBER, pct_free IN NUMBER, used_bytes OUT NUMBER, alloc_bytes OUT NUMBER); DBMS_SPACE.CREATE_TABLE_COST ( tablespace_name IN VARCHAR2, colinfos IN CREATE_TABLE_COST_COLUMNS, row_count IN NUMBER, pct_free IN NUMBER, used_bytes OUT NUMBER, alloc_bytes OUT NUMBER); CREATE TYPE create_table_cost_colinfo IS OBJECT ( COL_TYPE VARCHAR(200), COL_SIZE NUMBER);
使用上の注意
used_bytesは、データが使用する実際のバイト数を表します。このサイズには、ブロック・メタデータ、PCTFREEなどによるオーバーヘッドが含まれます。
alloc_bytesは、表領域に作成されるときの表のサイズを示します。このサイズには、表領域におけるエクステントのサイズ、および表領域エクステント管理のプロパティが考慮されています。
例
-- review the parameters
SELECT argument_name, data_type, type_owner, type_name
FROM all_arguments
WHERE object_name = 'CREATE_TABLE_COST'
AND overload = 2
-- examine the input parameter type
SELECT text
FROM dba_source
WHERE name = 'CREATE_TABLE_COST_COLUMNS';
-- drill down further into the input parameter type
SELECT text
FROM dba_source
WHERE name = 'create_table_cost_colinfo';
set serveroutput on
DECLARE
ub NUMBER;
ab NUMBER;
cl sys.create_table_cost_columns;
BEGIN
cl := sys.create_table_cost_columns( sys.create_table_cost_colinfo('NUMBER',10),
sys.create_table_cost_colinfo('VARCHAR2',30),
sys.create_table_cost_colinfo('VARCHAR2',30),
sys.create_table_cost_colinfo('DATE',NULL));
DBMS_SPACE.CREATE_TABLE_COST('SYSTEM',cl,100000,0,ub,ab);
DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));
DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));
END;
/
このプロシージャは、オブジェクト(表、索引またはクラスタ)にある空きブロックに関する情報を戻します。自動セグメント領域管理セグメントでの空きブロック情報の詳細は、「SPACE_USAGEプロシージャ」を参照してください。
構文
DBMS_SPACE.FREE_BLOCKS ( segment_owner IN VARCHAR2, segment_name IN VARCHAR2, segment_type IN VARCHAR2, freelist_group_id IN NUMBER, free_blks OUT NUMBER, scan_limit IN NUMBER DEFAULT NULL, partition_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表134-7 FREE_BLOCKSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
分析するセグメントのスキーマ名。 |
|
|
分析するセグメントのセグメント名。 |
|
|
分析するセグメントのタイプ(
|
|
|
空きリスト・サイズが計算される空きリスト・グループ(インスタンス)。 |
|
|
指定されたグループに関する空きブロック数を戻します。 |
|
|
読み込む空きリストのブロックの最大数(オプション)。 空きリストにX個のブロックがあるかのみを確認する場合は、X個のスキャン制限を使用します。 |
|
|
分析するセグメントのパーティション名。 これは、パーティション表についてのみ使用します。サブパーティションの名前は、パーティションがコンポジットのときに使用します。 |
このプロシージャは、データファイルが削除可能かどうかを確認します。実際にファイルを削除する前にこのプロシージャがコールされる場合があります。
この表ファンクションは、指定したオブジェクトに関連付けられたセグメントのリストを戻します。
構文
DBMS_SPACE.OBJECT_DEPENDENT_SEGMENTS( objowner IN VARCHAR2, objname IN VARCHAR2, partname IN VARCHAR2, objtype IN NUMBER) RETURN dependent_segments_table PIPELINED;
パラメータ
表134-9 OBJECT_DEPENDENT_SEGMENTSファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
オブジェクトを含むスキーマ。 |
|
|
オブジェクトの名前。 |
|
|
パーティションの名前。 |
|
|
オブジェクトのタイプ:
|
これは表ファンクションです。特定の時点におけるオブジェクトの領域使用が、行ごとに記述された1行以上の形式で、結果が出力されます。領域使用の合計は、Automatic Workload Repository Facilities(AWRF)から取得するか、または現在の領域使用を計算しAWRFから取得した領域使用デルタと組み合せて取得します。
構文
DBMS_SPACE.OBJECT_GROWTH_TREND ( object_owner IN VARCHAR2, object_name IN VARCHAR2, object_type IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL, start_time IN TIMESTAMP DEFAULT NULL, end_time IN TIMESTAMP DEFAULT NULL, interval IN DSINTERVAL_UNCONSTRAINED DEFAULT NULL, skip_interpolated IN VARCHAR2 DEFAULT 'FALSE', timeout_seconds IN NUMBER DEFAULT NULL, single_datapoint_flag IN VARCHAR2 DEFAULT 'TRUE') RETURN object_growth_trend_table PIPELINED;
パラメータ
表134-11 OBJECT_GROWTH_TRENDファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
オブジェクトを含むスキーマ。 |
|
|
オブジェクトの名前。 |
|
|
オブジェクトのタイプ。 |
|
|
パーティションの名前。 |
|
|
この時間以降に生成された統計は、成長傾向の生成に使用されます。 |
|
|
この時間までに生成された統計は、成長傾向の生成に使用されます。 |
|
|
サンプルを取得する間隔。 |
|
|
欠損値の補間をスキップするかどうかを指定します。 |
|
|
ファンクションのタイムアウト値(秒)。 |
|
|
統計がない場合にセグメントのサンプルを取得するかどうかを指定します。 |
戻り値
OBJECT_GROWTH_TREND表ファンクションでは、出力を記述するためにobject_growth_trend_rowおよびobject_growth_trend_tableを使用します。
TYPE object_growth_trend_row IS RECORD( timepoint TIMESTAMP, space_usage NUMBER, space_alloc NUMBER, quality VARCHAR(20));
表134-12 OBJECT_GROWTH_TREND_ROWタイプのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計が記録された時間。 |
|
|
データが使用する領域。 |
|
|
セグメントのサイズ。オーバーヘッドおよび未使用領域も含まれます。 |
|
|
結果の品質。" |
TYPE object_growth_trend_table IS TABLE OF object_growth_trend_row;
このプロシージャの最初の形式は、セグメント最高水位標のデータ・ブロックの領域使用量を示します。LOB、LOB PARTITIONSおよびLOB SUBPARTITIONSの使用量を計算できます。このプロシージャは、自動セグメント領域管理で作成された表領域でのみ使用できます。ビットマップ・ブロック、セグメント・ヘッダーおよびエクステント・マップ・ブロックはこのプロシージャの対象外です。このオーバーロードは、SECUREFILE LOBでは使用できないことに注意してください。
このプロシージャの2番目の形式は、SECUREFILE LOB領域使用量に関する情報を戻します。これは、LOBセグメント内のすべてのSECUREFILE LOBによって使用されている、ブロック内の領域容量を戻します。このプロシージャによって、LOB列によってアクティブに使用されている領域、保存期限が切れている空き領域および保存期限が切れていない空き領域が表示されます。このオーバーロードは、SECUREFILE LOBでのみ使用できることに注意してください。
構文
DBMS_SPACE.SPACE_USAGE( segment_owner IN VARCHAR2, segment_name IN VARCHAR2, segment_type IN VARCHAR2, unformatted_blocks OUT NUMBER, unformatted_bytes OUT NUMBER, fs1_blocks OUT NUMBER, fs1_bytes OUT NUMBER, fs2_blocks OUT NUMBER, fs2_bytes OUT NUMBER, fs3_blocks OUT NUMBER, fs3_bytes OUT NUMBER, fs4_blocks OUT NUMBER, fs4_bytes OUT NUMBER, full_blocks OUT NUMBER, full_bytes OUT NUMBER, partition_name IN VARCHAR2 DEFAULT NULL);
DBMS_SPACE.SPACE_USAGE( segment_owner IN VARCHAR2, segment_name IN VARCHAR2, segment_type IN VARCHAR2, segment_size_blocks OUT NUMBER, segment_size_bytes OUT NUMBER, used_blocks OUT NUMBER, used_bytes OUT NUMBER, expired_blocks OUT NUMBER, expired_bytes OUT NUMBER, unexpired_blocks OUT NUMBER, unexpired_bytes OUT NUMBER, partition_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表134-13 SPACE_USAGEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
分析するセグメントのスキーマ名。 |
|
|
分析するセグメントの名前。 |
|
|
分析するセグメントのパーティション名。 |
|
|
分析するセグメントのタイプ(
|
|
|
未フォーマットのブロックの合計数。 |
|
|
未フォーマットのバイトの合計数。 |
|
|
空き領域が最低で0から25%のブロック数。 |
|
|
空き領域が最低で0から25%のバイト数。 |
|
|
空き領域が最低で25から50%のブロック数。 |
|
|
空き領域が最低で25から50%のバイト数。 |
|
|
空き領域が最低で50から75%のブロック数。 |
|
|
空き領域が最低で50から75%のバイト数。 |
|
|
空き領域が最低で75から100%のブロック数。 |
|
|
空き領域が最低で75から100%のバイト数。 |
|
|
セグメントが一杯になった場合のブロックの合計数。 |
|
|
セグメントが一杯になった場合のバイトの合計数。 |
|
|
セグメントに割り当てられているブロックの数。 |
|
|
セグメントに割り当てられているバイトの数。 |
|
|
アクティブなデータが含まれているLOBに割り当てられているブロックの数。 |
|
|
アクティブなデータが含まれているLOBに割り当てられているバイトの数。 |
|
|
LOBでバージョン・データの保持に使用されている期限切れブロックの数。 |
|
|
LOBでバージョン・データの保持に使用されている期限切れバイトの数。 |
|
|
LOBでバージョン・データの保持に使用されている期限切れになっていないブロックの数。 |
|
|
LOBでバージョン・データの保持に使用されている期限切れになっていないバイトの数。 |
|
|
パーティションの名前(パーティションでない場合は |
例
variable unf number;
variable unfb number;
variable fs1 number;
variable fs1b number;
variable fs2 number;
variable fs2b number;
variable fs3 number;
variable fs3b number;
variable fs4 number;
variable fs4b number;
variable full number;
variable fullb number;
begin
dbms_space.space_usage('U1','T',
'TABLE',
:unf, :unfb,
:fs1, :fs1b,
:fs2, :fs2b,
:fs3, :fs3b,
:fs4, :fs4b,
:full, :fullb);
end;
/
print unf ;
print unfb ;
print fs4 ;
print fs4b;
print fs3 ;
print fs3b;
print fs2 ;
print fs2b;
print fs1 ;
print fs1b;
print full;
print fullb;
このプロシージャは、オブジェクト(表、索引またはクラスタ)にある未使用領域に関する情報を戻します。
構文
DBMS_SPACE.UNUSED_SPACE ( segment_owner IN VARCHAR2, segment_name IN VARCHAR2, segment_type IN VARCHAR2, total_blocks OUT NUMBER, total_bytes OUT NUMBER, unused_blocks OUT NUMBER, unused_bytes OUT NUMBER, last_used_extent_file_id OUT NUMBER, last_used_extent_block_id OUT NUMBER, last_used_block OUT NUMBER, partition_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表134-14 UNUSED_SPACEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
分析するセグメントのスキーマ名。 |
|
|
分析するセグメントのセグメント名。 |
|
|
分析するセグメントのタイプ(
|
|
|
セグメント内のブロック合計数を戻します。 |
|
|
セグメント内のブロック合計数をバイト単位で戻します。 |
|
|
未使用のブロック数を戻します。 |
|
|
未使用のブロック数をバイト単位で戻します。 |
|
|
データを含んだ最新エクステントのファイルIDを戻します。 |
|
|
データを含んだ最新エクステントの開始ブロックIDを戻します。 |
|
|
データを含んだエクステント内の最終ブロックを戻します。 |
|
|
分析するセグメントのパーティション名。 これは、パーティション表についてのみ使用します。サブパーティションの名前は、パーティションの構成時に使用します。 |