プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

ALTER TABLESPACE

用途

ALTER TABLESPACE文を使用すると、既存の表領域、1つ以上のデータファイルまたは一時ファイルを変更できます。

この句では、ディクショナリ管理表領域をローカル管理表領域に変換することはできません。変換するには、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』に記載されているDBMS_SPACE_ADMINパッケージを使用してください。


関連項目:

表領域作成の詳細は、『Oracle Database管理者ガイド』および「CREATE TABLESPACE」を参照してください。

前提条件

SYSAUX表領域を変更する場合は、SYSDBAシステム権限が必要です。

ALTER TABLESPACEシステム権限を持っている場合、すべてのALTER TABLESPACE操作を実行できます。MANAGE TABLESPACEシステム権限を持っている場合は、次の操作のみを実行できます。

  • 表領域をオンラインまたはオフラインにする。

  • バックアップを開始または終了する。

  • 表領域を読取り専用または読み書き両用にする。

  • 表領域の状態をPERMANENTまたはTEMPORARYに変更する。

  • 表領域のデフォルト・ロギング・モードをLOGGINGまたはNOLOGGINGに設定する。

  • 表領域で強制ロギング・モードを有効または無効にする。

  • 表領域または表領域データ・ファイルの名前を変更する。

  • UNDO表領域に対するRETENTION GUARANTEEまたはRETENTION NOGUARANTEEを指定する。

  • 表領域のデータ・ファイルのサイズを変更する。

  • 表領域内のデータ・ファイルに対する自動拡張を使用可能または使用禁止にする。

  • 一時表領域または一時ファイルによって使用される領域の大きさを縮小する。

表領域を読取り専用にする場合、次の条件が満たされている必要があります。

  • 表領域がオンラインになっている。

  • 表領域にアクティブなロールバック・セグメントがない。SYSTEM表領域にはSYSTEMロールバック・セグメントがあるため、読取り専用にはできません。また、読取り専用表領域のロールバック・セグメントにはアクセスできないため、ロールバック・セグメントを削除してから、表領域を読取り専用にすることをお薦めします。

  • 表領域がオープン・バックアップに使用されていない。バックアップの終わりに表領域内のすべてのデータファイルのヘッダー・ファイルが更新されるためです。

これらの条件を満たすために、制限モードでこの機能を実行すると有効です。制限モードでは、RESTRICTED SESSIONシステム権限を持つユーザーのみがログインできます。

セマンティクス

tablespace

変更する表領域の名前を指定します。

表領域の変更の制限事項: 表領域の変更には、次の制限事項があります。

  • tablespaceがUNDO表領域の場合、この文ではADD DATAFILERENAME DATAFILERENAME TO(表領域の名前の変更)、DATAFILE ... ONLINEDATAFILE ... OFFLINEBEGIN BACKUPおよびEND BACKUPのみが指定可能です。

  • SYSTEM表領域を、読取り専用または一時表領域にしたり、オフラインにすることはできません。

  • ローカル管理の一時表領域に対してこの文で指定できるのは、ADD句のみです。


関連項目:

自動UNDO管理およびUNDO表領域の詳細は、『Oracle Database管理者ガイド』を参照してください。

DEFAULT句

この句を使用すると、表領域の新しいデフォルト・パラメータを指定できます。新しいデフォルト・パラメータは、後で表領域に作成されるオブジェクトに適用されます。

table_compressionおよびstorage_clause句は、CREATE TABLESPACEおよびALTER TABLESPACEと同じセマンティクスを持ちます。これらの句の詳細は、CREATE TABLESPACE「DEFAULT句」を参照してください。

MINIMUM EXTENT

この句は、永続的なディクショナリ管理表領域に対してのみ有効です。MINIMUM EXTENT句を指定すると、表領域内のすべての使用済エクステントまたは未使用エクステントの大きさが、size_clauseで指定したサイズ以上であること、およびその倍数であることが保証され、表領域における空き領域の断片化を制御できます。

MINIMUM EXTENTの制限事項: この句は、ローカル管理の表領域またはディクショナリ管理の一時表領域に対して指定できません。


関連項目:

