ヘッダーをスキップ

Oracle Database 管理者ガイド
11gリリース1(11.1)

E05760-03
目次
目次
索引
索引

戻る 次へ

12 表領域の管理

この章の内容は次のとおりです。

表領域を管理するためのガイドライン

Oracle Databaseの表領域を使用して作業する前に、次の各項で説明するガイドラインについて理解してください。

複数の表領域の使用

データベース操作を実行する際に複数の表領域を使用すると、システムの柔軟性が向上します。データベースに複数の表領域があるときには、次のことが可能です。

一部のオペレーティング・システムでは、同時にオープン可能なファイルの数に制限が設けられています。このような制限によって、同時にオンライン化可能な表領域の数に影響が出ることがあります。そのため、使用しているオペレーティング・システムの制限を超えないように、表領域を効率よく計画する必要があります。表領域はデータベースの要件を満たすために必要な数だけ作成し、構成するファイル数もできるかぎり少なくなるようにしてください。表領域のサイズを大きくする必要がある場合は、小さいデータファイルを多数作成するのではなく、1つまたは2つの大きなデータファイルを追加するか、または自動拡張を使用可能にしてデータファイルを作成します。

これらの要素を考慮に入れてデータを再検討し、データベース設計に必要となる表領域の数を決定してください。

ユーザーに対する表領域割当て制限の割当て

表、クラスタ、マテリアライズド・ビュー、索引およびその他のオブジェクトを作成しようとするユーザーには、そのオブジェクトを作成するための権限と、そのオブジェクトのセグメントを格納する表領域の割当て制限(領域の許容または制限)を付与します。

関連項目:

ユーザーの作成方法、および表領域割当て制限の割当て方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。 

表領域の作成

表領域を作成する前に、それを格納するデータベースを作成する必要があります。どのデータベースでも、重要な表領域はSYSTEM表領域です。この表領域には、データ・ディクショナリやシステム・ロールバック・セグメントなど、データベース・サーバー機能の基本となる情報が格納されます。SYSTEM表領域は、データベース作成時に最初に作成される表領域です。他の表領域と同様に管理されますが、より高いレベルの権限が必要で、一部の機能は制限されます。たとえば、SYSTEM表領域の名前変更、削除、オフライン化は実行できません。

SYSAUX表領域は、SYSTEM表領域の補助表領域として機能し、データベース作成時に常に作成されます。この補助表領域には、様々なOracle製品および機能で使用される情報とスキーマが格納されるため、各製品で独自の表領域を持つ必要がなくなります。SYSTEM表領域と同様に、SYSAUX表領域を管理するためには他の表領域より高いレベルのセキュリティが必要で、この表領域の名前変更や削除はできません。SYSAUX表領域の管理については、「SYSAUX表領域の管理」を参照してください。

表領域を作成する手順はオペレーティング・システムによって異なりますが、必ず最初に、オペレーティング・システムを使用して、データファイルが割り当てられるディレクトリ構造を作成する必要があります。ほとんどのオペレーティング・システムでは、新しい表領域を作成するとき、またはデータファイルを加えて既存の表領域を変更するときに、データファイルのサイズと完全なファイル名を指定します。新しい表領域を作成するとき、または既存の表領域を変更するときは、いずれの場合も、データベースは、指定されたとおりにデータファイルを自動的に割り当てて、フォーマットします。

新しい表領域を作成するには、SQL文CREATE TABLESPACEまたはCREATE TEMPORARY TABLESPACEを使用します。表領域を作成するには、CREATE TABLESPACEシステム権限が必要です。後で、ALTER TABLESPACEまたはALTER DATABASE文を使用して、この表領域を変更できます。そのためには、ALTER TABLESPACEまたはALTER DATABASEシステム権限が必要です。

また、CREATE UNDO TABLESPACE文を使用して、UNDO表領域と呼ばれる特別なタイプの表領域も作成できます。この表領域は、UNDOレコードを格納するために特別に設計されています。UNDOレコードとはデータベースが生成するレコードで、リカバリや読込み一貫性のために、またはROLLBACK文の要求によって、データベースの変更をロールバックまたは取り消す際に使用されます。UNDO表領域の作成と管理については、第14章「UNDOの管理」を参照してください。

永続表領域および一時表領域の作成とメンテナンスについては、次の各項で説明します。

ローカル管理表領域

ローカル管理表領域では、その表領域内のすべてのエクステント情報がビットマップを使用して追跡されるため、次のような利点があります。

SYSTEM表領域も含めて、すべての表領域をローカルに管理できます。

DBMS_SPACE_ADMINパッケージによって、ローカル管理表領域のメンテナンス手順が提供されます。

関連項目:

 

ローカル管理表領域の作成

ローカル管理表領域を作成するには、CREATE TABLESPACE文のEXTENT MANAGEMENT句にLOCALを指定します。これは新しい永続表領域に対するデフォルトですが、AUTOALLOCATE句またはUNIFORM句を指定する場合は、EXTENT MANAGEMENT LOCAL句を指定する必要があります。AUTOALLOCATE句(デフォルト)を指定してデータベースでエクステントを自動的に管理するか、または表領域を特定サイズ(UNIFORM)の均一エクステントで管理するかを指定できます。

様々なサイズのオブジェクトが表領域に含まれ、異なるエクステント・サイズの多数のエクステントが必要と予測される場合は、AUTOALLOCATEを選択してください。領域の割当てと割当て解除を厳密に制御しなくてもよい場合は、AUTOALLOCATEを選択すると表領域の管理作業が簡素化されます。この設定では、ある程度の領域が無駄になるという短所もありますが、ほとんどの場合、Oracle Databaseによって領域が管理されるという利点のほうが重要です。

未使用領域の厳密な制御が必要で、オブジェクトに割り当てられる領域、エクステントの数とサイズを正確に予測できる場合は、UNIFORMを選択してください。この設定によって、表領域から使用できない領域がなくなります。

エクステント管理のタイプを明示的に指定しない場合は、Oracle Databaseによってエクステント管理が次のように判断されます。

次の文は、ローカル管理表領域lmtbsbを作成し、AUTOALLOCATEを指定しています。

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
    EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

AUTOALLOCATEを指定すると、表領域はシステム管理になり、最小エクステント・サイズは64KBとなります。

AUTOALLOCATEのかわりにUNIFORMを指定すると、表領域は均一サイズのエクステントで管理されます。このサイズは、UNIFORMSIZE句で指定できます。SIZEを指定しないと、デフォルト・サイズは1MBになります。

次の例では、128KBの均一エクステントの表領域を作成しています(ブロック・サイズが2KBのデータベースでは、各エクステントは64個のデータベース・ブロックに相当します)。128KBの各エクステントは、このファイルのエクステント・ビットマップでは1ビットで表されます。

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

EXTENT MANAGEMENT LOCALを明示的に指定する場合は、DEFAULTの記憶域句、MINIMUM EXTENTまたはTEMPORARYを指定できません。ローカル管理の一時表領域を作成するには、CREATE TEMPORARY TABLESPACE文を使用します。


注意:

ローカル管理表領域にデータファイルを割り当てる場合は、領域管理に使用されるメタデータ(エクステント・ビットマップまたは領域ヘッダー・セグメント)用の領域を考慮する必要があります。これはユーザー領域の一部です。たとえば、エクステント管理句にUNIFORMを指定するときに、SIZEパラメータを指定しないと、デフォルトのエクステント・サイズは1MBになります。この場合、データファイルには1MBより大きいサイズ(少なくとも1ブロックとビットマップ用の領域分は大きいサイズ)を指定する必要があります。 


ローカル管理表領域のセグメント領域管理の指定

ローカル管理表領域では、Oracle Databaseでセグメント領域の管理に使用できる方法は、自動と手動の2つです。手動セグメント領域管理では、「空きリスト」と呼ばれるリンクされたリストを使用してセグメント内の空き領域を管理します。一方、自動セグメント領域管理では、ビットマップを使用します。自動セグメント領域管理の方がより効率的な方法で、新しい永続ローカル管理表領域すべてのデフォルトです。

自動セグメント領域管理では、手動セグメント領域管理に比べて領域の使用効率が向上します。また、ユーザー数やインスタンス数の増加につれて拡張されるという点で自己チューニング型です。Oracle Real Application Clusters環境の場合、自動セグメント領域管理ではインスタンスに対する領域の動的アフィニティに対処できます。さらに、多くの標準的な処理負荷の場合、自動セグメント領域管理を使用したアプリケーションのパフォーマンスは、手動セグメント領域管理を使用して適切にチューニングされたアプリケーションよりも向上します。

自動セグメント領域管理は新しい永続ローカル管理表領域のデフォルトですが、SEGMENT SPACE MANAGEMENT AUTO句を使用して明示的に使用可能にできます。

次の文は、自動セグメント領域管理を行うlmtbsb表領域を作成します。

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
    EXTENT MANAGEMENT LOCAL 
    SEGMENT SPACE MANAGEMENT AUTO;

SEGMENT SPACE MANAGEMENT MANUAL句を指定すると、自動セグメント領域管理を使用禁止にできます。

表領域の作成時に指定するセグメント領域管理方法は、その後表領域に作成されたすべてのセグメントに対して適用されます。表領域のセグメント領域管理モードは変更できません。


注意:

  • エクステント管理をLOCAL UNIFORMに設定した場合は、各エクステントに最低5個のデータベース・ブロックがあることを確認してください。

  • エクステント管理をLOCAL AUTOALLOCATEに設定し、データベース・ブロックのサイズが16KB以上の場合、Oracleは、5個のブロックの最小サイズを64KBに切り上げた複数のエクステントを作成してセグメント領域を管理します。

 

自動セグメント領域管理を使用するローカル管理表領域は、単一ファイル表領域、つまり、大型ファイル表領域(「大型ファイル表領域」を参照)としても作成できます。

大型ファイル表領域

大型ファイル表領域は、単一で非常に大きい(最大40億ブロック)データファイルを持つ表領域です。これに対して、従来の小型ファイル表領域には複数のデータファイルを格納できますが、各データファイルは大きくありません。大型ファイル表領域の利点は、次のとおりです。

大型ファイル表領域は、自動セグメント領域管理を指定したローカル管理表領域でのみサポートされます。ただし、ローカル管理のUNDO表領域、一時表領域およびSYSTEM表領域の3つは例外です。


注意:

  • 大型ファイル表領域は、ストライプ化やRAID、および動的に拡張可能な論理ボリュームをサポートする、自動ストレージ管理(ASM)などの論理ボリューム・マネージャとともに使用することを目的にしています。

  • パラレル問合せ実行およびRecovery Managerのバックアップ・パラレル化で問題が生じる可能性があるため、ストライプ化をサポートしていないシステムには大型ファイル表領域を作成しないでください。

  • 大規模なファイル・サイズをサポートしていないプラットフォームで大型ファイル表領域を使用することはお薦めしません。表領域の容量が制限される場合があります。サポートされている最大ファイル・サイズについては、使用しているオペレーティング・システム固有のマニュアルを参照してください。

 

大型ファイル表領域の作成

大型ファイル表領域を作成するには、CREATE TABLESPACE文のBIGFILEキーワード(CREATE BIGFILE TABLESPACE ...)を指定します。Oracle Databaseは、自動セグメント領域管理を指定したローカル管理表領域を自動的に作成します。この文には、EXTENT MANAGEMENT LOCALおよびSEGMENT SPACE MANAGEMENT AUTOを必要に応じて指定できます。ただし、EXTENT MANAGEMENT DICTIONARYまたはSEGMENT SPACE MANAGEMENT MANUALを指定すると、データベースはエラーを返します。この文の残りの構文はCREATE TABLESPACE文と同じですが、指定できるのは1つのデータファイルのみです。次に例を示します。

CREATE BIGFILE TABLESPACE bigtbs 
    DATAFILE '/u02/oracle/data/bigtbs01.dbf' SIZE 50G
...

SIZEは、キロバイト(KB)、メガバイト(MB)、ギガバイト(GB)またはテラバイト(TB)で指定できます。

データベース作成時にデフォルトの表領域タイプをBIGFILEに設定している場合は、CREATE TABLESPACE文にBIGFILEキーワードを指定する必要はありません。この場合、大型ファイル表領域はデフォルトで作成されます。

データベース作成時にデフォルトの表領域タイプをBIGFILEに設定しておきながら、従来の表領域(小型ファイル)を作成する場合は、CREATE SMALLFILE TABLESPACE文を指定すると、デフォルトの表領域タイプよりも作成する表領域が優先されます。

関連項目:

「データベース作成時の大型ファイル表領域のサポート」 

大型ファイル表領域の識別

次のビューには、表領域を大型ファイル表領域として識別するBIGFILE列が含まれています。

