DBMS_SPACE_ADMIN
パッケージは、ローカルに管理される表領域に対する機能を提供します。
関連項目: DBMS_SPACE_ADMIN の使用方法の例および説明の詳細は、『Oracle Database管理者ガイド』を参照してください。 |
この章では、次の項目について説明します。
セキュリティ・モデル
定数
使用上の注意
この項では、DBMS_SPACE_ADMIN
パッケージの使用に関連する項目について説明します。
表135-1 DBMS_SPACE_ADMINの定数
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
セグメントが所有する領域の使用状況がビットマップに適切に反映されていることを検証します。 |
|
|
|
セグメントが所有する領域の使用状況がビットマップに適切に反映されており、この領域が他のセグメントから要求されていないことを検証します。 |
|
|
|
一時セグメントを破損としてマークします。これにより、ディクショナリからの排除が容易になります(領域の再利用なし)。 |
|
|
|
破損した一時セグメントを有効としてマークします。これは、セグメントのエクステント・マップまたは他の場所での破損が解決され、セグメントを正常に削除できる場合に役立ちます。 |
|
|
|
指定のセグメントのエクステント・マップをダンプします。 |
|
|
|
表領域のビットマップを、その表領域内のセグメントのエクステント・マップを使用して検証し、すべて一致していることを検証します。 |
|
|
|
ブロック範囲(エクステント)を、ビットマップ上で空き領域としてマークします。 |
|
|
|
ブロック範囲(エクステント)を、ビットマップ上で使用領域としてマークします。 |
|
|
|
メタデータの基本的なチェックを実行します。 |
|
|
|
詳細な検証を実行します。 |
|
|
|
セグメントに対して特定のチェックを実行します。 |
|
|
|
最高水位標(HWM)をチェックします。 |
|
|
|
L1 BMB、L2 BMBおよびL3 BMB(ビットマップ・ブロック)間の整合性をチェックします。 |
|
|
|
セグメント・ヘッダーと、対応する |
|
|
|
エクステント・マップに対応する表領域ビットマップが使用領域としてマークされているかどうかをチェックします。 |
|
|
|
L1 BMB、L2 BMB、L3 BMBおよびデータ・ブロックが同一の親セグメントを指しているかをチェックします。 |
|
|
|
ビットマップ・ブロックとエクステント・マップ間に一貫性があるかどうかをチェックします。 |
|
|
|
ブロックを示すビットマップの状態に一貫性があるかどうかをデータ・ブロックからチェックします。 |
|
|
|
表領域ビットマップとその表領域に属するエクステントに一貫性があるかどうかをチェックします。 |
|
|
|
|
|
|
|
表領域内のすべてのセグメントに対して |
|
|
|
ビットマップ・ブロックの要約のみをダンプします。 |
SYSTEM
表領域を移行する前に、次の条件を満たす必要があります。これらの条件は、コールド・バックアップを除くTABLESPACE_MIGRATE_TO_LOCAL
プロシージャによって施行されます。
データベースに、SYSTEM
でないデフォルトの一時表領域があること。
ディクショナリ管理表領域には、ロールバック・セグメントを保持できないこと。
ローカル管理表領域には、最低1つのオンライン・ロールバック・セグメントがあること。自動UNDO管理を使用している場合は、UNDO表領域がオンラインであること。
ロールバック・セグメントまたはUNDO表領域を含む表領域を除くすべての表領域が、読取り専用であること。
データベースのコールド・バックアップがあること。
システムが制限モードであること。
表135-2 DBMS_SPACE_ADMINパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
ASSM(自動セグメント領域管理)表領域に作成されたセグメントを検証します。 |
|
ASSM表領域を検証します。 |
|
空の表(または表の一部)とその依存オブジェクトからセグメントを削除します。 |
MATERIALIZE_DEFERRED_SEGMENTSプロシージャ |
遅延セグメント作成が設定された表(および表の一部)とその依存オブジェクトに対してセグメントを実体化します。 |
|
セグメントを破損または有効としてマークし、適切なエラーのリカバリを可能にします。 |
|
現在破損としてマークされているセグメントを削除します(領域の再生なし)。 |
|
指定セグメントのセグメント・ヘッダーとエクステント・マップをダンプします。 |
|
セグメントのエクステント・マップの一貫性を検証します。 |
|
適切なブロック範囲(エクステント)を、ビットマップ上で空き領域または使用領域としてマークします。 |
移行が異常終了した表領域内のセグメントの状態を修正します。 |
|
TABLESPACE_MIGRATE_FROM_LOCALプロシージャ |
ローカル管理表領域を、ディクショナリ管理表領域に移行します。 |
TABLESPACE_MIGRATE_TO_LOCALプロシージャ |
表領域を、ディクショナリ管理形式からローカル管理形式に移行します。 |
TABLESPACE_REBUILD_BITMAPSプロシージャ |
適切なビットマップを再作成します。 |
TABLESPACE_REBUILD_QUOTASプロシージャ |
指定の表領域について割当て制限を再作成します。 |
TABLESPACE_RELOCATE_BITMAPSプロシージャ |
指定先にビットマップを再配置します。 |
|
表領域内のセグメントについて、ビットマップとエクステント・マップが同期していることを検証します。 |
このプロシージャは、セグメントを指定すると、その領域のメタデータ・ブロックの基本的な一貫性、および領域メタデータとセグメント・データ・ブロックの間の一貫性を検証します。このプロシージャは、自動セグメント領域管理(ASSM)表領域に作成されたセグメントを検証します。
ただし、基本的な検証と詳細な検証の間には次の違いがあります。
基本的な検証には、領域メタデータの一貫性チェックが含まれます。たとえば、レベル1、レベル2、レベル3のビットマップ・ブロック間の整合性、セグメントのエクステント・マップとレベル1のビットマップ範囲との一貫性などがチェックされます。
詳細な検証には、データ・ブロックと領域メタデータ・ブロック間の一貫性チェックが含まれます。たとえば、レベル1の親ビットマップ・ブロックをデータ・ブロックが正しく指しているかどうか、およびデータ・ブロックの空き状態とそのデータ・ブロックに対応するレベル1ビットマップ・ブロックのビットの空き状態に一貫性があるかどうかなどがチェックされます。
構文
DBMS_SPACE_ADMIN.ASSM_SEGMENT_VERIFY ( segment_owner IN VARCHAR2, segment_name IN VARCHAR2, segment_type IN VARCHAR2, partition_name IN VARCHAR2, verify_option IN POSITIVE DEFAULT SEGMENT_VERIFY_BASIC, attrib IN POSITIVE DEFAULT NULL);
パラメータ
表135-3 ASSM_SEGMENT_VERIFYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セグメントを所有するスキーマ。 |
|
検証するセグメントの名前。 |
|
セグメントのネームスペースは、 |
|
パーティションまたはサブパーティションの名前。 |
|
次のオプションのいずれかです。
|
|
|
このプロシージャは、ASSM表領域に作成されたすべてのセグメントを検証します。セグメントごとの検証では、その領域のメタデータ・ブロックの基本的な一貫性チェック、および領域メタデータとセグメント・データ・ブロックの間の一貫性チェックが実行されます。
構文
DBMS_SPACE_ADMIN.ASSM_TABLESPACE_VERIFY ( tablespace_name IN VARCHAR2, ts_option IN POSITIVE, segment_option IN POSITIVE DEFAULT NULL);
パラメータ
表135-4 ASSM_TABLESPACE_VERIFYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
検証する表領域の名前。この表領域はASSM表領域である必要があります。 |
|
|
|
|
このプロシージャは、空の表(または表の一部)とその依存オブジェクトからセグメントを削除します。
注意: この機能は、Oracle Database 11gリリース2(11.2.0.2)以上で使用できます。 |
構文
DBMS_SPACE_ADMIN.DROP_EMPTY_SEGMENTS ( schema_name IN VARCHAR2 DEFAULT NULL, table_name IN VARCHAR2 DEFAULT NULL, partition_name IN VARCHAR2 DEFAULT NULL);
使用上の注意
スキーマ名が指定されると、このプロシージャはそのスキーマ内のすべての表をスキャンします。各表について、表またはその一部が空であることが検出され、その表が一定の基準を満たしている場合(この制限は遅延セグメント作成の制限に関する項に記載されている制限と同じです)、空の表の一部および関連索引のセグメントは、対応するLOBデータおよび索引のセグメントとともに削除されます。後続の挿入操作では、同じプロパティを持つセグメントが作成されます。
オプション:
schema_nameを指定しないと、すべてのスキーマに属している表がスキャンされます。
schema_name
とtable_name
の両方を指定すると、指定した表に対して操作が実行されます。
3つの引数をすべて指定すると、操作は指定したパーティションとその依存オブジェクトに制限されます。
このプロシージャは、遅延セグメント作成が設定された表(および表の一部)とその依存オブジェクトに対してセグメントを実体化します。
注意: この機能は、Oracle Database 11gリリース2(11.2.0.2)以上で使用できます。 |
構文
DBMS_SPACE_ADMIN.MATERIALIZE_DEFERRED_SEGMENTS ( schema_name IN VARCHAR2 DEFAULT NULL, table_name IN VARCHAR2 DEFAULT NULL, partition_name IN VARCHAR2 DEFAULT NULL);
このプロシージャは、適切なエラー・リカバリを実行できるように、セグメントを破損または有効としてマークします。これは、SYSTEM
表領域では使用できません。
構文
DBMS_SPACE_ADMIN.SEGMENT_CORRUPT ( tablespace_name IN VARCHAR2, header_relative_file IN POSITIVE, header_block IN POSITIVE, corrupt_option IN POSITIVE DEFAULT SEGMENT_MARK_CORRUPT);
このプロシージャは、現在破損としてマークされているセグメントを削除します(領域の再生なし)。これを実行するには、セグメントが一時的としてマークされている必要があります。破損のセグメントを一時的としてマークするには、セグメントでDROP
コマンドを発行します。
構文
DBMS_SPACE_ADMIN.SEGMENT_DROP_CORRUPT ( tablespace_name IN VARCHAR2, header_relative_file IN POSITIVE, header_block IN POSITIVE);
使用上の注意
セグメント用の領域は解放されないため、TABLESPACE_FIX_BITMAPSプロシージャまたはTABLESPACE_REBUILD_BITMAPSプロシージャを使用して調整する必要があります。
SYSTEM
表領域では使用できません。
セグメント・ヘッダー・ブロックの相対ファイル番号およびブロック番号(header_relative_file
パラメータおよびheader_block
パラメータ)は、DBA_SEGMENTS
を問い合せて決定します。
このプロシージャは、特定のセグメントのセグメント・ヘッダーおよびビットマップ・ブロックを、USER_DUMP_DEST
初期化パラメータで指定した場所にダンプします。
構文
DBMS_SPACE_ADMIN.SEGMENT_DUMP ( tablespace_name IN VARCHAR2, header_relative_file IN POSITIVE, header_block IN POSITIVE, dump_option IN POSITIVE DEFAULT SEGMENT_DUMP_EXTENT_MAP);
このプロシージャは、セグメントのエクステント・マップと表領域のファイル・ビットマップ間の一貫性をチェックします。
構文
DBMS_SPACE_ADMIN.SEGMENT_VERIFY ( tablespace_name IN VARCHAR2, header_relative_file IN POSITIVE, header_block IN POSITIVE, verify_option IN POSITIVE DEFAULT SEGMENT_VERIFY_EXTENTS);
このプロシージャは、適切なブロック範囲(エクステント)を、ビットマップ上で空きまたは使用中としてマークします。これは、SYSTEM
表領域では使用できません。
構文
DBMS_SPACE_ADMIN.TABLESPACE_FIX_BITMAPS ( tablespace_name IN VARCHAR2, dbarange_relative_file IN POSITIVE, dbarange_begin_block IN POSITIVE, dbarange_end_block IN POSITIVE, fix_option IN POSITIVE);
例
次の例では、相対ファイル番号4の、ブロック番号33からブロック番号83までの51ブロックのビットを、ビットマップ内でUSED
としてマークします。
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_FIX_BITMAPS('USERS', 4, 33, 83, DBMS_SPACE_ADMIN.EXTENT_MAKE_USED);
または、オプションにTABLESPACE_EXTENT_MAKE_FREE
を指定して、ビットマップ内でビットを空きとしてマークします。BEGIN
ブロックとEND
ブロックはエクステント境界内にあり、エクステントの倍数である必要があります(そうでない場合は、エラーが発生します)。
このプロシージャは、移行が異常終了した表領域内のセグメントの状態を修正します。ローカルから、またはローカルへの表領域の移行中、セグメントは一時的な状態に置かれます。移行が異常終了すると、イベント10906の設定時点でセグメントの状態がSMONによって訂正されます。セグメントがこのような一時的な状態にあるデータベースは、ダウングレードできません。このプロシージャは、このようなセグメントの状態を修正するために使用できます。
このプロシージャは、ディクショナリ管理形式からローカル管理形式に表領域を移行します。ローカル管理形式に移行した表領域は、ユーザーが管理します。
構文
DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ( tablespace_name IN VARCHAR2, unit_size IN POSITIVE DEFAULT NULL, rfno IN POSITIVE DEFAULT NULL);
使用上の注意
SYSTEM
表領域を移行する前に、読込み/書込みモードで使用するディクショナリ管理の表領域をローカル管理に移行してください。SYSTEM
表領域を移行した後で、ディクショナリ管理表領域を読込み/書込みモードに変更することはできません。
関連項目: 『Oracle Database管理者ガイド』 |
移行中、表領域はオンラインを維持して読込み/書込みを行う必要があります。一時表領域は移行できないことに注意してください。
割当て単位はオプションで指定できます。デフォルトは、表領域の全エクステント(使用中または空き)の最大公約数に基づいてシステムで計算されます。この数値は、表領域のMINIMUM EXTENT
に基づきさらに減少します(MINIMUM EXTENT
が指定されていない場合は5)。したがって、計算された値が表領域のMINIMUM EXTENT
を超えることはありません。各ファイルの最後にある空きエクステントは、最大公約数の計算については無視されます。単位サイズを指定する場合は、システムで計算されたunit_size
の因数とする必要があり、それ以外の場合はエラー・メッセージが戻ります。
相対ファイル番号のパラメータは、目的のファイルにビットマップを配置するために使用されます。ファイルに領域が見つからないと、エラーが発行されます。指定するデータファイルは、移行する表領域の一部である必要があります。データ・フローを指定しない場合、初期ビットマップ・ブロックを配置するデータ・フローはシステムで選択されます。初期ビットマップに必要な領域が見つからないと、エラーになります。
このプロシージャは、適切なビットマップを再作成します。ビットマップ・ブロックが指定されていない場合は、指定の表領域のすべてのビットマップが再作成されます。
SYSTEM
表領域では使用できません。
構文
DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_BITMAPS ( tablespace_name IN VARCHAR2, bitmap_relative_file IN POSITIVE DEFAULT NULL, bitmap_block IN POSITIVE DEFAULT NULL);
このプロシージャは、指定先にビットマップを再配置します。
構文
DBMS_SPACE_ADMIN.TABLESPACE_RELOCATE_BITMAPS ( tablespace_name IN VARCHAR2, filno IN POSITIVE, blkno IN POSITIVE);
使用上の注意
表領域のディクショナリ管理からローカル管理形式への移行を行うと、ビットマップ・ブロックを含んだSPACE HEADER
セグメントが作成される場合があります。SPACE
HEADER
セグメントは、ユーザー・データとして取り扱われます。ユーザーがファイルのサイズを明示的にSPACE HEADERセグメント以下に変更すると、エラーが発行されます。制御情報を別の場所に移してからファイルのサイズを変更する場合は、TABLESPACE_RELOCATE_BITMAPS
コマンドを使用します。
このプロシージャは、SYSTEM
表領域では使用できません。
ビットマップの再配置中は、表領域はオンラインを維持して読込み/書込みを行う必要があります。ビットマップの再配置は、移行したローカル管理表領域でのみ実行できます。