この句の詳細は、size_clauseを参照してください。MINIMUM EXTENTを使用した領域の断片化の制御の詳細は、『Oracle Database管理者ガイド』を参照してください。

RESIZE句

この句が有効であるのは、bigfile表領域に対してのみです。1つのデータファイルのサイズを指定のサイズまで拡張または縮小できます。KMGまたはTを使用して、それぞれKB、MB、GBまたはTB単位で指定することもできます。

smallfile表領域に新しく追加されたデータファイルまたは一時ファイルのサイズを変更するには、ALTER DATABASE ... autoextend_clauseを使用します(database_file_clausesを参照)。


関連項目:

bigfile表領域については、「BIGFILE | SMALLFILE」を参照してください。

COALESCE

この句を使用すると、表領域内の各データファイルで、連続する未使用エクステントをすべて結合し、連続するより大きいエクステントを作成します。

SHRINK SPACE句

この句が有効であるのは、一時表領域に対してのみです。表領域に使用される領域の大きさを縮小できます。任意指定のKEEP句では、size_clauseで表領域の縮小後サイズの下限を定義します。これは、自動拡張可能な表領域のMAXSIZEとは逆の機能です。KEEP句を省略した場合は、表領域は他の記憶域属性が満たされることを条件として可能なかぎり縮小されます。

RENAME句

この句を指定すると、tablespaceの名前を変更できます。この句は、tablespaceおよびそのすべてのデータファイルがオンラインで、COMPATIBLEパラメータが10.0.0以上に設定されている場合にのみ有効です。名前の変更は、永続表領域および一時表領域の両方に対して実行できます。

tablespaceが読取り専用の場合、データファイルのヘッダーは更新されず、新しい名前は反映されません。アラート・ログに、データファイルのヘッダーが更新されなかったことが記録されます。


注意:

バックアップからリストアしたデータファイルを使用して制御ファイルを再作成する場合、データファイルのヘッダーに古い表領域の名前が反映されていると、再作成された制御ファイルにも古い表領域の名前が反映されます。ただし、データベースが完全にリカバリされた後は、制御ファイルに新しい名前が反映されます。

tablespaceが、単一インスタンス・データベース、またはOracle Real Application Clusters(Oracle RAC)環境のインスタンスに対するUNDO表領域として指定されており、データベースの起動にサーバー・パラメータ・ファイルが使用されている場合、そのサーバー・パラメータ・ファイル(spfile)で、インスタンスに対するUNDO_TABLESPACEパラメータの値は、新しい表領域の名前を反映するように変更されます。単一インスタンス・データベースで、spfileのかわりにパラメータ・ファイル(pfile)が使用されている場合、データベース管理者にpfile内の値を手動で変更することを推奨するメッセージがアラート・ログに書き込まれます。


注意:

RENAME句は、実行中のインスタンスのUNDO_TABLESPACEパラメータの値を変更しません。これはUNDO表領域の機能に影響しませんが、次の文を発行してインスタンスの実行中にUNDO_TABLESPACEの値を新しい表領域名に手動で変更することをお薦めします。
ALTER SYSTEM SET UNDO_TABLESPACE = new_tablespace_name SCOPE = MEMORY;

この文は一度だけ発行する必要があります。UNDO_TABLESPACEパラメータがpfileまたはspfileの新しい表領域名に設定されている場合、次にインスタンスを再起動するときにパラメータが正しく設定されます。


表領域の名前の変更の制限事項: SYSTEM表領域またはSYSAUX表領域の名前は変更できません。

BACKUP句

この句を使用すると、表領域のすべてのデータファイルをオンライン(ホット)・バックアップ・モードにしたり、このモードから戻すことができます。


関連項目:

  • メディア・リカバリなしでデータベースを再起動する場合の詳細は、『Oracle Database管理者ガイド』を参照してください。

  • データベース内のすべてのデータファイルに対するオンライン・バックアップ・モードの設定または解除の詳細は、「ALTER DATABASE」の「BACKUP句」を参照してください。

  • 個々のデータファイルをオンライン・バックアップ・モードから解除する場合の詳細は、「ALTER DATABASE」のalter_datafile_clauseを参照してください。


BEGIN BACKUP