大型ファイル表領域は、その単一データファイルの相対ファイル番号によっても識別できます。その番号は、ほとんどのプラットフォームで1024ですが、OS/390では4096です。

暗号化された表領域

永続表領域を暗号化して機密データを保護できます。表領域の暗号化はアプリケーションに対して完全に透過的であるため、アプリケーションの変更は不要です。暗号化された表領域は、主に、データベースを介さない手段による不当なアクセスからデータを保護します。たとえば、暗号化された表領域を、Oracleデータベース間で移動したり、保管のために外部の設備に移動するなどの目的で、バックアップ・メディアに書き込む場合、それらの表領域は暗号化されたままです。また、暗号化された表領域は、ユーザーがデータベースのセキュリティ機能を迂回してオペレーティング・システムのファイル・システムから直接データベース・ファイルにアクセスしようとした場合に、そのユーザーからデータを保護します。

表領域の暗号化によって、すべてのセキュリティ問題に対処できるわけではありません。たとえば、データベース内からのアクセスは制御できません。暗号化された表領域に格納されているオブジェクトに対する権限が付与されたユーザーは、追加のパスワードやキーを指定せずにそれらのオブジェクトにアクセスできます。

表領域を暗号化すると、すべての表領域ブロックが暗号化されます。暗号化は、表、クラスタ、索引、LOB(BASICFILESECUREFILE)、表パーティション、索引パーティションなどを含むすべてのセグメント・タイプに対してサポートされています。


注意:

暗号化された表領域に格納されているSECUREFILE LOBに対してLOB暗号化を使用する必要はありません。 


最大限のセキュリティを確保するために、暗号化された表領域のデータは、UNDO表領域、REDOログおよび一時表領域に書き込まれる場合は自動的に暗号化されます。暗号化されたUNDO表領域や一時表領域を明示的に作成する必要はありません。実際、それらの表領域タイプに暗号化を指定することはできません。

異なる表領域に別のパーティションがあるパーティション表およびパーティション索引表の場合は、同じ表または索引で、暗号化された表領域と暗号化されていない表領域の両方を使用できます。

表領域の暗号化ではOracle Databaseの透過的データ暗号化が使用されます。この機能を使用するには、データベースのマスター暗号化キーを格納するためのOracleウォレットを作成する必要があります。暗号化された表領域を作成する場合、および暗号化データを格納または取得する場合は、ウォレットがオープンしている必要があります。ウォレットは、オープンするとすべてのセッションで使用可能になり、明示的にクローズするか、データベースが停止されるまではオープンしたままになります。

表領域を暗号化するには、COMPATIBLE初期化パラメータを11.1.0以上に設定した状態でデータベースをオープンする必要があります。Oracle Database11g リリース1の新規インストールでは、COMPATIBLEのデフォルト設定は11.1.0です。表領域を作成できるユーザーは、暗号化された表領域も作成できます。

透過的データ暗号化では、次に示すAdvanced Encryption Standard(AES)アルゴリズムやTriple Data Encryption Standard(3DES)アルゴリズムなど、業界標準の暗号化アルゴリズムがサポートされています。

暗号化キーの長さはアルゴリズム名で示されています。たとえば、AES128アルゴリズムでは128ビットのキーが使用されます。使用するアルゴリズムは表領域の作成時に指定します。表領域ごとに異なるアルゴリズムを使用できます。理論上は、キーの長さが長くなるほどセキュリティが強化されますが、その分、CPUオーバーヘッドがかかります。CREATE TABLESPACE文でアルゴリズムを指定しない場合は、AES128がデフォルトとなります。表領域の暗号化では、ディスク領域のオーバーヘッドは発生しません。

次の文では、デフォルトの暗号化アルゴリズムを使用して暗号化された表領域を作成しています。

CREATE TABLESPACE securespace
DATAFILE '/u01/app/oracle/oradata/orcl/secure01.dbf' SIZE 100M
ENCRYPTION
DEFAULT STORAGE(ENCRYPT);

次の文では、AES256アルゴリズムを使用して同じ表領域を作成しています。

CREATE TABLESPACE securespace
DATAFILE '/u01/app/oracle/oradata/orcl/secure01.dbf' SIZE 100M
ENCRYPTION USING 'AES256'
DEFAULT STORAGE(ENCRYPT);
制限事項

暗号化された表領域の制限事項は、次のとおりです。

また、透過的データ暗号化に関する一般的な制限事項については、『Oracle Database Advanced Security管理者ガイド』を参照してください。

表領域の暗号化情報の問合せ

DBA_TABLESPACESUSER_TABLESPACESのデータ・ディクショナリ・ビューには、ENCRYPTEDという列が含まれています。表領域が暗号化されている場合は、この列にYESと表示されます。

V$ENCRYPTED_TABLESPACESビューには、現在暗号化されているすべての表領域がリストされます。次の問合せでは、暗号化された表領域の名前と暗号化アルゴリズムが表示されます。

SELECT t.name, e.encryptionalg algorithm 
FROM  v$tablespace t, v$encrypted_tablespaces e
WHERE t.ts# = e.ts#;
 
NAME                           ALGORITHM 
------------------------------ --------- 
SECURESPACE                    AES128  

関連項目:

  • 透過的データ暗号化の詳細、およびウォレットの作成とオープンの手順については、『Oracle Database 2日でセキュリティ・ガイド』を参照してください。

  • 表領域全体を暗号化する代替方法については、「機密データを格納する列の暗号化」を参照してください。

  • Oracle Real Application Clusters環境でOracleウォレットを使用する方法については、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

  • CREATE TABLESPACE文の詳細は、『Oracle Database SQLリファレンス』を参照してください。

 

一時表領域

一時表領域には、セッションの間のみ存続する一時データが格納されます。一時表領域を使用すると、メモリーに格納できない複数のソート操作の同時実行性を改善し、ソート時の領域管理操作の効率を改善できます。

一時表領域は、次の情報を格納するために使用します。

特定のインスタンスのソート操作はすべて、一時表領域内の1つのソート・セグメントを共有し、ソート・セグメントは、一時領域を必要とするソート操作を実行するすべてのインスタンスに存在します。ソート・セグメントは、一時表領域を使用してソート処理を実行する最初の文によってインスタンスの起動後に作成され、停止時にのみ解放されます。

デフォルトでは、新規にOracle Databaseをインストールするたびに、TEMPという単一の一時表領域が作成されます。追加の一時表領域は、CREATE TABLESPACE文で作成できます。一時表領域を各データベース・ユーザーに割り当てるには、CREATE USER文またはALTER USER文を使用します。複数のユーザーが単一の一時表領域を共有できます。

一時表領域には、オブジェクトを明示的に作成できません。


注意:

前述の説明の例外は、一時表です。一時表を作成すると、その行はデフォルト一時表領域に格納されます。ただし、一時表を新規の一時表領域内に作成する場合を除きます。 詳細は、「一時表の作成」を参照してください。 


デフォルト一時表領域

一時表領域が明示的に割り当てられていないユーザーは、データベースのデフォルト一時表領域(新規インストールではTEMP)を使用します。データベースのデフォルト一時表領域は次のコマンドで変更できます。

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;

データベースの現行のデフォルト一時表領域を判断するには、次の問合せを実行します。

SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE
   PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

PROPERTY_NAME              PROPERTY_VALUE
-------------------------- ------------------------------
DEFAULT_TEMP_TABLESPACE    TEMP
一時表領域の領域割当て

一時表領域のソート・セグメントの領域割当てと割当て解除は、V$SORT_SEGMENTビューを使用して表示できます。V$SORT_USAGEビューでは、そのセグメント内の現行のソート・ユーザーが識別されます。

一時表領域を使用するソート操作が完了しても、ソート・セグメントに割り当てられたエクステントの割当ては解除されず、エクステントには、使用可能マークおよび再利用可能マークが付けられます。DBA_TEMP_FREE_SPACEビューには、各一時表領域の割当済領域の合計と空き領域が表示されます。 詳細は、「一時表領域の領域使用情報の表示」を参照してください。大量の未使用領域があるローカル管理の一時表領域は手動で縮小できます。 詳細は、「ローカル管理の一時表領域の縮小」を参照してください。

関連項目:

  • ユーザーの作成方法、および一時表領域の割当て方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • デフォルト一時表領域の詳細は、『Oracle Database概要』を参照してください。

  • V$SORT_SEGMENTV$SORT_USAGEおよびDBA_TEMP_FREE_SPACEの各ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

  • ソートのチューニングの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

 

ローカル管理の一時表領域の作成

ローカル管理表領域では、領域の管理がより簡単で効率的であるため、一時表領域には理想的です。ローカル管理の一時表領域では、一時ファイルが使用されます。一時表領域の外側のデータは変更されず、一時表領域データのREDOは発生しません。このため、読取り専用データベースまたはスタンバイ・データベースでディスク上ソート操作を実行できます。

一時ファイルの情報を表示するには、データファイルの場合とは異なるビューを使用します。V$TEMPFILEおよびDBA_TEMP_FILESビューは、V$DATAFILEおよびDBA_DATA_FILESビューに相当します。

ローカル管理の一時表領域を作成するには、CREATE TEMPORARY TABLESPACE文を使用します。この文を発行するには、CREATE TABLESPACEシステム権限が必要です。

次の文では、各エクステントが16MBの一時表領域が作成されます。16MBの各エクステント(標準ブロック・サイズが2KBのときは8000個のブロックに相当)は、このファイルのビットマップに1ビットで表されます。

CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE '/u02/oracle/data/lmtemp01.dbf' 
     SIZE 20M REUSE
     EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;

すべての一時表領域は均一サイズのローカル管理エクステントを使用して作成されるため、一時表領域の場合、エクステント管理句はオプションです。SIZEのデフォルトは1MBです。ただし、SIZEに別の値を指定する必要がある場合は、前述の文を使用します。


注意:

一部のオペレーティング・システムでは、一時ファイルのブロックが実際にアクセスされるまで、データベースは一時ファイル用の領域を割り当てません。このような領域割当ての遅延により、一時ファイルの作成やサイズ変更が短時間で済みますが、一時ファイルを後で使用するときに十分なディスク領域が使用可能である必要があります。使用しているシステムでデータベースがこのように一時ファイルを割り当てているかどうかは、オペレーティング・システムのマニュアルを参照して判断してください。 


大型ファイル一時表領域の作成

通常の表領域と同様に、単一ファイル(大型ファイル)の一時表領域を作成できます。単一ファイルの一時表領域を作成するには、CREATE BIGFILE TEMPORARY TABLESPACE文を使用します。 大型ファイル表領域については、「大型ファイル表領域の作成」および「大型ファイル表領域の変更」を参照してください。ただし、データファイルではなく一時ファイルを使用する一時表領域の作成を検討してください。

一時表領域の領域使用情報の表示

DBA_TEMP_FREE_SPACEディクショナリ・ビューには、各一時表領域の領域使用に関する情報が表示されます。この情報には、割当て済領域と空き領域が含まれます。これらの統計を表示するには、次のコマンドを使用してこのビューを問い合せます。

SELECT * from DBA_TEMP_FREE_SPACE;
 
TABLESPACE_NAME                     TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE
----------------------------------- --------------- --------------- ----------
TEMP                                250609664       250609664       249561088

複数の一時表領域: 表領域グループの使用

ユーザーは、一時表領域グループを使用して複数の表領域から一時領域を消費できます。単一の一時表領域ではなく表領域グループを使用することによって、ソート(特に多数のパーティションがある表でのソート)の結果を保持するのに1つの表領域では不十分な場合に発生する問題を回避できます。パラレル実行のサーバーで表領域グループを使用すると、1回のパラレル操作で複数の一時表領域を使用できます。

表領域グループには、次の特性があります。

表領域グループは明示的に作成しません。表領域グループは、最初の一時表領域がグループに割り当てられると暗黙的に作成されます。また、表領域グループに含まれる最後の一時表領域がグループから削除されると、その表領域グループが削除されます。

DBA_TABLESPACE_GROUPSビューには、表領域グループとそのメンバーの表領域がリスト表示されます。

関連項目:

一時表領域または表領域グループのユーザーへの割当てについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。 

表領域グループの作成

表領域グループは、CREATE TEMPORARY TABLESPACE文またはALTER TABLESPACE文にTABLESPACE GROUP句を指定したときに、指定した表領域グループが存在していない場合に暗黙的に作成されます。

たとえば、group1およびgroup2が両方とも存在しない場合は、次の文によってこの2つのグループが作成され、それぞれのグループには指定の表領域のみがメンバーとして含まれます。

CREATE TEMPORARY TABLESPACE lmtemp2 TEMPFILE '/u02/oracle/data/lmtemp201.dbf'
     SIZE 50M
     TABLESPACE GROUP group1;

ALTER TABLESPACE lmtemp TABLESPACE GROUP group2;

表領域グループのメンバーの変更

