DBMS_SPACE_ADMIN
パッケージは、ローカルに管理される表領域に対する機能を提供します。
関連項目: DBMS_SPACE_ADMIN の使用方法の例および説明の詳細は、『Oracle Database管理者ガイド』を参照してください。 |
この章では、次の項目について説明します。
セキュリティ・モデル
定数
使用上の注意
この項では、DBMS_SPACE_ADMIN
パッケージの使用に関連する項目について説明します。
このパッケージは、SYS
権限で実行されるため、このパッケージを実行する権限を持つユーザーは、ビットマップも操作できます。
表120-1 DBMS_SPACE_ADMINの定数
定数 | 型 | 値 | 説明 |
---|---|---|---|
|
|
|
セグメントが所有する領域の使用状況がビットマップに適切に反映されていることを検証します。 |
|
|
|
セグメントが所有する領域の使用状況がビットマップに適切に反映されており、この領域が他のセグメントから要求されていないことを検証します。 |
|
|
|
一時セグメントを破損としてマークします。これにより、ディクショナリからの排除が容易になります(領域の再利用なし)。 |
|
|
|
破損した一時セグメントを有効としてマークします。これは、セグメントのエクステント・マップまたは他の場所での破損が解決され、セグメントを正常に削除できる場合に便利です。 |
|
|
|
指定のセグメントのエクステント・マップをダンプします。 |
|
|
|
表領域のビットマップを、その表領域内のセグメントのエクステント・マップを使用して検証し、すべて一致していることを検証します。 |
|
|
|
DBA範囲(エクステント)を、ビットマップ上で空き領域としてマークします。 |
|
|
|
DBA範囲(エクステント)を、ビットマップ上で使用領域としてマークします。 |
|
|
|
メタデータの基本的なチェックを実行します。 |
|
|
|
詳細な検証を実行します。 |
|
|
|
セグメントに対して特定のチェックを実行します。 |
|
|
|
HWMをチェックします。 |
|
|
|
L1 BMB、L2 BMBおよびL3 BMB間の整合性をチェックします。 |
|
|
|
セグメント・ヘッダーと、対応する |
|
|
|
エクステント・マップに対応する表領域ビットマップが使用領域としてマークされているかどうかをチェックします。 |
|
|
|
L1 BMB、L2 BMB、L3 BMBおよびデータ・ブロックが同一の親セグメントを指しているかをチェックします。 |
|
|
|
ビットマップ・ブロックとエクステント・マップ間に一貫性があるかどうかをチェックします。 |
|
|
|
ブロックを示すビットマップの状態に一貫性があるかどうかをデータ・ブロックからチェックします。 |
|
|
|
表領域ビットマップとその表領域に属するエクステントに一貫性があるかどうかをチェックします。 |
|
|
|
|
|
|
|
表領域内のすべてのセグメントに対して |
|
|
|
ビットマップ・ブロックの要約のみをダンプします。 |
SYSTEM
表領域を移行する前に、次の条件を満たす必要があります。 これらの条件は、コールド・バックアップを除くTABLESPACE_MIGRATE_TO_LOCAL
プロシージャによって施行されます。
データベースに、SYSTEM
でないデフォルトの一時表領域があること。
ディクショナリ管理表領域には、ロールバック・セグメントを保持できないこと。
ローカル管理表領域には、最低1つのオンライン・ロールバック・セグメントがあること。自動UNDO管理を使用している場合は、UNDO表領域がオンラインであること。
ロールバック・セグメントまたはUNDO表領域を含む表領域を除くすべての表領域が、読取り専用であること。
データベースのコールド・バックアップがあること。
システムが制限モードであること。
表120-2 DBMS_SPACE_ADMINパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
ASSM表領域に作成されたセグメントを検証します。 |
|
ASSM表領域を検証します。 |
|
セグメントを破損または有効としてマークし、適切なエラーのリカバリを可能にします。 |
|
現在破損としてマークされているセグメントを削除します(領域の再生なし)。 |
|
指定セグメントのセグメント・ヘッダーとエクステント・マップをダンプします。 |
|
セグメントのエクステント・マップの一貫性を検証します。 |
|
適切なDBA範囲(エクステント)を、ビットマップ上で空き領域または使用領域としてマークします。 |
移行が異常終了した表領域内のセグメントの状態を修正します。 |
|
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);
パラメータ
表120-3 ASSM_SEGMENT_VERIFYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セグメントを所有するスキーマ。 |
|
検証するセグメントの名前。 |
|
セグメントのネームスペースは、 |
|
パーティションまたはサブパーティションの名前。 |
|
|
|
|
使用上の注意
このプロシージャを使用するには、SYSDBA
権限が必要です。
相対ファイル番号およびヘッダー・ブロック番号(header_relative_file
パラメータおよびheader_block
パラメータ)は、DBA_SEGMENTS
を問い合せて決定します。
このプロシージャは、sid_ora_
process_ID
.trc
という名前のダンプ・ファイルを、USER_DUMP_DEST
初期化パラメータで指定した場所に出力します。
このプロシージャは、ASSM表領域に作成されたすべてのセグメントを検証します。セグメントごとの検証では、その領域のメタデータ・ブロックの基本的な一貫性チェック、および領域メタデータとセグメント・データ・ブロックの間の一貫性チェックが行われます。
構文
DBMS_SPACE_ADMIN.ASSM_TABLESPACE_VERIFY ( tablespace_name IN VARCHAR2, ts_option IN POSITIVE, segment_option IN POSITIVE DEFAULT NULL);
パラメータ
表120-4 ASSM_TABLESPACE_VERIFYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
検証する表領域の名前。表領域はASSMである必要があります。 |
|
|
|
|
使用上の注意
このプロシージャを使用するには、SYSDBA
権限が必要です。
このプロシージャは、sid_ora_
process_ID
.trc
という名前のダンプ・ファイルを、USER_DUMP_DEST
初期化パラメータで指定した場所に出力します。
このプロシージャは、セグメントを破損または有効としてマークし、適切なエラーのリカバリを可能にします。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);
パラメータ
表120-5 SEGMENT_CORRUPTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セグメントが常駐している表領域名。 |
|
セグメント・ヘッダーの相対ファイル番号。 |
|
セグメント・ヘッダーの相対ファイル番号。 |
|
|
例
次の例では、セグメントを破損としてマークします。
EXECUTE DBMS_SPACE_ADMIN.SEGMENT_CORRUPT('USERS', 4, 33, 3);
次の例では、破損のセグメントを有効としてマークします。
EXECUTE DBMS_SPACE_ADMIN.SEGMENT_CORRUPT('USERS', 4, 33, 4);
このプロシージャは、現在破損としてマークされているセグメントを削除します(領域の再生なし)。これを実行するには、セグメントが一時的としてマークされている必要があります。破損のセグメントを一時的としてマークするには、セグメントでDROP
コマンドを発行します。
構文
DBMS_SPACE_ADMIN.SEGMENT_DROP_CORRUPT ( tablespace_name IN VARCHAR2, header_relative_file IN POSITIVE, header_block IN POSITIVE);
パラメータ
表120-6 SEGMENT_DROP_CORRUPTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セグメントが常駐している表領域名。 |
|
セグメント・ヘッダーの相対ファイル番号。 |
|
セグメント・ヘッダーの相対ファイル番号。 |
使用上の注意
SYSTEM
表領域では使用できません。
セグメント用の領域は解放されないため、TABLESPACE_FIX_BITMAPSプロシージャまたはTABLESPACE_REBUILD_BITMAPSプロシージャを使用して調整する必要があります。
例
EXECUTE DBMS_SPACE_ADMIN.SEGMENT_DROP_CORRUPT('USERS', 4, 33);
このプロシージャは、特定のセグメントのセグメント・ヘッダーおよびビットマップ・ブロックを、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);
パラメータ
表120-7 SEGMENT_DUMPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セグメントが常駐している表領域名。 |
|
セグメント・ヘッダーの相対ファイル番号。 |
|
セグメント・ヘッダーの相対ファイル番号。 |
|
|
使用上の注意
SEGMENT_DUMP_BITMAP_SUMMARY
をdump_option
パラメータとして渡す場合は、少し簡略化されたダンプ(セグメント・ヘッダーおよびビットマップ・ブロックの要約は含むが、各ブロックの空き領域の割合は含まない)を作成できます。
相対ファイル番号およびヘッダー・ブロック番号(header_relative_file
パラメータおよびheader_block
パラメータ)は、DBA_SEGMENTS
を問い合せて決定します。
例
EXECUTE DBMS_SPACE_ADMIN.SEGMENT_DUMP('USERS', 4, 33);
このプロシージャは、セグメントのエクステント・マップと表領域のファイル・ビットマップ間の一貫性をチェックします。
構文
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);
パラメータ
表120-8 SEGMENT_VERIFYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セグメントが常駐している表領域名。 |
|
セグメント・ヘッダーの相対ファイル番号。 |
|
セグメント・ヘッダーの相対ファイル番号。 |
|
チェックの種類: |
使用上の注意
すべてのDBA範囲で誤った領域表現として検出された異常は、DBA範囲、ビットマップ・ブロック、ビットマップ・ブロック範囲、異常情報としてトレース・ファイルに出力されます。レポートされる問題の種類は、空きとみなされない空き領域、空きとみなされた使用領域、および複数のセグメントで使用中とみなされた同一領域です。
例
次の例では、相対ファイル番号4、ブロック番号33のセグメント・ヘッダーを持つセグメントで、エクステント・マップとビットマップが同期していることを検証します。
EXECUTE DBMS_SPACE_ADMIN.SEGMENT_VERIFY('USERS', 4, 33, 1);
注意: DBMS_SPACE_ADMIN パッケージのすべての例では、SCOTT .EMP を含んだ表領域USERS が使用されます。 |
このプロシージャは、適切なDBA範囲(エクステント)を、ビットマップ上で空きまたは使用領域としてマークします。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);
パラメータ
表120-9 TABLESPACE_FIX_BITMAPSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表領域の名前。 |
|
DBA範囲(エクステント)の相対ファイル番号。 |
|
エクステントの開始ブロック番号。 |
|
エクステントの終了ブロック番号(この番号を含める)。 |
|
|
例
次の例では、相対ファイル番号4の、ブロック番号33からブロック番号83までの51ブロックのビットを、ビットマップ内でUSED
としてマークします。
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_FIX_BITMAPS('USERS', 4, 33, 83, 7);
または、オプションに8を指定して、ビットマップ内でビットをFREE
としてマークします。BEGIN
ブロックとEND
ブロックは、エクステント境界内にあり、エクステントの倍数である必要があります。そうでない場合は、エラーが発生します。
このプロシージャを使用して、移行が異常終了した表領域内のセグメントの状態を修正します。ローカルから、またはローカルへの表領域の移行中、セグメントは一時的な状態に置かれます。移行が異常終了した場合は、イベント10906の設定時点でセグメントの状態がSMONによって訂正されます。セグメントがこのような一時的な状態にあるデータベースは、ダウングレードできません。このプロシージャは、このようなセグメントの状態を修正するために使用できます。
構文
DBMS_SPACE_ADMIN.TABLESPACE_FIX_SEGMENT_STATES ( tablespace_name IN VARCHAR);
パラメータ
使用上の注意
このプロシージャをコールしたときは、表領域はオンラインを維持して読込み/書込みを行う必要があります。
例
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_FIX_SEGMENT_STATES('TS1')
このプロシージャは、ローカルに管理される表領域をディクショナリ管理の表領域に移行します。このプロシージャは、SYSTEM
表領域では使用できません。
構文
DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL ( tablespace_name IN VARCHAR2);
パラメータ
使用上の注意
移行中、表領域はオンラインを維持して読込み/書込みを行う必要があります。一時表領域の移行とSYSTEM
表領域の移行はサポートされていません。
例
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL('USERS');
このプロシージャを使用して、ディクショナリ管理形式からローカル管理形式に表領域を移行します。ローカル管理形式に移行した表領域は、ユーザーが管理します。
構文
DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ( tablespace_name IN VARCHAR, unit_size IN POSITIVE DEFAULT NULL, rfno IN INTGER DEFAULT NULL);
パラメータ
表120-12 TABLESPACE_MIGRATE_TO_LOCALプロシージャのパラメータ
パラメータ名 | 説明 |
---|---|
|
移行する表領域の名前。 |
|
表領域の単位サイズ(割当て可能な領域の最小許容チャンク・サイズ)。 |
|
ビットマップ・ブロックが配置されるファイルの相対ファイル番号(オプション)。 |
使用上の注意
SYSTEM
表領域を移行する前に、読込み/書込みモードで使用するディクショナリ管理の表領域をローカル管理に移行してください。SYSTEM
表領域を移行した後で、ディクショナリ管理表領域を読込み/書込みモードに変更することはできません。
関連項目: 『Oracle Database管理者ガイド』 |
移行中、表領域はオンラインを維持して読込み/書込みを行う必要があります。一時表領域は移行できないことに注意してください。
割当て単位はオプションで指定できます。デフォルトは、表領域の全エクステント(使用中または空き)の最大公約数に基づいてシステムで計算されます。この数値は、表領域のMINIMUM EXTENT
に基づきさらに減少します(MINIMUM EXTENT
の指定がない場合は5)。したがって、計算された値が表領域のMINIMUM EXTENT
を超えることはありません。各ファイルの最後にある空きエクステントは、最大公約数の計算には含まれません。指定する単位サイズは、システムで計算された単位サイズの因数にしてください。それ以外の場合はエラー・メッセージが戻ります。
相対ファイル番号のパラメータは、目的のファイルにビットマップを配置するために使用されます。ファイルに領域がなかった場合は、エラーが発行されます。指定するデータファイルは、移行する表領域の一部である必要があります。データ・フローを指定しない場合、初期ビットマップ・ブロックを配置するデータ・フローはシステムで選択されます。初期ビットマップに必要な領域が見つからなかった場合は、エラーになります。
例
次の例は、最小エクステント・サイズ1MBで表領域'TS1'を移行します。
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('TS1', 512, 2);
ビットマップは、相対ファイル番号2のファイルに配置されます。
このプロシージャは、適切なビットマップを再作成します。ビットマップ・ブロックのDBAが指定されていない場合は、指定の表領域のすべてのビットマップが再作成されます。
SYSTEM
表領域では使用できません。
構文
DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_BITMAPS ( tablespace_name IN VARCHAR2, bitmap_relative_file IN POSITIVE DEFAULT NULL, bitmap_block IN POSITIVE DEFAULT NULL);
パラメータ
表120-13 TABLESPACE_REBUILD_BITMAPSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表領域の名前。 |
|
再作成するビットマップ・ブロックの相対ファイル番号。 |
|
再作成するビットマップ・ブロックのブロック番号。 |
使用上の注意
注意: すべてのファイルの再作成のみサポートされます。 |
例
次の例では、USERS
表領域にあるすべてのファイルについて、ビットマップを再作成します。
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_BITMAPS('USERS');
このプロシージャは、指定の表領域に関する割当て制限を再作成します。
構文
DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_QUOTAS ( tablespace_name IN VARCHAR2);
パラメータ
例
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_QUOTAS('USERS');
このプロシージャを使用して、ビットマップを指定先に再配置します。
構文
DBMS_SPACE_ADMIN.TABLESPACE_RELOCATE_BITMAPS ( tablespace_name IN VARCHAR2, filno IN POSITIVE, blkno IN POSITIVE);
パラメータ
表120-15 TABLESPACE_RELOCATE_BITMAPSプロシージャのパラメータ
パラメータ名 | 説明 |
---|---|
|
表領域の名前。 |
|
宛先ファイルの相対ファイル番号。 |
|
宛先データベースのブロック番号。 |
使用上の注意
表領域のディクショナリ管理からローカル管理形式への移行を行うと、ビットマップ・ブロックを含んだSPACE HEADER
セグメントが作成される場合があります。SPACE
HEADER
セグメントは、ユーザー・データとして取り扱われます。ユーザーがファイルのサイズを明示的にSPACE HEADERセグメント以下に変更しようとすると、エラーが発行されます。 制御情報を別の場所に移してからファイルのサイズを変更する場合は、TABLESPACE_RELOCATE_BITMAPS
コマンドを使用します。
このプロシージャは、SYSTEM
表領域では使用できません。
ビットマップの再配置中は、表領域はオンラインを維持して読込み/書込みを行う必要があります。ビットマップの再配置は、移行したローカル管理表領域でのみ実行できます。
例
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_RELOCATE_BITMAPS('TS1', 3, 4);
ビットマップをファイル3、ブロック4に移動します。
注意: ソース・アドレスと宛先アドレスはオーバーラップできません。宛先ブロック番号は単位の境界まで切り下げられます。宛先位置にユーザー・データが存在する場合は、エラーになります。 |
このプロシージャは、表領域内のセグメントについて、ビットマップとエクステント・マップが同期していることを検証します。
構文
DBMS_SPACE_ADMIN.TABLESPACE_VERIFY ( tablespace_name IN VARCHAR2, verify_option IN POSITIVE DEFAULT TABLESPACE_VERIFY_BITMAP);
パラメータ
表120-16 TABLESPACE_VERIFYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表領域の名前。 |
|
|
例
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_VERIFY('USERS');