BEGIN BACKUPを指定すると、表領域を構成するデータファイルのオープン・バックアップを実行することを示すことができます。この句を指定することによって、ユーザーがこの表領域にアクセスできなくなることはありません。オープン・バックアップを開始する前に、この句を指定してください。

表領域のバックアップ開始の制限事項: 表領域のバックアップ開始には、次の制限事項があります。

  • この句は、読取り専用の表領域またはローカル管理の一時表領域に対して指定できません。

  • バックアップ中は、表領域のオフラインへの正常な切替え、インスタンスの停止または表領域の別のバックアップ処理の開始は実行できません。

END BACKUP

END BACKUPを指定すると、表領域のオンライン・バックアップが完了したことを示すことができます。オンライン・バックアップの完了後、できるだけ早くこの句を指定してください。インスタンスに障害またはSHUTDOWN ABORTが発生した場合、次のインスタンス起動時にメディア・リカバリ(必要に応じて、アーカイブREDOログも)が必要であるとみなされます。

表領域のバックアップ終了の制限事項: この句は、読取り専用表領域に対して使用できません。

datafile_tempfile_clauses

datafile_tempfile_clausesを使用すると、データファイルまたは一時ファイルを追加および変更できます。

ADD句

ADDを指定すると、file_specificationによって指定されたデータファイルまたは一時ファイルを表領域に追加できます。オペレーティング・システムのファイル・システム内の標準データファイルと一時ファイル、またはOracle Automatic Storage Managementディスク・グループのファイルを指定するには、file_specificationdatafile_tempfile_spec書式(file_specificationを参照)を使用します。

この句は、ローカル管理の一時表領域に対して、どんな場合でも指定できる唯一の句です。

file_specificationを指定しないと、AUTOEXTENDが有効になった100MBのOracle管理ファイルが作成されます。

データファイルまたは一時ファイルを、オンラインのローカル管理表領域、またはオンラインまたはオフラインのディクショナリ管理表領域に追加できます。なお、そのデータファイルが別のデータベースで使用中でないことを確認してください。

データファイルおよび一時ファイルの追加における制限事項: データファイルまたは一時ファイルを1つしか含まない表領域など、bigfile(単一ファイル)表領域にはこの句を指定できません。


注意:

オペレーティング・システムによっては、一時ファイルのブロックが実際にアクセスされるまで、一時ファイル用の領域が割り当てられない場合があります。領域の割当ての遅延のため、一時ファイルの作成およびサイズ変更が速くなります。ただし、後で一時ファイルが使用されるときに、十分なディスク領域を使用可能にする必要があります。問題を回避するには、一時ファイルの作成またはサイズ変更の前に、ディスクの空き領域が、新しく作成する一時ファイルまたはサイズ変更後の一時ファイルのサイズよりも大きいことを確認してください。ディスク領域に余裕を持たせておくと、関連のない操作による、予期されるディスク使用量の増加にも対応できます。その後で、作成またはサイズ変更操作を実行してください。

DROP句

DROPを指定すると、filenamefile_numberによって指定された空のデータファイルまたは一時ファイルを表領域から削除できます。この句は、データファイルまたは一時ファイルをデータ・ディクショナリから削除し、オペレーティング・システムから削除します。この句を指定するときには、データベースがオープンしている必要があります。

ALTER TABLESPACE ... DROP TEMPFILE文は、ALTER DATABASE TEMPFILE ... DROP INCLUDING DATAFILESを指定することと同じです。

ファイル削除の制限事項: データファイルまたは一時ファイルを削除するには、ファイルが次の条件を満たしている必要があります。

  • 空であること。

  • 表領域内で最初に作成されたファイルではないこと。この場合、かわりに表領域が削除されます。

  • ローカル管理されるディクショナリから移行された読取り専用表領域でないこと。他のすべての読取り専用表領域からのデータファイルの削除はサポートされています。

  • オフラインでないこと。


関連項目:


SHRINK TEMPFILE句

この句が有効であるのは、一時表領域を変更する場合のみです。指定した一時ファイルに使用される領域の大きさを縮小できます。任意指定のKEEP句では、size_clauseで一時ファイルの縮小後サイズの下限を定義します。これは、自動拡張可能な表領域のMAXSIZEとは逆の機能です。KEEP句を省略した場合は、一時ファイルは他の記憶域属性が満たされることを条件として可能なかぎり縮小されます。