表領域を既存の表領域グループに追加するには、CREATE TEMPORARY TABLESPACE文またはALTER TABLESPACE文のTABLESPACE GROUP句で既存の表領域グループ名を指定します。

次の文は、表領域を既存のグループに追加します。この文では、表領域lmtemp3を作成してgroup1に追加します。その結果、group1には表領域lmtemp2lmtemp3が含まれます。

CREATE TEMPORARY TABLESPACE lmtemp3 TEMPFILE '/u02/oracle/data/lmtemp301.dbf'
     SIZE 25M
     TABLESPACE GROUP group1;

次の文も表領域を既存のグループに追加しますが、この場合、表領域lmtemp2はすでにgroup1に属しているため、実質的にはgroup1からgroup2への移動となります。

ALTER TABLESPACE lmtemp2 TABLESPACE GROUP group2;

この結果、group2にはlmtemplmtemp2が含まれ、group1にはtmtemp3のみが含まれます。

次の文を使用すると、表領域をグループから削除できます。

ALTER TABLESPACE lmtemp3 TABLESPACE GROUP '';

これによって、表領域lmtemp3はどのグループにも属さなくなります。さらに、group1に属するメンバーがなくなるため、group1は暗黙的に削除されます。

デフォルト一時表領域としての表領域グループの割当て

ALTER DATABASE...DEFAULT TEMPORARY TABLESPACE文を使用して、表領域グループをデータベースのデフォルト一時表領域として割り当てます。次に例を示します。

ALTER DATABASE sample DEFAULT TEMPORARY TABLESPACE group2;

これで、明示的に一時表領域が割り当てられていないユーザーは表領域lmtemplmtemp2を使用することになります。

表領域グループがデフォルト一時表領域に指定されている場合、そのグループのメンバーの表領域は削除できません。メンバーの表領域を削除するには、最初にその表領域を表領域グループから削除する必要があります。同様に、単一の一時表領域がデフォルト一時表領域に指定されている場合は、その一時表領域は削除できません。

表領域の非標準のブロック・サイズの指定

DB_BLOCK_SIZE初期化パラメータで指定された標準のデータベース・ブロック・サイズとは異なるブロック・サイズの表領域を作成できます。この機能によって、ブロック・サイズの異なる表領域をデータベース間でトランスポートできます。

CREATE TABLESPACE文のBLOCKSIZE句を使用して、データベースの標準とは異なるブロック・サイズを指定して表領域を作成できます。BLOCKSIZE句を正しく実行するためには、DB_CACHE_SIZEと、少なくとも1つのDB_nK_CACHE_SIZE初期化パラメータをすでに設定している必要があります。さらに、BLOCKSIZE句で指定する整数を1つのDB_nK_CACHE_SIZEパラメータの設定に対応付ける必要があります。冗長な指定になりますが、BLOCKSIZEDB_BLOCK_SIZE初期化パラメータで指定されている標準のブロック・サイズと同じに指定することも可能です。

次の文は表領域lmtbsbを作成しますが、ブロック・サイズをDB_BLOCK_SIZE初期化パラメータで指定されている標準のデータベース・ブロック・サイズとは異なるサイズにします。

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
    BLOCKSIZE 8K; 

関連項目:

 

REDOレコードの書込みの制御

一部のデータベース操作については、データベースでREDOレコードを生成するかどうかを制御できます。REDOを使用しないと、メディア・リカバリはできません。ただし、REDOの生成を抑制するとパフォーマンスが改善されるため、簡単にリカバリできる操作に適している場合があります。たとえば、CREATE TABLE...AS SELECT文は、データベース障害やインスタンス障害が発生した場合に操作を繰り返すことができます。

これらの操作を表領域内のオブジェクトに対して実行するときにREDOを抑制する必要がある場合は、CREATE TABLESPACE文にNOLOGGING句を指定します。この句を指定しないか、かわりにLOGGINGを指定した場合は、表領域内のオブジェクトに変更が行われるとREDOが生成されます。一時セグメントや一時表領域の場合は、ロギング属性に関係なくREDOは生成されません。

表領域レベルで指定するロギング属性は、その表領域内で作成されるオブジェクトのデフォルト属性になります。このデフォルトのロギング属性は、CREATE TABLE文を使用するなど、スキーマ・オブジェクト・レベルでLOGGINGNOLOGGINGを指定することで上書きできます。

スタンバイ・データベースがある場合は、NOLOGGING句を指定すると、そのスタンバイ・データベースの可用性と精度に問題が生じます。この問題を克服するために、FORCE LOGGINGモードを指定できます。CREATE TABLESPACE文にFORCE LOGGING句を指定すると、表領域内のオブジェクトを変更するすべての操作について、REDOレコードを強制的に生成させることができます。これにより、オブジェクト・レベルでの指定が上書きされます。

FORCE LOGGINGモードの表領域を別のデータベースにトランスポートすると、新しい表領域ではFORCE LOGGINGモードは維持されません。

関連項目:

  • NOLOGGINGモードで実行できる操作の詳細は、『Oracle Database SQLリファレンス』を参照してください。

  • FORCE LOGGINGモードの詳細と、CREATE DATABASE文でFORCE LOGGING句を使用する効果の詳細は、「FORCE LOGGINGモードの指定」を参照してください。

 

表領域の可用性の変更

オンラインの表領域をオフライン化すると、一般的な使用を一時的に禁止にできます。データベースの残りの部分はオープンしていて使用可能であり、ユーザーはデータにアクセスできます。逆に、オフライン状態の表領域をオンライン化して、データベース・ユーザーがその表領域内のスキーマ・オブジェクトを使用できるようにすることもできます。表領域の可用性を変更するには、データベースをオープンする必要があります。

表領域の可用性を変更するには、ALTER TABLESPACE文を使用します。そのためには、ALTER TABLESPACEまたはMANAGE TABLESPACEシステム権限が必要です。

関連項目:

表領域内の各データファイルの可用性を変更する方法については、「データファイルの可用性の変更」を参照してください。 

表領域のオフライン化

表領域は、次のような場合にオフライン化できます。

表領域をオフライン化すると、その関連ファイルがすべてオフライン化されます。

次の表領域はオフライン化できません。

表領域をオフライン化する前に、その表領域がデフォルト表領域としてすでに割り当てられているユーザーの表領域割当ての変更を考慮してください。このようなユーザーは表領域がオフラインの間その中のオブジェクトにアクセスできないため、表領域割当ての変更をお薦めします。

ALTER TABLESPACE...OFFLINE文では、次のパラメータを指定できます。

  説明 

NORMAL  

表領域のどのデータファイルにもエラー条件が存在していない場合は、この表領域を通常の方法でオフライン化できます。書込みエラーが発生していると、現時点では表領域のデータファイルをオフライン化することはできません。OFFLINE NORMALを指定すると、データベースは表領域のデータファイルすべてのチェックポイントを取ってから、それらのファイルをオフライン化します。NORMALはデフォルトです。 

TEMPORARY  

表領域の1つまたは複数のデータファイルについてエラー条件が存在している場合でも、表領域を一時的にオフライン化できます。OFFLINE TEMPORARYを指定すると、データベースはまだオフライン化されていないデータファイルのチェックポイントを取ってから、これらのファイルをオフライン化します。

オフラインになっているファイルがないときに表領域を一時的にオフライン化する場合は、表領域をオンラインに戻す前にメディア・リカバリを実行する必要はありません。しかし、表領域の1つまたは複数のファイルが書込みエラーのためにオフラインになっており、この表領域を一時的にオフライン化する場合は、表領域をオンラインに戻す前にリカバリする必要があります。 

IMMEDIATE  

表領域が即時にオフライン化されます。データベースはデータファイルのチェックポイントを取りません。OFFLINE IMMEDIATEを指定すると、表領域をオンライン化する前に表領域のメディア・リカバリが必要です。データベースをNOARCHIVELOGモードで運用している場合は、表領域を即時にオフライン化することはできません。 


注意:

表領域をオフライン化する必要がある場合は、可能なかぎりNORMAL句(デフォルト)を使用してください。この設定によって、不完全リカバリの後にALTER DATABASE OPEN RESETLOGS文を使用してREDOログ順序をリセットした場合でも、表領域をオンラインに戻すためのリカバリが不要になることが保証されます。  


TEMPORARYは、表領域を通常の方法でオフライン化できないときのみ指定してください。この場合、エラーのためにオフライン化されたファイルのみをリカバリする必要があり、その後に表領域をオンライン化できます。IMMEDIATEは、NORMAL設定とTEMPORARY設定を試した後にのみ指定してください。

次の例では、users表領域を通常の方法でオフライン化しています。

ALTER TABLESPACE users OFFLINE NORMAL;

表領域のオンライン化

データベースがオープンされている場合は、いつでもOracle Database内の任意の表領域をオンライン化できます。通常、表領域は、データベース・ユーザーがその中のデータを使用できるようにオンラインになっています。

オンライン化しようとする表領域が、正常に(ALTER TABLESPACE OFFLINE文のNORMAL句を使用して)オフライン化されていない場合は、最初にメディア・リカバリをしないかぎりオンライン化できません。メディア・リカバリを実行しないと、エラーが返されて表領域はオフラインのままになります。

関連項目:

メディア・リカバリの実行方法については、『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』を参照してください。 

次の文は、users表領域をオンライン化します。

ALTER TABLESPACE users ONLINE;

読取り専用表領域の使用

表領域を読取り専用にすると、表領域のデータファイルに対して書込み操作ができなくなります。読取り専用表領域の主な目的は、データベース内の大規模かつ静的部分のバックアップおよびリカバリを実行しなくて済むようにすることです。また、読取り専用表領域は、ユーザーが履歴データを変更できないように履歴データを完全に保護する手段でもあります。表領域を読取り専用にすると、その表領域内のすべての表はユーザーの更新権限レベルに関係なく更新できません。


注意:

表領域は、それが作成されたデータベース内でしかオンライン化できないため、読取り専用にすること自体でアーカイブ要件やデータ公開要件を満たすことはできません。 ただし、「データベース間での表領域のトランスポート」で説明するように、トランスポータブル表領域機能を使用すると、これらの要件を満たすことができます。 


表や索引などの項目は読取り専用表領域から削除できますが、読取り専用表領域内のオブジェクトは作成または変更できません。ALTER TABLE...ADDまたはALTER TABLE...MODIFYなど、データ・ディクショナリ内のファイル記述を更新する文は実行できますが、新しい記述は表領域を読取り/書込み用にするまでは使用できません。

読取り専用表領域は、他のデータベースにトランスポートすることもできます。読取り専用表領域は更新できないため、CD-ROMまたはWrite Once-Read Many(WORM)デバイスに格納できます。

この項の内容は、次のとおりです。

表領域を読取り専用にする方法

すべての表領域は、最初は読取り/書込み用として作成されます。表領域を読取り専用に変更するには、ALTER TABLESPACE文でREAD ONLYキーワードを使用します。そのためには、ALTER TABLESPACEまたはMANAGE TABLESPACEシステム権限が必要です。

表領域を読取り専用にするには、あらかじめ次の条件を満たす必要があります。

読取り専用表領域のデータにアクセスする際のパフォーマンスを向上させるため、表領域を読取り専用にする直前に、表領域内の表のブロックすべてにアクセスする問合せを発行することをお薦めします。各表に対してSELECT COUNT (*)などの単純な問合せを実行しておくと、それ以降、表領域のデータ・ブロックに最も効率的にアクセスできるようになります。これによって、最後にブロックを変更したトランザクションの状態をデータベースが確認する必要がなくなるからです。

次の文は、flights表領域を読取り専用にします。

ALTER TABLESPACE flights READ ONLY;

データベースのトランザクション処理中に、ALTER TABLESPACE...READ ONLY文を発行できます。この文が発行されると、表領域は推移読取り専用状態になります。トランザクションでは、その表領域に対してDML文を使用した変更ができなくなります。変更を試行すると、そのトランザクションは終了してロールバックされます。ただし、すでに変更を実行し、追加変更を試行しないトランザクションは、コミットまたはロールバックできます。

ALTER TABLESPACE...READ ONLY文は、戻る前に、表領域に対する変更が保留中またはコミット解除されたトランザクション、およびこの文の発行前に開始されたトランザクションがコミットまたはロールバックされるのを待機します。 文の発行前に開始されたトランザクションがアクティブなままであっても、表領域に対する変更をロールバックしてセーブポイントまでロールバックすると、文はこのアクティブ・トランザクションを待機しなくなります。


注意:

この推移読取り専用状態になるのは、初期化パラメータCOMPATIBLEの値が8.1.0以上の場合のみです。このパラメータが8.1.0より小さい値に設定されている場合は、アクティブなトランザクションが存在していると、ALTER TABLESPACE...READ ONLY文は失敗します。  


ALTER TABLESPACE文の完了までに長時間かかる場合は、読取り専用状態になるのを妨げているトランザクションを識別できます。次に、それらのトランザクションの所有者に通知し、必要に応じてトランザクションを終了させるかどうかを決定できます。

次の例では、ALTER TABLESPACE...READ ONLY文に対応するトランザクション・エントリが識別され、そのセッション・アドレス(saddr)が表示されます。

SELECT SQL_TEXT, SADDR 
    FROM V$SQLAREA,V$SESSION
    WHERE V$SQLAREA.ADDRESS = V$SESSION.SQL_ADDRESS    
        AND SQL_TEXT LIKE 'alter tablespace%'; 

SQL_TEXT                                 SADDR   
---------------------------------------- --------
alter tablespace tbs1 read only          80034AF0

各アクティブ・トランザクションの開始システム変更番号(SCN)は、V$TRANSACTIONビューに格納されています。このビューを開始SCNの昇順でソートして表示すると、トランザクションが実行順にリストされます。前述の例の場合は、読取り専用文のトランザクション・エントリのセッション・アドレスがわかっているので、V$TRANSACTIONビューで特定できます。開始SCNよりも小さい番号を持つトランザクション(以前に実行されたトランザクションを示します)はすべて、表領域の停止とその後の読取り専用状態になるのを妨げている可能性があります。

SELECT SES_ADDR, START_SCNB 
    FROM V$TRANSACTION
    ORDER BY START_SCNB;

SES_ADDR START_SCNB
-------- ----------
800352A0       3621   --> waiting on this txn
80035A50       3623   --> waiting on this txn
80034AF0       3628   --> this is the ALTER TABLESPACE statement
80037910       3629   --> don't care about this txn

この時点で、ブロックしているトランザクションの所有者を見つけることができます。

SELECT T.SES_ADDR, S.USERNAME, S.MACHINE
   FROM V$SESSION S, V$TRANSACTION T
   WHERE T.SES_ADDR = S.SADDR
   ORDER BY T.SES_ADDR

SES_ADDR USERNAME             MACHINE
-------- -------------------- --------------------
800352A0 DAVIDB               DAVIDBLAP             --> Contact this user
80035A50 MIKEL                LAB61                 --> Contact this user
80034AF0 DBA01                STEVEFLAP           
80037910 NICKD                NICKDLAP

表領域を読取り専用にした後は、その表領域のバックアップをただちに作成することをお薦めします。表領域は読取り専用になっているかぎり変更できないため、それ以後のバックアップは不要です。

関連項目:

『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』 

読取り専用表領域を書込み可能にする方法

表領域を書込み可能に変更するには、ALTER TABLESPACE文でREAD WRITEキーワードを指定します。そのためには、ALTER TABLESPACEまたはMANAGE TABLESPACEシステム権限が必要です。

表領域を読取り/書込み用にするには、前提条件として、表領域のみでなく、そのすべてのデータファイルをオンライン化する必要があります。データファイルをオンライン化するには、ALTER DATABASE 文のDATAFILE...ONLINE句を使用します。データファイルの現行の状態を確認するには、V$DATAFILEビューを使用します。

次の文は、flights表領域を書込み可能にします。

ALTER TABLESPACE flights READ WRITE;

読取り専用表領域を書込み可能に変更すると、データファイルの制御ファイル・エントリが更新されるため、読取り専用バージョンのデータファイルをリカバリの開始点として使用できます。

WORMデバイスでの読取り専用表領域の作成

CD-ROMまたはWORMデバイスに読取り専用表領域を作成する手順は、次のとおりです。

  1. 別のデバイスに書込み可能表領域を作成します。その表領域に属するオブジェクトを作成して、データを挿入します。

  2. 表領域を読取り専用に変更します。

  3. 表領域のデータファイルをWORMデバイスにコピーします。ファイルをコピーするには、オペレーティング・システムのコマンドを使用します。

  4. 表領域をオフライン化します。

  5. データファイルの名前を、WORMデバイスにコピーしたファイルと一致するように名前変更します。これには、RENAME DATAFILE句を指定したALTER TABLESPACE文を使用します。データファイルの名前を変更すると、制御ファイルに記述されているこれらのファイルの名前も変更されます。

  6. 表領域をオンライン化します。

読取り専用表領域内にあるデータファイルのオープンの遅延

大規模データベースのほとんどが、アクセス速度の遅いデバイスや階層形式の記憶デバイス上にある読取り専用表領域に格納されている場合は、READ_ONLY_OPEN_DELAYED初期化パラメータをTRUEに設定することを検討する必要があります。これにより、読取り専用表領域内のデータファイルは、そこに格納されたデータの読取り試行時に初めてアクセスされるため、データベースのオープンなど、特定の操作が高速になります。

READ_ONLY_OPEN_DELAYED=TRUEに設定すると、次のような副次的な影響があります。

表領域の変更とメンテナンス

ここでは、表領域の変更とメンテナンスに関する事項について説明します。この項の内容は、次のとおりです。

ローカル管理表領域の変更

ローカル管理表領域をローカル管理の一時表領域に変更できません。また、セグメント領域の管理方法を変更することもできません。ローカル管理表領域では、使用可能エクステントを結合する必要はありません。ただし、次のような操作の場合は、ALTER TABLESPACE文をローカル管理表領域に対して使用できます。

大型ファイル表領域の変更

ALTER TABLESPACE文の次の2つの句は、大型ファイル表領域使用時におけるデータファイルの透過性をサポートします。

大型ファイル表領域に対してADD DATAFILE句を指定すると、エラーが発生します。

ローカル管理の一時表領域の変更


注意:

ALTER TABLESPACE文にTEMPORARYキーワードを指定して、ローカル管理の永続表領域をローカル管理の一時表領域に変更することはできません。ローカル管理の一時表領域を作成するには、CREATE TEMPORARY TABLESPACE文を使用する必要があります。 


次の例のように、ALTER TABLESPACEを使用すると、一時ファイルを追加、オフライン化またはオンライン化できます。

ALTER TABLESPACE lmtemp
   ADD TEMPFILE '/u02/oracle/data/lmtemp02.dbf' SIZE 18M REUSE;

ALTER TABLESPACE lmtemp TEMPFILE OFFLINE;
ALTER TABLESPACE lmtemp TEMPFILE ONLINE;


注意:

一時表領域はオフライン化できません。かわりに、一時ファイルをオフライン化します。V$TEMPFILEビューには、一時ファイルのオンライン化の状態が表示されます。 


ALTER DATABASE文を使用すると、一時ファイルを変更できます。

次の文では、一時ファイルをオフラインにしてから、オンラインに戻しています。前述の例の最後の2つのALTER TABLESPACE文と同様に動作します。

ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' OFFLINE;
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' ONLINE;

次の文では、一時ファイルのサイズが変更されます。

ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' RESIZE 18M;

次の文では、一時ファイルが削除され、オペレーティング・システム・ファイルが削除されます。

ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' DROP
    INCLUDING DATAFILES;

この一時ファイルが属していた表領域は残ります。アラート・ログには、一時ファイルが削除されたことを示すメッセージが書き込まれます。オペレーティング・システム・エラーによってファイルが削除されなかった場合でも文は正常終了しますが、エラーを示すメッセージがアラート・ログに書き込まれます。

また、ALTER DATABASE文を使用して、既存の一時ファイルの自動拡張を使用可能または使用禁止にしたり、一時ファイル名を変更(RENAME FILE)できます。 必要な構文については、『Oracle Database SQLリファレンス』を参照してください。


注意:

一時ファイルの名前を変更するには、一時ファイルをオフライン化し、オペレーティング・システムのコマンドを使用して、その一時ファイルを名前変更または再配置します。次に、ALTER DATABASE RENAME FILEコマンドを使用してデータベースの制御ファイルを更新します。 


ローカル管理の一時表領域の縮小

データベースで大規模なソート操作を実行すると、一時表領域が増大し、ディスク領域の容量が大幅に占有される場合があります。ソート操作が完了しても余分になった領域は解放されず、使用可能マークと再利用可能マークが付けられるのみです。したがって、単一の大規模なソート操作を実行すると、ソート操作の完了後に大量の割当て済一時領域が未使用のままになります。このため、データベースでは、ローカル管理の一時表領域を縮小して未使用領域を解放できます。

一時表領域を縮小する場合は、ALTER TABLESPACE文のSHRINK SPACE句を使用します。一時表領域の特定の一時ファイルを縮小する場合は、ALTER TABLESPACE文のSHRINK TEMPFILE句を使用します。表領域または一時ファイルの他の属性を維持しながら可能なかぎり空き領域を縮小します。オプションのKEEP句は、表領域または一時ファイルの最小サイズを定義します。

縮小はオンライン操作です。これは、ユーザー・セッションは必要に応じてソート・エクステントの割当てを継続でき、すでに実行中の問合せは影響を受けないことを意味します。

次の例では、ローカル管理の一時表領域のlmtmp1を20MBのサイズに縮小しています。

ALTER TABLESPACE lmtemp1 SHRINK SPACE KEEP 20M;

次の例では、ローカル管理の一時表領域lmtmp2の一時ファイルlmtemp02.dbfを縮小しています。KEEP句を省略しているため、データベースでは、一時ファイルを最小可能サイズまで縮小することを試みます。

ALTER TABLESPACE lmtemp2 SHRINK TEMPFILE '/u02/oracle/data/lmtemp02.dbf';

表領域の名前変更

永続表領域または一時表領域の名前は、ALTER TABLESPACE文のRENAME TO句を使用して変更できます。たとえば、次の文はusers表領域の名前を変更します。

ALTER TABLESPACE users RENAME TO usersts;

表領域の名前を変更すると、データ・ディクショナリ、制御ファイルおよび(オンライン)データファイル・ヘッダー内でその表領域名への参照がすべて更新されます。表領域IDは変更されないため、たとえば、その表領域がユーザーのデフォルト表領域の場合、DBA_USERSビューには名前が変更された表領域がユーザーのデフォルト表領域として表示されます。

この文の操作では、次の点に注意してください。

表領域の削除

表領域とその内容が不要になった場合は、その表領域と内容(表領域に含まれるセグメント)をデータベースから削除できます。表領域を削除するには、DROP TABLESPACEシステム権限が必要です。


注意:

削除された表領域のデータはリカバリできません。そのため、削除しようとしている表領域に含まれているデータはすべて、将来的に必要のないことを確かめてください。また、表領域をデータベースから削除する直前および直後に、データベースの完全バックアップを作成する必要があります。表領域を誤って削除した場合、または表領域を削除した後にデータベースで問題が発生した場合は、データベースをリカバリできるように、必ずバックアップを作成することをお薦めします。 


表領域を削除すると、対応付けられたデータベースの制御ファイル中のファイル・ポインタのみが削除されます。必要に応じて、削除された表領域を構成していたオペレーティング・システム・ファイル(データファイル)を削除するようにOracle Databaseに指示することもできます。表領域の削除と同時にデータファイルを削除するようにデータベースに指示しない場合は、後でオペレーティング・システムの適切なコマンドを使用して削除する必要があります。

アクティブなセグメントを含む表領域は削除できません。たとえば、表領域内の表が現在使用されている場合、またはコミットされていないトランザクションをロールバックする必要があるUNDOデータが表領域に含まれている場合、その表領域は削除できません。表領域はオンラインでもオフラインでもかまいませんが、削除する前にオフラインにすることをお薦めします。

表領域を削除するには、DROP TABLESPACE文を使用します。次の文は、users表領域を、その中のセグメントも含めて削除します。

DROP TABLESPACE users INCLUDING CONTENTS;

表領域が空の場合(表、ビューまたは他の構造が格納されていない場合)は、INCLUDING CONTENTS句を指定する必要はありません。CASCADE CONSTRAINTS句を使用すると、表領域内の表の主キーと一意キーを参照する別の表領域の表から、すべての参照整合性制約を削除できます。

表領域の削除と同時に表領域に対応付けられたデータファイルを削除するには、INCLUDING CONTENTS AND DATAFILES句を使用します。次の文は、users表領域とそれに対応付けられているデータファイルを削除します。

DROP TABLESPACE users INCLUDING CONTENTS AND DATAFILES;

アラート・ログには、削除された各データファイルのメッセージが書き込まれます。オペレーティング・システム・エラーによってファイルが削除されなかった場合でもDROP TABLESPACE文は正常終了しますが、エラーを示すメッセージがアラート・ログに書き込まれます。

関連項目:

「データファイルの削除」 

SYSAUX表領域の管理

SYSAUX表領域は、データベースの作成時に、SYSTEM表領域の補助表領域としてインストールされます。これまで個別に表領域を作成して使用していた一部のデータベースのコンポーネントは、SYSAUX表領域に含まれるようになりました。