RENAME DATAFILE句

RENAME DATAFILEを指定すると、表領域の1つ以上のデータファイルの名前を変更できます。データベースをオープンしておくこと、および名前の変更前に表領域をオフラインにすることが必要です。それぞれのfilenameには、ご使用のオペレーティング・システムのファイル名の表記規則に従って、データファイル名を完全に指定してください。

この句では、表領域を古いファイルではなく新しいファイルに対応付けます。オペレーティング・システムのファイル名は実際には変更されません。このため、オペレーティング・システム上でこのファイル名を変更する必要があります。

ONLINE | OFFLINE句

これらの句を使用すると、表領域のすべてのデータファイルまたは一時ファイルを、オフラインまたはオンラインにできます。これらの句は、表領域のONLINEまたはOFFLINE状態には影響しません。

データベースは、マウントされている必要があります。tablespaceSYSTEM、UNDO表領域、またはデフォルトの一時表領域の場合、データベースをオープンしないでおく必要があります。

tablespace_logging_clauses

この句を使用すると、表領域のロギング特性を設定または変更できます。

logging_clause

LOGGINGを指定すると、表領域内のすべての表、索引およびパーティションのロギング属性を指定できます。表レベル、索引レベルおよびパーティション・レベルでのロギング指定によって、表領域レベルのロギング属性を上書きできます。

既存の表領域のロギング属性をALTER TABLESPACE文によって変更した場合、この文の実行に作成されたすべての表、索引およびパーティションに、新しいデフォルトのロギング属性(これは後で上書きもできます)が適用されます。既存のオブジェクトのロギング属性は変更されません。

FORCE LOGGINGモードの表領域がある場合、この文でNOLOGGINGを指定すると、表領域のデフォルト・ロギング・モードをNOLOGGINGに設定できます。ただし、この設定によって表領域のFORCE LOGGINGモードは解除されません。

[NO] FORCE LOGGING

この句を使用すると、表領域で強制ロギング・モードを有効または無効にできます。データベースをオープンし、READ WRITEモードにしておく必要があります。この設定により、表領域のデフォルトLOGGINGモードまたはNOLOGGINGモードは変更されません。

強制ロギング・モードの制限事項: FORCE LOGGINGは、UNDO表領域および一時表領域に対して指定できません。


関連項目:

FORCE LOGGINGモードの使用の詳細は、『Oracle Database管理者ガイド』および「表領域のロギング属性の変更例:」を参照してください。

tablespace_group_clause

この句は、ローカル管理の一時表領域に対してのみ有効です。この句を使用すると、tablespace_group_name表領域グループに対してtablespaceを追加または削除できます。

  • グループ名を指定すると、tablespaceがその表領域グループのメンバーであることを示すことができます。tablespace_group_nameが存在しない場合、表領域を変更して表領域グループのメンバーにすると、その表領域グループが暗黙的に作成されます。

  • 空の文字列(' ')を指定すると、tablespace_group_name表領域グループからtablespaceを削除できます。

表領域グループの制限事項: 表領域グループは、永続表領域またはディクショナリ管理の一時表領域には指定できません。


関連項目:

表領域グループの詳細は、『Oracle Database管理者ガイド』および「表領域グループの割当て例:」を参照してください。

tablespace_state_clauses

この句を使用すると、表領域の状態を設定または変更できます。

ONLINE | OFFLINE

ONLINEを指定すると、表領域をオンラインにできます。OFFLINEを指定すると、表領域をオフラインにし、そのセグメントへの後続のアクセスを禁止できます。表領域をオフラインにすると、そのすべてのデータファイルもオフラインになります。


提案:

表領域を長期間オフラインにする前に、デフォルト表領域または一時表領域としてその表領域が割り当てられているユーザーに対して、表領域の割当てを変更することを検討します。表領域をオフラインにしている間は、これらのユーザーは、その表領域内でオブジェクトに対して領域を割り当てたり、領域をソートすることはできません。ユーザーへの表領域の割当ての詳細は、「ALTER USER」を参照してください。

表領域をオフラインにする場合の制限事項: 一時表領域はオフラインにできません。