SYSAUX表領域が使用不可能になった場合でも、データベースのコア機能は実行可能です。SYSAUX表領域を使用しているデータベース機能はエラーとなるか、機能が制限される可能性があります。

SYSAUX表領域に含まれる占有データの監視

SYSAUX表領域の登録済占有データのリストは、「SYSAUX表領域の概要」を参照してください。これらのコンポーネントはSYSAUX表領域を使用し、SYSAUX表領域を占有する方法がインストール時に提供されます。

SYSAUX表領域の占有データは、V$SYSAUX_OCCUPANTSビューを使用して監視できます。このビューには、SYSAUX表領域の占有データに関する次の情報がリスト表示されます。

ビュー情報は、占有データ別にメンテナンスされます。

関連項目:

V$SYSAUX_OCCUPANTSビューの詳細は、『Oracle Databaseリファレンス』を参照してください。 

SYSAUX表領域内外への占有データの移動

コンポーネントのインストール時には、コンポーネントをSYSAUXに常駐させないように指定することもできます。また、後でコンポーネントを指定の表領域に再配置する必要が生じた場合、そのコンポーネントについては、V$SYSAUX_OCCUPANTSビューで指定した移動プロシージャを使用して移動を実行できます。

たとえば、デフォルトの表領域であるSYSAUXにOracle Ultra Searchをインストールしたとします。後で、Ultra Searchがかなりの領域を使用していることがわかりました。SYSAUXへの領域負担を軽減するために、V$SYSAUX_OCCUPANTSビューで指定したPL/SQL移動プロシージャをコールして、Ultra Searchを別の表領域に再配置できます。

移動プロシージャを使用すると、コンポーネントを他の表領域からSYSAUX表領域に移動することもできます。

SYSAUX表領域のサイズの制御

SYSAUX表領域は、多数のデータベース・コンポーネントによって占有され(表2-2を参照)、その合計サイズはそれらのコンポーネントが消費する領域によって決定します。同様に、コンポーネントが消費する領域は、使用される機能およびデータベース・ワークロードの性質によって決定します。

SYSAUX表領域を最も大きく占有するのは自動ワークロード・リポジトリ(AWR)です。AWRが消費する領域は、特定の時間におけるシステム内でのアクティブなセッションの数、スナップショット間隔、履歴データ保存期間など、いくつかの要因によって決定します。 同時にアクティブなセッションが平均10ある標準的なシステムでは、AWRデータ用として約200〜300MBの領域が必要になる場合があります。

次の表に、システム構成と予測される負荷に基づいてSYSAUX表領域のサイズを設定するためのガイドラインを示します。

パラメータ/推奨設定  小型  中型  大型 

CPU数 

32 

同時アクティブ・セッション数 

10 

20 

100 

ユーザー・オブジェクト数: 表および索引 

500 

5,000 

50,000 

デフォルト構成で安定した状態での予測SYSAUXのサイズ 

500 MB 

2 GB 

5 GB 

AWRのサイズを制御するには、スナップショット間隔と履歴データ保存期間を変更します。 AWRのスナップショット間隔と保存期間の管理の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

SYSAUX表領域のもう1つの主要な占有データは、埋込みのEnterprise Manager(EM)リポジトリです。このリポジトリはOracle Enterprise Manager Database Controlで使用され、そのメタデータが格納されます。このリポジトリのサイズは、データベース・アクティビティ、およびリポジトリに格納された構成関連情報によって異なります。

他のデータベース・コンポーネントが消費するSYSAUX表領域の領域サイズは、関連する機能(Oracle UltraSearch、Oracle Text、Oracle Streamsなど)を使用中の場合のみ大きくなります。このような機能を使用していない場合、これらのコンポーネントはSYSAUX表領域のサイズに大きく影響しません。

ローカル管理表領域の問題の診断と修復

Oracle Databaseには、DBMS_SPACE_ADMINパッケージが組み込まれています。このパッケージは、ローカル管理表領域の問題の診断と修復に使用するサポートの集まりです。

DBMS_SPACE_ADMINパッケージのプロシージャ

次の表に、DBMS_SPACE_ADMINパッケージに含まれるプロシージャを示します。 各プロシージャの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

プロシージャ  説明 

ASSM_SEGMENT_VERIFY 

自動セグメント領域管理が使用可能な表領域内に作成されたセグメントの整合性を検証します。sid_ora_process_id.trcという名前のダンプ・ファイルを、V$DIAG_INFOビューのDiag Traceエントリに対応する位置に出力します。

手動セグメント領域管理が指定されている表領域には、SEGMENT_VERIFYを使用します。 

ASSM_TABLESPACE_VERIFY 

自動セグメント領域管理が使用可能な表領域の整合性を検証します。sid_ora_process_id.trcという名前のダンプ・ファイルを、V$DIAG_INFOビューのDiag Traceエントリに対応する位置に出力します。

手動セグメント領域管理が指定されている表領域には、TABLESPACE_VERIFYを使用します。 

SEGMENT_CORRUPT 

適切なエラー・リカバリを実行できるように、セグメントに破損または有効マークを付けます。 

SEGMENT_DROP_CORRUPT 

現在、破損マークが設定されているセグメントを削除します(領域は再生しません)。 

SEGMENT_DUMP 

特定のセグメントのセグメント・ヘッダーおよびビットマップ・ブロックを、V$DIAG_INFOビューのDiag Traceエントリに対応する位置にあるsid_ora_process_id.trcという名前のダンプ・ファイルにダンプします。オプションで、セグメント・ヘッダーおよびビットマップ・ブロック・サマリーを含む簡略化したダンプ(各ブロックの空き領域率が含まれていない)を選択できます。 

SEGMENT_VERIFY 

セグメントのエクステント・マップの整合性を検証します。 

TABLESPACE_FIX_BITMAPS 

適切なDBA範囲(エクステント)にビットマップ内で使用可能マークまたは使用済マークを付けます。 

TABLESPACE_FIX_SEGMENT_STATES 

移行が停止した表領域内のセグメントの状態を修正します。 

TABLESPACE_MIGRATE_FROM_LOCAL 

ローカル管理表領域をディクショナリ管理表領域に移行します。 

TABLESPACE_MIGRATE_TO_LOCAL 

ディクショナリ管理表領域をローカル管理表領域に移行します。 

TABLESPACE_REBUILD_BITMAPS 

適切なビットマップを再作成します。 

TABLESPACE_REBUILD_QUOTAS 

特定の表領域の割当て制限を再作成します。 

TABLESPACE_RELOCATE_BITMAPS 

ビットマップを指定の保存先に再配置します。 

TABLESPACE_VERIFY 

表領域のセグメントのビットマップとエクステント・マップが同期しているかどうかを検証します。 

次の使用例では、DBMS_SPACE_ADMINパッケージを使用して問題を診断し、解決できる代表的な状況について説明します。


注意:

前述の一部のプロシージャは、正しく使用しないとデータが消失してリカバリ不能になる場合があります。これらのプロシージャに不明な点がある場合は、Oracleサポート・サービスと共同で作業を行ってください。 


関連項目:

 

使用例1: 割当て済ブロックが空き(オーバーラップなし)とマークされているときのビットマップの修復

TABLESPACE_VERIFYプロシージャの使用時に、ビットマップ内で「空き」マークが付いているブロックがセグメントに割り当てられたにもかかわらず、セグメント間のオーバーラップがレポートされていないことが検出された場合。

この使用例では、次のタスクを実行してください。

  1. SEGMENT_DUMPプロシージャをコールして、管理者がそのセグメントに割り当てた範囲をダンプします。

  2. 範囲ごとに、TABLESPACE_EXTENT_MAKE_USEDオプションを指定してTABLESPACE_FIX_BITMAPSプロシージャをコールし、領域に使用済のマークを付けます。

  3. TABLESPACE_REBUILD_QUOTASをコールして割当て制限を再作成します。

使用例2: 破損したセグメントの削除

ビットマップに「空き」マークが付いたセグメント・ブロックがあるため、セグメントを削除できない場合。このセグメントには、自動的に「破損」マークが付けられます。

この使用例では、次のタスクを実行してください。

  1. SEGMENT_VERIFY_EXTENTS_GLOBALオプションを指定してSEGMENT_VERIFYプロシージャをコールします。オーバーラップがレポートされない場合は、手順2から5までを実行します。

  2. SEGMENT_DUMPプロシージャをコールして、そのセグメントに割り当てられたデータ・ブロック・アドレス範囲をダンプします。

  3. 範囲ごとに、TABLESPACE_EXTENT_MAKE_FREEオプションを指定してTABLESPACE_FIX_BITMAPSプロシージャをコールし、領域に「空き」のマークを付けます。

  4. SEGMENT_DROP_CORRUPTをコールしてSEG$エントリを削除します。

  5. TABLESPACE_REBUILD_QUOTASをコールして割当て制限を再作成します。

使用例3: オーバーラップがレポートされたビットマップの修復

TABLESPACE_VERIFYプロシージャで、いくつかオーバーラップがレポートされる場合。前の内部エラーに基づいて、一部の実データを削除する必要があります。

この場合、表t1などの削除するオブジェクトを選択してから、次のタスクを実行します。

  1. t1がオーバーラップしているすべてのオブジェクトのリストを作成します。

  2. t1を削除します。必要に応じて、SEGMENT_DROP_CORRUPTプロシージャをコールしてフォローアップします。

  3. t1がオーバーラップしていたすべてのオブジェクトに対して、SEGMENT_VERIFYプロシージャをコールします。必要に応じて、TABLESPACE_FIX_BITMAPS プロシージャをコールして該当するビットマップに使用済を示すマークを付けます。

  4. TABLESPACE_VERIFYプロシージャを再度実行し、問題が解決したかどうかを検証します。

使用例4: ビットマップ・ブロックのメディア破損の訂正

ビットマップ・ブロックの集合にメディア破損がある場合。

この使用例では、次のタスクを実行してください。

  1. すべてのビットマップ・ブロック、または1つしか破損していない場合はそのブロックに対して、TABLESPACE_REBUILD_BITMAPSプロシージャをコールします。

  2. TABLESPACE_REBUILD_QUOTASをコールして割当て制限を再作成します。

  3. TABLESPACE_VERIFYプロシージャをコールして、ビットマップの整合性を検証します。

使用例5: ディクショナリ管理表領域からローカル管理表領域への移行

TABLESPACE_MIGRATE_TO_LOCALプロシージャを使用して、ディクショナリ管理表領域をローカル管理表領域に移行する場合。この操作はオンラインで実行されますが、領域管理操作は移行が完了するまでブロックされます。つまり、移行処理中にデータの読取りや変更はできますが、大量のデータをロードする場合は追加のエクステントの割当てが必要になるため、操作がブロックされる場合があります。

データベースのブロック・サイズは2KB、表領域tbs_1の既存のエクステント・サイズは10、50および10,000ブロック(それぞれ使用済、使用済および使用可能)とします。MINIMUM EXTENT値は20KB(10ブロック)です。システムにビットマップの割当て単位を選択させることができます。MINIMUM EXTENTを超えない範囲の最大公分母であることから、10ブロックの値が選択されます。

tbs_1をローカル管理表領域に変換する文は、次のとおりです。

EXEC DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('tbs_1');

割当て単位のサイズを指定する場合は、必ずシステムによって計算される単位サイズの因数にします。

ローカル管理表領域へのSYSTEM表領域の移行

DBMS_SPACE_ADMINパッケージを使用して、SYSTEM表領域をディクショナリ管理からローカル管理に移行します。次の文は、この移行を実行します。

SQL> EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('SYSTEM');

移行を実行する前に、次の条件を満たす必要があります。

コールド・バックアップを除き、前述のすべての条件はTABLESPACE_MIGRATE_TO_LOCALプロシージャにより施行されます。


注意:

SYSTEM表領域をローカル管理に移行すると、データベース内のディクショナリ管理表領域を読取り/書込み用にできなくなります。ディクショナリ管理表領域を読取り/書込みモードで使用できるようにする必要がある場合は、これらの表領域をローカル管理に移行してから、SYSTEM表領域を移行することをお薦めします。 


データベース間での表領域のトランスポート

ここでは、データベース間で表領域をトランスポートする方法について説明します。この項の内容は、次のとおりです。

トランスポータブル表領域の概要

トランスポータブル表領域機能を使用すると、表領域セットを別のOracle Databaseにコピーできます。


注意:

この方法で表領域をトランスポートする場合は、トランスポート処理が完了するまで、トランスポート対象の表領域を読取り専用モードにする必要があります。 これが望ましくない場合は、トランスポータブル表領域をバックアップ機能から使用できます。詳細は、『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』を参照してください。 


ディクショナリ管理またはローカル管理のどちらの表領域でもトランスポートできます。Oracle9iから、トランスポートする表領域をターゲット・データベースの標準ブロック・サイズと同じブロック・サイズにする必要がなくなりました。