OFFLINE NORMAL NORMALを指定すると、システム・グローバル領域(SGA)以外にある表領域のすべてのデータファイルにあるすべてのブロックをフラッシュできます。データファイルをオンラインに戻す前に、表領域のメディア・リカバリを行う必要はありません。これはデフォルトです。

OFFLINE TEMPORARY TEMPORARYを指定すると、Oracle Databaseは表領域内のすべてのオンライン・データファイルに対してチェックポイントを実行しますが、すべてのファイルに対して書込みを実行できるかどうかは保証しません。この文の発行時にオフラインであったファイルは、表領域をオンラインに戻す前に、メディア・リカバリを行う必要があります。

OFFLINE IMMEDIATE IMMEDIATEを指定した場合は、表領域のファイルが使用可能であることは保証されず、チェックポイントも実行されません。表領域をオンラインに戻す前に、メディア・リカバリを行う必要があります。


注意:

ALTER TABLESPACE ... OFFLINEに対するFOR RECOVER設定は、非推奨になっています。この構文は、下位互換性を保つためにのみサポートされています。ただし、表領域のリカバリにはトランスポータブル表領域機能を使用することをお薦めします。


関連項目:

メディア・リカバリを実行するトランスポータブル表領域の使用の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

READ ONLY | READ WRITE

READ ONLYを指定すると、表領域を読取り専用遷移モードに設定できます。この状態では、既存のトランザクションは完了(コミットまたはロールバック)できますが、表領域内のブロックを変更した既存のトランザクションをロールバックすること以外は、その表領域に対してさらにDML操作を行うことはできません。SYSAUXSYSTEMまたは一時表領域は、READ ONLYに設定できません。

表領域が読取り専用の場合は、そのファイルを読取り専用メディアにコピーできます。その場合、SQL文のALTER DATABASE ... RENAMEを使用して、新しいファイル位置を示すように制御ファイル内のデータファイルの名前を変更する必要があります。


関連項目:

  • 読取り専用の表領域の詳細は、『Oracle Database概要』を参照してください。

  • 「ALTER DATABASE」


READ WRITEを指定すると、読取り専用に指定されている表領域に対して書込み操作を実行できるようになります。

PERMANENT | TEMPORARY

PERMANENTを指定すると、一時表領域を永続表領域に変換できます。永続表領域とは、永続的なデータベース・オブジェクトを格納できる場所です。表領域を作成するときのデフォルトです。

TEMPORARYを指定すると、永続表領域を一時表領域に変換できます。一時表領域とは、永続的なデータベース・オブジェクトを格納できない表領域です。一時表領域の中のオブジェクトはセッション中のみ保持されます。

一時表領域の制限事項: 一時表領域には、次の制限事項があります。

  • SYSAUX表領域には、TEMPORARYを指定できません。

  • tablespaceを標準的なブロック・サイズで作成しなかった場合、永続表領域を一時表領域に変換できません。

  • FORCE LOGGINGモードでは、表領域に対してTEMPORARYを指定できません。

autoextend_clause

この句は、bigfile(単一ファイル)表領域に対してのみ有効です。この句を使用すると、表領域内の単一のデータファイルに対して自動拡張を使用可能または使用禁止にできます。smallfile表領域に新しく追加されたデータファイルまたは一時ファイルの自動拡張を使用可能または使用禁止にするには、ALTER DATABASE文でautoextend_clauseを使用します(database_file_clausesを参照)。


関連項目:

  • bigfile(単一ファイル)表領域については、『Oracle Database管理者ガイド』を参照してください。

  • autoextend_clauseの詳細は、file_specificationを参照してください。


flashback_mode_clause

この句を使用すると、後続のFLASHBACK DATABASE操作でこの表領域を使用するかどうかを指定できます。

  • FLASHBACKモードをオンにするには、データベースはマウント済で、クローズ状態である必要があります。

  • FLASHBACKモードをオフにするには、データベースはマウント済(READ WRITEのオープン状態またはクローズ状態)である必要があります。

この句は一時表領域では無効です。

この句の詳細は、「CREATE TABLESPACE」を参照してください。


関連項目:

データベースのフラッシュバックの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

tablespace_retention_clause

この句のセマンティクスは、CREATE TABLESPACE文およびALTER TABLESPACE文で同じです。「CREATE TABLESPACE」のtablespace_retention_clauseを参照してください。

表領域のバックアップ例: 次の文は、バックアップの開始をデータベースに通知します。

ALTER TABLESPACE tbs_01 
    BEGIN BACKUP; 

次の文は、バックアップが終了したことをデータベースに通知します。

ALTER TABLESPACE tbs_01 
   END BACKUP; 

表領域の移動および名前の変更例: 次の例は、tbs_02表領域(「表領域の自動拡張を使用可能にする場合の例:」で作成)に関連付けられたデータファイルを、diskb:tbs_f5.dbfからdiska:tbs_f5.dbfに移動して、名前を変更します。

  1. OFFLINE句を指定したALTER TABLESPACE文を使用して、この表領域をオフラインにします。

    ALTER TABLESPACE tbs_02 OFFLINE NORMAL; 
    
  2. オペレーティング・システムのコマンドを使用して、このファイルをdiskb:tbs_f5.dbfからdiska:tbs_f5.dbfにコピーします。

  3. RENAME DATAFILE句を指定したALTER TABLESPACE文を使用して、このデータファイルの名前を変更します。

    ALTER TABLESPACE tbs_02
      RENAME DATAFILE 'diskb:tbs_f5.dbf'
      TO              'diska:tbs_f5.dbf'; 
    
  4. ONLINE句を指定したALTER TABLESPACE文を使用して、この表領域をオンラインに戻します。

    ALTER TABLESPACE tbs_02 ONLINE;
    

データファイルおよび一時ファイルの追加例と削除例: 次の文は、表領域にデータファイルを追加します。さらに多くの領域が必要な場合、10KBの新しいエクステントが最大100KBまで追加されます。

ALTER TABLESPACE tbs_03 
    ADD DATAFILE 'tbs_f04.dbf'
    SIZE 100K
    AUTOEXTEND ON
    NEXT 10K
    MAXSIZE 100K;

次の文は、空のデータファイルを削除します。

ALTER TABLESPACE tbs_03
    DROP DATAFILE 'tbs_f04.dbf';

次の文は、「一時表領域の作成例:」で作成された一時表領域に一時ファイルを追加してから削除します。

ALTER TABLESPACE temp_demo ADD TEMPFILE 'temp05.dbf' SIZE 5 AUTOEXTEND ON;

ALTER TABLESPACE temp_demo DROP TEMPFILE 'temp05.dbf';

一時表領域の領域の管理例: 次の文では、「一時表領域の作成例:」で作成した一時表領域の領域を、SHRINK SPACE句を使用して管理します。KEEP句が省略されているので、表領域の大きさは、表領域の他の記憶域属性を満たしていることを条件として可能なかぎり縮小されます。

ALTER TABLESPACE temp_demo SHRINK SPACE;

Oracle Managed Filesのデータファイルの追加例: 次の例は、Oracle Managed Filesのデータファイルをomf_ts1表領域に追加します(この表領域の作成の詳細は、「Oracle Managed Filesの作成例:」を参照してください)。新しいデータファイルは100MBで、最大サイズが制限なしで自動拡張されます。

ALTER TABLESPACE omf_ts1 ADD DATAFILE; 

表領域のロギング属性の変更例: 次の例は、表領域のデフォルトのロギング属性をNOLOGGINGに変更します。

ALTER TABLESPACE tbs_03 NOLOGGING;

表領域のロギング属性を変更した場合でも、その表領域内の既存のスキーマ・オブジェクトのロギング属性には影響しません。表レベル、索引レベルおよびパーティション・レベルでのロギング指定によって、表領域レベルのロギング属性を上書きできます。

UNDOデータの保持の変更例: 次の文は、undots1表領域のUNDOデータの保持を、通常のUNDOデータの動作に変更します。

ALTER TABLESPACE undots1
  RETENTION NOGUARANTEE;

次の文は、undots1表領域のUNDOデータの保持を、期限が切れていないUNDOデータを保持する動作に変更します。

ALTER TABLESPACE undots1
  RETENTION GUARANTEE;