同じデータのエクスポート/インポートやアンロード/ロードを使用するよりも、トランスポータブル表領域を使用してデータを移動するほうが高速です。これは、実際のすべてのデータを含むデータファイルが単に移動先にコピーされるためです。表領域オブジェクトのメタデータのみを新規データベースにトランスポートするには、データ・ポンプを使用します。


注意:

Oracle Database 11g リリース1からは、トランスポータブル表領域に対してデータ・ポンプを使用する必要があります。XMLTypeデータをデータベース・バージョン10g リリース2以前に下位移行できるのは、元のインポート・ユーティリティ(IMP)とエクスポート・ユーティリティ(EXP)を使用できる環境がある場合のみです。 これらのユーティリティの詳細は『Oracle Databaseユーティリティ』を、XMLTypeの詳細は『Oracle XML DB開発者ガイド』を参照してください。 


トランスポータブル表領域機能は、次のような場合に役立ちます。

これらの使用例については、「トランスポータブル表領域の使用: 使用例」を参照してください。

表領域をトランスポートする方法は、次の2通りあります。

プラットフォーム間での表領域のトランスポート

Oracle Database 11gから、プラットフォーム間で表領域のトランスポートが可能になりました。この機能を使用すると、次のことが可能になります。

多くのプラットフォーム(すべてではありません)では、クロス・プラットフォームでの表領域のトランスポートがサポートされます。V$TRANSPORTABLE_PLATFORMビューを問い合せると、サポートされているプラットフォームを参照して、各プラットフォームのendian形式(バイトの並び順)を確認できます。次の問合せを実行すると、プラットフォーム間での表領域のトランスポートがサポートされているプラットフォームが表示されます。

SQL> COLUMN PLATFORM_NAME FORMAT A32
SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;

PLATFORM_ID PLATFORM_NAME                    ENDIAN_FORMAT
----------- -------------------------------- --------------
          1 Solaris[tm] OE (32-bit)          Big
          2 Solaris[tm] OE (64-bit)          Big
          7 Microsoft Windows IA (32-bit)    Little
         10 Linux IA (32-bit)                Little
          6 AIX-Based Systems (64-bit)       Big
          3 HP-UX (64-bit)                   Big
          5 HP Tru64 UNIX                    Little
          4 HP-UX IA (64-bit)                Big
         11 Linux IA (64-bit)                Little
         15 HP Open VMS                      Little
          8 Microsoft Windows IA (64-bit)    Little
          9 IBM zSeries Based Linux          Big
         13 Linux 64-bit for AMD             Little
         16 Apple Mac OS                     Big
         12 Microsoft Windows 64-bit for AMD Little
         17 Solaris Operating System (x86)   Little
 
16 rows selected.

ソースおよびターゲットのプラットフォームでendiannessが異なる場合は、ソースまたはターゲットのプラットフォームで、トランスポートする表領域をターゲットの形式に変換する必要があります。両方のプラットフォームでendiannessが同じ場合は変換する必要はなく、表領域は同じプラットフォーム上にある場合と同様にトランスポートできます。

表領域を別のプラットフォームにトランスポートする前に、その表領域が属するプラットフォームをデータファイル・ヘッダーで識別する必要があります。互換性が10.0.0以上に設定されているOracle Databaseでは、データファイルの読取りまたは書込みを1回以上実行することによってプラットフォームを識別できます。

トランスポータブル表領域の使用に関する制限事項

表領域をトランスポートする場合は、次の制限事項に注意してください。

他の制限事項は次のとおりです。

アドバンスト・キュー

トランスポータブル表領域は、複数受信者を持つ8.0互換のアドバンスト・キューをサポートしません。

SYSTEM表領域オブジェクト

SYSTEM表領域またはユーザーSYSが所有するオブジェクトはトランスポートできません。これに該当するオブジェクトは、PL/SQL、Javaクラス、コールアウト、ビュー、シノニム、ユーザー、権限、ディメンション、ディレクトリ、順序などです。

OPAQUE型

解釈がアプリケーション固有で、データベースに対して不透明なタイプ(RAWBFILEなど)は、トランスポートできますが、クロス・プラットフォームのトランスポート操作では変換されません。このタイプの実際の構造はアプリケーションのみが認識するため、このタイプが新規プラットフォームに移動した後、アプリケーションではendiannessの問題に対処する必要があります。OPAQUE型を使用するタイプとオブジェクトも、直接的または間接的にこの制限の影響を受けます。

浮動小数点数

BINARY_FLOAT型およびBINARY_DOUBLE型は、データ・ポンプを使用してトランスポートできます。

トランスポータブル表領域の互換性に関する注意事項

Oracle Databaseでは、トランスポータブル表領域セットを作成するときに、ターゲット・データベースで実行する必要のある最も低い互換性レベルが計算されます。このレベルのことを、トランスポータブル・セットの互換性レベルと呼びます。Oracle Database 11gからは、ターゲット・データベースが同じプラットフォーム上にあるか別のプラットフォーム上にあるかに関係なく、表領域は同等以上の互換性が設定されたデータベースに常にトランスポートできます。トランスポータブル・セットの互換性レベルがターゲット・データベースの互換性レベルよりも高い場合は、エラーが通知されます。

次の表に、様々な使用例でのソース表領域とターゲット表領域の互換性の最低要件を示します。ソース・データベースとターゲット・データベースの互換性設定は同一である必要はありません。

トランスポートの使用例 

互換性の最低設定 

ソース・データベース 

ターゲット・データベース 

同じプラットフォーム上のデータベース間 

8.0 

8.0 

データベース・ブロック・サイズがターゲット・データベースと異なる表領域 

9.0 

9.0 

異なるプラットフォーム上のデータベース間 

10.0 

10.0 

データベース間で表領域をトランスポートする手順および例

次に、表領域のトランスポート処理の手順を示します。各手順の詳細は、後続の例で示します。

  1. V$TRANSPORTABLE_PLATFORMビューを問い合せて両方のプラットフォームのendian形式をチェック(クロス・プラットフォームでのトランスポートの場合)

    同じプラットフォームに表領域セットをトランスポートする場合は、この手順をスキップしてください。

  2. 自己完結型の表領域セットの選択

  3. トランスポータブル表領域セットの生成

    トランスポータブル表領域セットトランスポータブル・セット)は、トランスポートされる表領域セットのデータファイルと、そのセットの構造情報(メタデータ)を含むエクスポート・ファイルから構成されます。データ・ポンプを使用してエクスポートを実行します。

    endiannessがソース・プラットフォームとは異なるプラットフォームに表領域セットをトランスポートする場合は、表領域セットをターゲット・プラットフォームのendiannessに変換する必要があります。ソース側で変換する場合はこの手順の中で実行し、ターゲット側で変換する場合は手順4で実行できます。


    注意:

    この方法でトランスポータブル表領域を生成する場合は、表領域を一時的に読取り専用にする必要があります。この方法が望ましくない場合は、代替方法として、トランスポータブル表領域をバックアップ機能から使用できます。 詳細は、『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』を参照してください。 


  4. 表領域セットのトランスポート

    データファイルとエクスポート・ファイルをターゲット・データベースからアクセス可能な場所にコピーします。

    endiannessがソース・プラットフォームとは異なるプラットフォームに表領域セットをトランスポートし、ソース側で表領域セットをターゲット・プラットフォームのendiannessに変換していない場合は、ここでターゲット側での変換を実行する必要があります。

  5. 表領域セットのインポート

    データ・ポンプ・ユーティリティを起動して、表領域セットのメタデータをターゲット・データベースにインポートします。

表領域をトランスポートする手順については、次のデータファイルと表領域を想定した例で詳細に説明します。

表領域  データファイル 

sales_1  

/u01/oracle/oradata/salesdb/sales_101.dbf 

sales_2  

/u01/oracle/oradata/salesdb/sales_201.dbf 

手順1: プラットフォームのサポートとendiannessの確認

この手順は、ソース・プラットフォームとは異なるプラットフォームに表領域セットをトランスポートする場合のみ実行します。

ソース・プラットフォームとは異なるプラットフォームに表領域セットをトランスポートする場合は、ソースおよびターゲットのプラットフォームの両方でプラットフォーム間の表領域トランスポートがサポートされているかどうかと、各プラットフォームのendiannessを確認します。両方のプラットフォームのendiannessが同じ場合、変換は必要ありません。endiannessが異なる場合は、ソース・データベースまたはターゲット・データベースのいずれかで、表領域セットを変換する必要があります。

sales_1およびsales_2を異なるプラットフォームにトランスポートする場合は、各プラットフォームで次の問合せを実行できます。問合せで行が返される場合、そのプラットフォームではプラットフォーム間の表領域トランスポートがサポートされています。

SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
     FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
     WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

ソース・プラットフォームでの問合せの結果は次のとおりです。

PLATFORM_NAME             ENDIAN_FORMAT
------------------------- --------------
Solaris[tm] OE (32-bit)   Big

ターゲット・プラットフォームでの問合せの結果は次のとおりです。

PLATFORM_NAME             ENDIAN_FORMAT
------------------------- --------------
Microsoft Windows NT      Little

この問合せ結果によって、endian形式が異なっているため、表領域セットをトランスポートする場合に変換が必要であることがわかります。

手順2: 自己完結した表領域セットの選択

トランスポータブル・セット内のオブジェクトとセット外のオブジェクトとの間に、論理的または物理的な依存関係が存在することがあります。トランスポートできるのは、自己完結した表領域セットのみです。この場合、自己完結とは、表領域セット内から外部への参照がないことを意味します。次に、自己完結した表領域に違反する例を示します。

表領域セットが自己完結型かどうかを判断するには、オラクル社が提供するパッケージDBMS_TTSTRANSPORT_SET_CHECKプロシージャをコールします。このプロシージャを実行するには、EXECUTE_CATALOG_ROLEロール(最初はSYSに付与されている)を付与されている必要があります。

DBMS_TTSパッケージをコールするときは、自己完結かどうかを調べるトランスポータブル・セットの表領域のリストを指定します。制約を含むかどうかを指定することもできます。厳密または完全な完結であるかを調べる場合は、TTS_FULL_CHECKパラメータをTRUEに設定する必要があります。

厳密または完全な完結のチェックは、トランスポータブル・セットから外部への参照のみではなく、外部からトランスポータブル・セットへの参照も捕捉する必要がある場合に実行します。依存オブジェクトがトランスポータブル・セットに完全に含まれているか、またはトランスポータブル・セットの外部にのみ存在することが必要な場合は、TSPITRを実行します。

たとえば、表tを含んでいるが、その索引iを含んでいない表領域に対してTSPITRを実行すると、トランスポート後に索引とデータの整合性がなくなるため、これは違反になります。完全完結チェックを実行することにより、トランスポータブル・セットからの依存関係またはトランスポータブル・セットへの依存関係がないことが保証されます。 詳細は、『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』のTSPITRの例を参照してください。


注意:

デフォルトでは、トランスポータブル表領域は、完全完結しているかどうかではなく自己完結しているかどうかがチェックされます。 


次の文を使用して、表領域sales_1およびsales_2が自己完結しているかどうかを、参照整合性制約を考慮して(TRUEを指定して)調べます。

EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('sales_1,sales_2', TRUE);

このPL/SQLパッケージをコールした後に、TRANSPORT_SET_VIOLATIONSビューからすべての違反を選択して表示できます。表領域セットが自己完結している場合、このビューは空になります。次の問合せ例は、2つの違反がある場合を示しています。1つ目は表領域セットの境界を超えている外部キー定数dept_fkで、2つ目は表領域セットに部分的に含まれているパーティション表jim.salesです。

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

VIOLATIONS
---------------------------------------------------------------------------
Constraint DEPT_FK between table JIM.EMP in tablespace SALES_1 and table
JIM.DEPT in tablespace OTHER
Partitioned table JIM.SALES is partially contained in the transportable set

これらの違反は、sales_1およびsales_2をトランスポータブルにする前に解決する必要があります。次の手順で説明するように、整合性制約違反を回避するための選択肢の1つとして、整合性制約をエクスポートしない方法があります。

関連項目:

  • DBMS_TTSパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

  • TSPITRにおけるDBMS_TTSパッケージの使用の詳細は、『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』を参照してください。

 

手順3: トランスポータブル表領域セットの生成

この手順は、権限を持つユーザーが実行できます。ただし、トランスポータブル表領域のエクスポート操作を実行するためには、EXP_FULL_DATABASEロールが割り当てられている必要があります。


注意:

この方法でトランスポータブル表領域を生成する場合は、表領域を一時的に読取り専用にする必要があります。この方法が望ましくない場合は、代替方法として、トランスポータブル表領域をバックアップ機能から使用できます。 詳細は、『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』を参照してください。 


トランスポートする表領域セットが自己完結であることを確認した後に、次の処理を実行してトランスポータブル表領域セットを生成します。

  1. コピーするセット内のすべての表領域を読取り専用にします。

    SQL> ALTER TABLESPACE sales_1 READ ONLY;
    
    Tablespace altered.
    
    SQL> ALTER TABLESPACE sales_2 READ ONLY;
    
    Tablespace altered.
    
    
  2. ホスト・システムでデータ・ポンプ・エクスポート・ユーティリティを起動して、トランスポータブル・セットに含める表領域を指定します。

    SQL> HOST
    
    $ EXPDP system/password DUMPFILE=expdat.dmp DIRECTORY=dpump_dir 
            TRANSPORT_TABLESPACES = sales_1,sales_2
    
    

    エクスポート操作のモードを決定するTRANSPORT_TABLESPACESは、常に指定する必要があります。この例では、次のように指定しています。

    • DUMPFILEパラメータでは、作成する構造情報エクスポート・ファイルの名前をexpdat.dmpと指定します。

    • DIRECTORYパラメータでは、オペレーティング・システムまたは自動ストレージ管理のダンプ・ファイルの場所を示すデフォルトのディレクトリ・オブジェクトを指定します。DIRECTORYオブジェクトはデータ・ポンプを起動する前に作成し、ディレクトリに対するREADおよびWRITEオブジェクト権限をPUBLICに付与する必要があります。 CREATE DIRECTORYコマンドの詳細は、『Oracle Database SQLリファレンス』を参照してください。

    • トリガーと索引は、デフォルトでエクスポート操作に含まれています。

    表領域のトランスポート操作を厳密完結チェック付きで実行する場合は、次の例に示すように、TRANSPORT_FULL_CHECKパラメータを使用します。

    EXPDP system/password DUMPFILE=expdat.dmp DIRECTORY = dpump_dir 
          TRANSPORT_TABLESPACES=sales_1,sales_2 TRANSPORT_FULL_CHECK=Y
    
    

    この例では、データ・ポンプ・エクスポート・ユーティリティによって、トランスポータブル・セット内のオブジェクトとトランスポータブル・セット外のオブジェクトとの間に依存性がないことを検証します。トランスポートする表領域セットが自己完結していない場合、エクスポートは失敗し、トランスポータブル・セットが自己完結していないことがわかります。その場合は、手順1に戻ってすべての違反を解決する必要があります。


    注意:

    データ・ポンプ・ユーティリティを使用してエクスポートするのは、表領域のデータ・ディクショナリの構造情報(メタデータ)のみです。実際のデータはアンロードされないため、この操作は大規模な表領域セットの場合でも比較的早く完了します。 


  3. 完了した後、終了してSQL*Plusに戻ります。

    $ EXIT
    

    関連項目:

    データ・ポンプ・ユーティリティの使用方法は、『Oracle Databaseユーティリティ』を参照してください。 

sales_1およびsales_2表領域を異なるプラットフォームにトランスポートする場合に、各プラットフォームのendiannessが異なるため、表領域セットをトランスポートする前に変換を行う場合は、sales_1およびsales_2を構成するデータファイルを変換します。

  1. SQL*Plusからホスト・システムに戻ります。

    SQL> HOST
    
    
  2. Recovery ManagerのCONVERTコマンドを使用して変換を実行します。Recovery Managerを起動し、ターゲット・データベースに接続します。

    $ RMAN TARGET /
    
    Recovery Manager: Release 10.1.0.0.0 
    
    Copyright (c) 1995, 2003, Oracle Corporation.  All rights reserved.
    
    connected to target database: salesdb (DBID=3295731590)
    
    
  3. データファイルを変換して、ソース・プラットフォーム上の一時的な場所に格納します。この例では、一時的な場所はディレクトリ/tempで、このディレクトリはすでに作成されています。変換されたデータファイルの名前は、システムによって割り当てられます。

    RMAN> CONVERT TABLESPACE sales_1,sales_2 
    2> TO PLATFORM 'Microsoft Windows NT'
    3> FORMAT '/temp/%U';
    
    Starting backup at 08-APR-03
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=11 devtype=DISK
    channel ORA_DISK_1: starting datafile conversion
    input datafile fno=00005 name=/u01/oracle/oradata/salesdb/sales_101.dbf
    converted datafile=/temp/data_D-10_I-3295731590_TS-ADMIN_TBS_FNO-5_05ek24v5
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:15
    channel ORA_DISK_1: starting datafile conversion
    input datafile fno=00004 name=/u01/oracle/oradata/salesdb/sales_101.dbf
    converted datafile=/temp/data_D-10_I-3295731590_TS-EXAMPLE_FNO-4_06ek24vl
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:45
    Finished backup at 08-APR-03
    

    関連項目:

    Recovery ManagerのCONVERTコマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 

  4. Recovery Managerを終了します。

    RMAN> exit
    Recovery Manager complete.
    

手順4: 表領域セットのトランスポート

表領域のデータファイルとエクスポート・ファイルの両方を、ターゲット・データベースからアクセスできる場所にトランスポートします。

ソースとターゲットの両方がファイル・システムの場合は、次の機能を使用できます。

ソースとターゲットのいずれかが自動ストレージ管理(ASM)ディスク・グループの場合は、次の機能を使用できます。

endiannessがソース・プラットフォームとは異なるプラットフォームに表領域セットをトランスポートし、表領域セットをまだ変換していない場合は、この手順を実行します。この例では、トランスポートする前に次の手順を完了していると想定しています。

  1. トランスポートするソース表領域を読取り専用に設定する。

  2. エクスポート・ユーティリティを使用して、エクスポート・ファイル(後述の例ではexpdat.dmp)を作成する。

ターゲット・プラットフォーム上で変換するデータファイルは、ターゲット・プラットフォーム上の一時的な場所に移動できます。ただし、変換前か変換後かに関係なく、すべてのデータファイルをターゲット・プラットフォーム上の指定の場所に移動する必要があります。

ここで、次の例に示すように、Recovery Managerを使用してトランスポート済の必要なデータファイルを移動先ホストのendian形式に変換し、その結果を/orahome/dbsに格納します。

RMAN> CONVERT DATAFILE 
2> '/hq/finance/work/tru/tbs_31.f',
3> '/hq/finance/work/tru/tbs_32.f',
4> '/hq/finance/work/tru/tbs_41.f'
5> TO PLATFORM="Solaris[tm] OE (32-bit)"
6> FROM PLATFORM="HP TRu64 UNIX"
7> DB_FILE_NAME_CONVERT=
8> "/hq/finance/work/tru/", "/hq/finance/dbs/tru"
9> PARALLELISM=5;

データファイルは、表領域名ではなくファイル名で識別します。表領域のメタデータがインポートされるまで、ローカル・インスタンスでは対象の表領域名を認識できません。ソース・プラットフォームとターゲット・プラットフォームはオプションです。Recovery Managerでは、データファイルを調べてソース・プラットフォームを判別します。また、デフォルトのターゲット・プラットフォームは、変換を実行するホストのプラットフォームになります。

関連項目:

DBMS_FILE_TRANSFERパッケージを使用して、トランスポートされるファイルとそのメタデータをコピーする方法は、「データベース・サーバーを使用したファイルのコピー」を参照してください。 

手順5: 表領域セットのインポート


注意:

表領域セットを受け取るデータベースの標準ブロック・サイズと異なるブロック・サイズの表領域をトランスポートする場合は、最初にDB_nK_CACHE_SIZE初期化パラメータ・エントリを受取り側データベースのパラメータ・ファイル内に設定する必要があります。

たとえば、ブロック・サイズが8KBの表領域を標準ブロック・サイズが4KBのデータベースにトランスポートする場合は、DB_8K_CACHE_SIZE初期化パラメータ・エントリをパラメータ・ファイルに含める必要があります。このエントリがすでにパラメータ・ファイルに含まれている場合は、ALTER SYSTEM SET文を使用してこのパラメータを設定できます。

DB_nK_CACHE_SIZE初期化パラメータの値の指定方法は、『Oracle Databaseリファレンス』を参照してください。  


この手順は、権限を持つユーザーが実行できます。表領域セットをインポートするには、次のタスクを実行します。

  1. データ・ポンプ・インポート・ユーティリティのimpdpを使用して、次のように表領域のメタデータをインポートします。

    IMPDP system/password DUMPFILE=expdat.dmp DIRECTORY=dpump_dir
       TRANSPORT_DATAFILES=
       /salesdb/sales_101.dbf,
       /salesdb/sales_201.dbf
       REMAP_SCHEMA=(dcranney:smith) REMAP_SCHEMA=(jfee:williams)
    
    

    この例では、次の指定を行います。

    • DUMPFILEパラメータでは、インポートされる表領域のメタデータが含まれるエクスポート・ファイルを指定します。

    • DIRECTORYパラメータでは、ダンプ・ファイルの場所を識別するディレクトリ・オブジェクトを指定します。

    • TRANSPORT_DATAFILESパラメータによって、インポートする表領域が含まれるすべてのデータファイルを識別します。

    • REMAP_SCHEMAパラメータによって、データベース・オブジェクトの所有権を変更します。REMAP_SCHEMAを指定しない場合、すべてのデータベース・オブジェクト(表や索引など)は同じユーザー・スキーマ内でソース・データベースとして作成され、そのユーザーはターゲット・データベース内にすでに存在している必要があります。ユーザーが存在しない場合は、インポート・ユーティリティによってエラーが返されます。この例では、ソース・データベース内でdcranneyが所有している表領域セット内のオブジェクトは、表領域セットをインポートした後のターゲット・データベース内ではsmithの所有となります。同様に、ソース・データベース内でjfeeが所有しているオブジェクトは、ターゲット・データベース内ではwilliamsの所有となります。この場合、ターゲット・データベースにユーザーdcranneyおよびjfeeは存在しなくてもかまいませんが、ユーザーsmithおよびwilliamsは存在する必要があります。

    この文が正常に実行されると、コピーするセット内のすべての表領域は読取り専用モードのままになります。インポート・ログをチェックして、エラーが発生しなかったかどうかを確認してください。

    多数のデータファイルを扱う場合、データファイル名のリストを文の行で指定することは煩雑です。また、文の行制限を超える場合もあります。このような場合には、インポート・パラメータ・ファイルを使用できます。たとえば、次のようにしてデータ・ポンプ・インポート・ユーティリティを起動できます。

    IMPDP system/password PARFILE='par.f'
    
    

    パラメータ・ファイルpar.fの内容は、次のとおりです。

    DIRECTORY=dpump_dir
    DUMPFILE=expdat.dmp
    TRANSPORT_DATAFILES="'/db/sales_jan','/db/sales_feb'"
    REMAP_SCHEMA=dcranney:smith
    REMAP_SCHEMA=jfee:williams
    

    関連項目:

    インポート・ユーティリティの使用方法は、『Oracle Databaseユーティリティ』を参照してください。 

  2. 必要に応じて、次のように表領域を読取り/書込みモードに戻します。

    ALTER TABLESPACE sales_1 READ WRITE;
    ALTER TABLESPACE sales_2 READ WRITE;
    

トランスポータブル表領域の使用: 使用例

次の各項では、トランスポータブル表領域の用途について説明します。

データ・ウェアハウスのためのパーティションのトランスポートと連結

標準的な企業のデータ・ウェアハウスには、1つ以上の大きいファクト表が含まれています。これらのファクト表は、企業データ・ウェアハウスを履歴データベースにするために、日付別にパーティション化されていることがあります。この場合、索引を作成すると、スター・クエリーを高速化できます。履歴データベースから最も古いパーティションを削除するたびにグローバル索引を再作成しなくても済むように、この種の履歴パーティション表についてローカル索引を作成することをお薦めします。

たとえば、1か月分のデータをデータ・ウェアハウスに毎月ロードする場合を考えます。データ・ウェアハウスには、salesという大型のファクト表があり、次の列が含まれています。

CREATE TABLE sales (invoice_no NUMBER,
   sale_year  INT NOT NULL,
   sale_month INT NOT NULL,
   sale_day   INT NOT NULL)
   PARTITION BY RANGE (sale_year, sale_month, sale_day)
     (partition jan98 VALUES LESS THAN (1998, 2, 1),
      partition feb98 VALUES LESS THAN (1998, 3, 1),
      partition mar98 VALUES LESS THAN (1998, 4, 1),
      partition apr98 VALUES LESS THAN (1998, 5, 1),
      partition may98 VALUES LESS THAN (1998, 6, 1),
      partition jun98 VALUES LESS THAN (1998, 7, 1));

次のようにして、ローカルの非同一キー索引を作成します。

CREATE INDEX sales_index ON sales(invoice_no) LOCAL;

最初は、すべてのパーティションは空で、同じデフォルト表領域にあります。パーティションを毎月1つ作成し、パーティション表salesに連結する必要があります。

現在が1998年7月で、7月分の売上データをパーティション表にロードするとします。ステージング・データベース内で、新しい表領域ts_julを作成します。また、その表領域内で、sales表と正確に同じ列タイプを持つ表jul_salesも作成します。表jul_salesは、CREATE TABLE ... AS SELECT文を使用して作成できます。jul_salesを作成して移入した後に、sales表内のローカル索引と同じ列に索引を付けて、この表の索引jul_sale_indexを作成することもできます。索引の作成後に、表領域ts_julをデータ・ウェアハウスにトランスポートします。

データ・ウェアハウスでは、7月分の売上データ用のsales表にパーティションを追加します。これにより、ローカルの非同一キー索引用にも1つのパーティションが作成されます。

ALTER TABLE sales ADD PARTITION jul98 VALUES LESS THAN (1998, 8, 1);

トランスポートされた表jul_salesを新しいパーティションに変換して、表salesに連結します。

ALTER TABLE sales EXCHANGE PARTITION jul98 WITH TABLE jul_sales 
   INCLUDING INDEXES
   WITHOUT VALIDATION;

この文により、新しいデータがパーティション表に連結され、7月分の売上データが新しいパーティションjul98に格納されます。また、索引jul_sale_indexsales表のローカル索引のパーティションに変換されます。この文では、構造情報を操作するだけであり、データベースのポインタを切り替えれば済むので、結果は即時に返されます。新しいパーティション内のデータが旧パーティション内のデータとオーバーラップしないことがわかっている場合は、WITHOUT VALIDATION句を指定してください。この句を指定しないと、新しいパーティションの範囲を検証するために、そこに含まれる新しいデータがすべて検査されます。

sales表のすべてのパーティションが同じステージング・データベースから取り込まれる場合(ステージング・データベースが破壊されることはありません)、変換文は常に成功します。ただし、一般に、パーティション表のデータが異なるデータベースから取り込まれる場合は、変換操作が失敗する可能性があります。たとえば、salesjan98パーティションが同じステージング・データベースから取り込まれていない場合は、前述の変換操作が失敗して次のエラーが返されることがあります。

ORA-19728: 表JUL_SALESとパーティションJAN98(表SALES)間で、データ・オブジェクト番号が競合してい
ます。

この競合を解決するには、次の文を発行して、競合しているパーティションを移動します。

ALTER TABLE sales MOVE PARTITION jan98;

次に、変換操作を再試行してください。

交換が成功した後は、jul_salesjul_sale_indexを削除しても安全です(どちらも空になっています)。これで、7月分の売上データはデータ・ウェアハウスに正常にロードされたことになります。

構造化データのCDでの公開

トランスポータブル表領域を使用すると、構造化データをCDで公開できます。データ・プロバイダは、公開するデータを含む表領域をロードし、トランスポータブル・セットを生成し、トランスポータブル・セットをCDにコピーできます。これにより、このCDを配布できます。

顧客は、このCDを受け取って既存のデータベースにCDの内容を追加できます。CDからディスク記憶域にデータファイルをコピーする必要はありません。たとえば、Windows NTマシンのDドライブがCDドライブであるとします。次のようにして、データファイルcatalog.fとエクスポート・ファイルexpdat.dmpを含むトランスポータブル・セットをインポートできます。

IMPDP system/password DUMPFILE=expdat.dmp DIRECTORY=dpump_dir
   TRANSPORT_DATAFILES='D:¥catalog.f'  

CDは、データベースの稼働中に取り出すことができます。この場合、その表領域への後続の問合せでは、CD上のデータファイルをオープンできないことを示すエラーが返されます。ただし、このデータベースの他の部分への操作は影響を受けません。CDをドライブに戻すと、表領域は再び読込み可能になります。

CDを取り出すのは、読取り専用表領域のデータファイルを削除するのと同じことです。データベースを停止して再起動すると、削除されたデータファイルが見つからず、データベースをオープンできないことを示すメッセージが表示されます(初期化パラメータREAD_ONLY_OPEN_DELAYEDTRUEに設定していない場合)。READ_ONLY_OPEN_DELAYEDTRUEに設定されている場合は、トランスポートされた表領域を問い合せるときにのみ、このファイルが読み込まれます。したがって、CDから表領域をトランスポートする場合は、そのCDがデータベースに永続的に連結されないかぎり、常にREAD_ONLY_OPEN_DELAYED初期化パラメータをTRUEに設定しておく必要があります。

複数データベースで同じ表領域を読取り専用でマウントする方法

トランスポータブル表領域を使用すると、複数のデータベースで1つの表領域を読取り専用でマウントできます。これにより、データを別々のディスクに複製しなくても、異なるデータベースで同じデータを共有できます。表領域のデータファイルは、どのデータベースからもアクセス可能にする必要があります。データベースの破損を回避するために、表領域はマウント先のすべてのデータベース内で読取り専用のままにしてください。

次に、複数のデータベースで同じ表領域を読取り専用でマウントする方法を2つ示します。

ディスクを複数のコンピュータからアクセス可能にするには、いくつかの方法があります。クラスタ・ファイル・システムまたはRAWディスクのいずれかを使用できます。ネットワーク・ファイル・システム(NFS)を使用することも可能です。ただし、NFSの停止中にユーザーが共有表領域を問い合せると、NFS操作がタイムアウトになるまでデータベースが停止することがあります。

後で、一部のデータベースから読取り専用表領域を削除できます。読取り専用表領域を削除しても、表領域のデータファイルは変更されません。したがって、削除操作によって表領域が破損することはありません。表領域をマウントしているデータベースが1つしかない場合を除き、表領域は読取り/書込み可能にしないでください。

トランスポータブル表領域を使用した履歴データのアーカイブ

トランスポータブル表領域セットは、任意のOracle Databaseにインポートできる自己完結したファイル・セットであるため、この章で説明するトランスポータブル表領域の手順を使用して、企業データ・ウェアハウスに旧データまたは履歴データをアーカイブできます。

関連項目:

詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。 

トランスポータブル表領域を使用したTSPITRの実行

トランスポータブル表領域を使用して、表領域のTSPITRを実行できます。

関連項目:

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

データベースのトランスポータブル表領域を使用したプラットフォーム間の移動

トランスポータブル表領域機能を使用して異なるプラットフォーム間でデータベースを移動するには、移動先プラットフォームに新規データベースを作成して、すべてのユーザー表領域をトランスポートします。 詳細は、『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』を参照してください。

SYSTEM表領域はトランスポートできません。したがって、SYSTEM表領域に依存する順序、PL/SQLパッケージなどのオブジェクトはトランスポートできません。このため、移動先のデータベースにこれらのオブジェクトを手動で作成するか、またはデータ・ポンプを使用して、トランスポータブル表領域で移動できないオブジェクトをトランスポートする必要があります。

表領域のデータ・ディクショナリ・ビュー

次のデータ・ディクショナリ・ビューおよび動的パフォーマンス・ビューは、データベースの表領域に関して役立つ情報を提供します。

ビュー  説明 

V$TABLESPACE  

制御ファイルに記述されているすべての表領域の名前と番号 

V$ENCRYPTED_TABLESPACES 

暗号化されたすべての表領域の名前と暗号化アルゴリズム 

DBA_TABLESPACESUSER_TABLESPACES 

すべての(またはユーザーがアクセス可能な)表領域の説明 

DBA_TABLESPACE_GROUPS  

表領域グループとそのグループに属する表領域 

DBA_SEGMENTSUSER_SEGMENTS 

すべての(またはユーザーがアクセス可能な)表領域内のセグメントに関する情報 

DBA_EXTENTSUSER_EXTENTS 

すべての(またはユーザーがアクセス可能な)表領域内のデータ・エクステントに関する情報 

DBA_FREE_SPACEUSER_FREE_SPACE 

すべての(またはユーザーがアクセス可能な)表領域内の使用可能エクステントに関する情報 

DBA_TEMP_FREE_SPACE 

各一時表領域の割当て済領域の合計と空き領域 

V$DATAFILE  

所有する表領域の表領域番号など、すべてのデータファイルに関する情報 

V$TEMPFILE  

所有する表領域の表領域番号など、すべての一時ファイルに関する情報 

DBA_DATA_FILES  

表領域に属するファイル(データファイル) 

DBA_TEMP_FILES  

一時表領域に属するファイル(一時ファイル) 

V$TEMP_EXTENT_MAP  

ローカル管理の一時表領域すべての全エクステントに関する情報  

V$TEMP_EXTENT_POOL  

ローカル管理の一時表領域の場合、キャッシュされ、各インスタンスで使用されている一時領域の状態 

V$TEMP_SPACE_HEADER  

各一時ファイルの使用済領域/空き領域 

DBA_USERS  

すべてのユーザーのデフォルト表領域と一時表領域 

DBA_TS_QUOTAS  

すべてのユーザーの表領域割当て制限  

V$SORT_SEGMENT  

特定インスタンス内のすべてのソート・セグメントに関する情報。このビューは、表領域がTEMPORARYタイプの場合にのみ更新されます。  

V$TEMPSEG_USAGE  

一時または永続表領域のユーザーに使用される一時(ソート)セグメントの説明 

次に示すのは、これらのビューのごく一部の使用例です。

関連項目:

これらのビューの詳細は、『Oracle Databaseリファレンス』を参照してください。 

例1: 表領域とデフォルト記憶域パラメータの表示

データベースに含まれるすべての表領域の名前とデフォルト記憶域パラメータをすべて表示するには、DBA_TABLESPACESビューに対して次の問合せを使用します。

SELECT TABLESPACE_NAME "TABLESPACE",
   INITIAL_EXTENT "INITIAL_EXT",
   NEXT_EXTENT "NEXT_EXT",
   MIN_EXTENTS "MIN_EXT",
   MAX_EXTENTS "MAX_EXT",
   PCT_INCREASE
   FROM DBA_TABLESPACES;

TABLESPACE  INITIAL_EXT  NEXT_EXT  MIN_EXT   MAX_EXT    PCT_INCREASE  
----------  -----------  --------  -------   -------    ------------ 
RBS             1048576   1048576        2        40               0
SYSTEM           106496    106496        1        99               1
TEMP             106496    106496        1        99               0
TESTTBS           57344     16384        2        10               1
USERS             57344     57344        1        99               1

例2: データファイルとデータベースの対応する表領域の表示

データファイルの名前、サイズおよびデータベースの対応する表領域を表示するには、DBA_DATA_FILESビューに対して次の問合せを入力します。

SELECT  FILE_NAME, BLOCKS, TABLESPACE_NAME
   FROM DBA_DATA_FILES;

FILE_NAME                                      BLOCKS  TABLESPACE_NAME
------------                               ----------  -------------------
/U02/ORACLE/IDDB3/DBF/RBS01.DBF                  1536  RBS
/U02/ORACLE/IDDB3/DBF/SYSTEM01.DBF               6586  SYSTEM
/U02/ORACLE/IDDB3/DBF/TEMP01.DBF                 6400  TEMP
/U02/ORACLE/IDDB3/DBF/TESTTBS01.DBF              6400  TESTTBS
/U02/ORACLE/IDDB3/DBF/USERS01.DBF                 384  USERS

例3: 各表領域の空き領域(エクステント)の統計の表示

データベース内の各表領域について、使用可能エクステントと結合アクティビティの統計を生成するには、次の問合せを入力します。

SELECT TABLESPACE_NAME "TABLESPACE", FILE_ID,
   COUNT(*)    "PIECES",
   MAX(blocks) "MAXIMUM",
   MIN(blocks) "MINIMUM",
   AVG(blocks) "AVERAGE",
   SUM(blocks) "TOTAL"
   FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME, FILE_ID;

TABLESPACE    FILE_ID  PIECES   MAXIMUM    MINIMUM  AVERAGE    TOTAL
----------    -------  ------   -------    -------  -------   ------
RBS                 2       1       955        955      955      955
SYSTEM              1       1       119        119      119      119
TEMP                4       1      6399       6399     6399     6399
TESTTBS             5       5      6364          3     1278     6390
USERS               3       1       363        363      363      363

PIECESは表領域ファイル内の空き領域エクステント数を示し、MAXIMUMおよびMINIMUMはデータベース・ブロック内の領域で連続する最大領域と最小領域を示します。また、AVERAGEは空き領域があるエクステントの平均ブロック・サイズを示し、TOTALは各表領域ファイル内の空き領域のブロック数を示します。新しいオブジェクトを作成しようとしているとき、またはセグメントを拡張予定であり、表領域に十分な領域があることを確かめるときに、この問合せを使用します。


戻る 次へ
Oracle
Copyright © 2001, 2008, Oracle Corporation.
All Rights Reserved.
目次
目次
索引
索引