表領域は、関連する論理構造をグループ化するデータベース記憶域です。データベースのデータファイルは表領域に格納されます。
関連項目:
Oracle Database概要
Oracle Databaseサーバーによって作成および管理されるデータファイルと一時ファイルの作成方法は、「Oracle Managed Filesの使用」を参照してください
ガイドラインに従って表領域に対して作業できます。
データベース操作を実行する際に複数の表領域を使用すると、システムの柔軟性が向上します。
データベースに複数の表領域があるときには、次のことが可能です。
ユーザー・データをデータ・ディクショナリ・データから分離し、I/Oの競合を減らす。
あるアプリケーションのデータを別のアプリケーションのデータから分離し、表領域をオフライン化する必要が生じた場合に、複数のアプリケーションが影響を受けないようにする。
I/Oの競合を低減するために、異なるディスク・ドライブ上に異なる表領域のデータファイルを配置する。
別の表領域をオンライン状態に維持しながら、個々の表領域をオフライン化して、全体の可用性を高める。
高い更新アクティビティ、読取り専用アクティビティ、一時セグメント記憶域など、異なるタイプのデータベース利用のために異なる表領域を確保することによって、表領域利用を最適化する。
表領域のバックアップを個別に作成する。
一部のオペレーティング・システムでは、同時にオープン可能なファイルの数に制限が設けられています。このような制限によって、同時にオンライン化可能な表領域の数に影響が出ることがあります。そのため、使用しているオペレーティング・システムの制限を超えないように、表領域を効率よく計画する必要があります。表領域はデータベースの要件を満たすために必要な数だけ作成し、構成するファイル数もできるかぎり少なくなるようにしてください。表領域のサイズを大きくする必要がある場合は、小さいデータファイルを多数作成するのではなく、1つまたは2つの大きなデータファイルを追加するか、または自動拡張を使用可能にしてデータファイルを作成します。
これらの要素を考慮に入れてデータを再検討し、データベース設計に必要となる表領域の数を決定してください。
表、クラスタ、マテリアライズド・ビュー、索引およびその他のオブジェクトを作成しようとするユーザーには、そのオブジェクトを作成するための権限と、そのオブジェクトのセグメントを格納する表領域の割当て制限(領域の許容または制限)を付与します。
注意:
パッケージ、プロシージャ、ファンクションなどのPL/SQLオブジェクトの場合、ユーザーにはオブジェクトを作成する権限のみが必要です。これらのPL/SQLオブジェクトを作成するための、明示的な表領域割当ては必要ありません。
関連項目:
ユーザーの作成方法および表領域割当て制限の割当て方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
表領域を作成して、表と索引などの関連する論理構造をグループ化します。データベースのデータファイルは表領域に格納されます。
新しい表領域を作成するには、SQL文CREATE TABLESPACE
またはCREATE TEMPORARY TABLESPACE
を使用します。表領域を作成するには、CREATE TABLESPACE
システム権限が必要です。
表領域を作成する場合、表領域を格納するデータベースを作成する必要があります。どのデータベースでも、重要な表領域はSYSTEM
表領域で、ここにはデータ・ディクショナリやシステム・ロールバック・セグメントなど、データベース・サーバー機能の基本となる情報が格納されます。SYSTEM
表領域は、データベース作成時に最初に作成される表領域です。これは他のすべての表領域と同様に管理されますが、より高いレベルの権限が必要であり、また一部制限事項があります。たとえば、SYSTEM
表領域の名前変更、削除、オフライン化は実行できません。
SYSAUX
表領域は、データベースの作成時に必ず作成され、SYSTEM
表領域の補助表領域として機能します。これには、様々なOracle製品および機能で使用されるスキーマが格納されるため、各製品で独自の表領域を持つ必要がなくなります。SYSTEM
表領域と同様に、SYSAUX
表領域を管理するためにはより高いレベルのセキュリティが必要で、この表領域の名前変更や削除はできません。SYSAUX
表領域の管理については、「SYSAUX表領域の管理」を参照してください。
表領域を作成する手順はオペレーティング・システムによって異なりますが、必ず最初に、オペレーティング・システムを使用して、データファイルが割り当てられるディレクトリ構造を作成する必要があります。ほとんどのオペレーティング・システムでは、新しい表領域を作成するとき、またはデータファイルを加えて既存の表領域を変更するときに、データファイルのサイズと完全なファイル名を指定します。新しい表領域を作成するとき、または既存の表領域を変更するときは、いずれの場合も、データベースは、指定されたとおりにデータファイルを自動的に割り当てて、フォーマットします。
また、CREATE UNDO TABLESPACE
文を使用して、UNDOレコードを格納するために特別に設計されたUNDO表領域と呼ばれる特殊なタイプの表領域を作成できます。これらは、データベースが生成するレコードで、リカバリや読込み一貫性のために、またはROLLBACK
文の要求を受けて、データベースの変更をロールバックまたは取り消す際に使用されます。UNDO表領域の作成および管理の詳細は、「UNDOの管理」を参照してください。
ALTER TABLESPACE
またはALTER DATABASE
文を使用して、表領域を変更できます。そのためには、ALTER TABLESPACE
またはALTER DATABASE
システム権限が必要です。
関連項目:
データベース作成時に作成される表領域の詳細は、「Oracle Databaseの作成および構成」および使用しているオペレーティング・システムのOracle Databaseインストレーション・ガイドを参照してください。
CREATE TABLESPACE
、CREATE TEMPORARY TABLESPACE
、ALTER TABLESPACE
およびALTER DATABASE
の各文の構文とセマンティクスの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
非標準のブロック・サイズを持つ表領域の作成に必要な初期化パラメータの詳細は、「データベース・ブロック・サイズの指定」を参照してください
ローカル管理表領域では、各データファイルに格納されるビットマップを使用してエクステントを管理します。
ローカル管理表領域では、その表領域内のすべてのエクステント情報がビットマップを使用して追跡されます。
ローカル管理表領域には、次の利点があります。
領域操作が高速かつ同時に実行されます。領域の割当てと割当て解除によって、ローカル管理のリソース(ヘッダー・ファイルに格納されているビットマップ)が変更されます。
パフォーマンスが向上します。
ローカル管理の一時表領域ではUNDOやREDOが生成されないため、読取り可能なスタンバイ・データベースを使用できます。
AUTOALLOCATE
句を指定すると、データベースで適切なエクステント・サイズが自動的に選択されるため、領域割当てが簡素化されます。
必要な情報はファイル・ヘッダーとビットマップ・ブロックに格納されるため、データ・ディクショナリに対するユーザーの依存性が低下します。
ローカル管理表領域では、使用可能エクステントを結合する必要はありません。
SYSTEM
表領域も含めて、すべての表領域をローカルに管理できます。
DBMS_SPACE_ADMIN
パッケージによって、ローカル管理表領域のメンテナンス手順が提供されます。
関連項目:
「ローカル管理のSYSTEM表領域の作成」、「ローカル管理表領域へのSYSTEM表領域の移行」および「ローカル管理表領域の問題の診断と修復」
単一データファイルまたは一時ファイルのみ格納される、別のタイプのローカル管理表領域を作成する方法の詳細は、「bigfile表領域」を参照してください。
DBMS_SPACE_ADMIN
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
ローカル管理表領域を作成するには、CREATE TABLESPACE
文のEXTENT MANAGEMENT
句にLOCAL
を指定します。
これは新しい永続表領域に対するデフォルトですが、AUTOALLOCATE
句またはUNIFORM
句を指定するには、EXTENT
MANAGEMENT
LOCAL
句を指定する必要があります。AUTOALLOCATE
句(デフォルト)を指定してデータベースでエクステントを自動的に管理するか、または表領域を特定サイズ(UNIFORM
)の均一エクステントで管理するかを指定できます。
様々なサイズのオブジェクトが表領域に含まれ、異なるエクステント・サイズの多数のエクステントが必要と予測される場合は、AUTOALLOCATE
を選択してください。領域の割当てと割当て解除を厳密に制御しなくてもよい場合は、AUTOALLOCATE
を選択すると表領域の管理作業が簡素化されます。この設定では、ある程度の領域が無駄になるという短所もありますが、ほとんどの場合、Oracle Databaseによって領域が管理されるという利点の方が重要です。
未使用領域の厳密な制御が必要で、オブジェクトに割り当てられる領域、エクステントの数とサイズを正確に予測できる場合は、UNIFORM
を選択してください。この設定によって、表領域から使用できない領域がなくなります。
エクステント管理のタイプを明示的に指定しない場合は、Oracle Databaseによってエクステント管理が次のように判断されます。
CREATE TABLESPACE
文にDEFAULT
記憶域句を指定しない場合、データベースでは自動割当てのローカル管理表領域が作成されます。
CREATE TABLESPACE
文にDEFAULT
記憶域句を指定した場合、データベースでは次のことが考慮されます。
MINIMUM EXTENT
句を指定した場合、MINIMUM EXTENT
、INITIAL
およびNEXT
の値が等しく、PCTINCREASE
の値が0 (ゼロ)かどうかが評価されます。その場合、データベースにより、エクステント・サイズ = INITIAL
で均一なローカル管理表領域が作成されます。MINIMUM EXTENT
、INITIAL
およびNEXT
パラメータの値が等しくない場合、またはPCTINCREASE
が0(ゼロ)でない場合は、指定したエクステント記憶域パラメータが無視され、自動割当てのローカル管理表領域が作成されます。
MINIMUM EXTENT
句を指定しなかった場合、データベースは、INITIAL
およびNEXT
の記憶域値が等しく、PCTINCREASE
が0(ゼロ)であるかどうかのみを評価します。その場合、表領域はローカル管理で均一です。それ以外の場合は、ローカル管理の表領域が作成され、自動的に割り当てられます。
たとえば、次の文は、ローカル管理表領域lmtbsb
を作成し、AUTOALLOCATE
を指定しています。
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
AUTOALLOCATE
を指定すると、表領域はシステム管理になり、最小エクステント・サイズは64KBとなります。
AUTOALLOCATE
のかわりにUNIFORM
を指定すると、表領域は均一サイズのエクステントで管理されます。このサイズは、UNIFORM
のSIZE
句で指定できます。SIZE
を指定しないと、デフォルト・サイズは1MBになります。
次の例は、均一の128Kエクステントを持つ表領域を作成します。(2Kブロックを使用するデータベースでは、各エクステントは64のデータベース・ブロックに相当します。)それぞれの128Kエクステントは、このファイルのエクステント・ビットマップ内のビットとして表されます。
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以上の場合は、最小で5ブロック(64KBに切り上げられる)のエクステントが作成され、セグメント領域管理が管理されます。
SYSTEM
表領域に自動セグメント領域管理を指定することはできません。
自動セグメント領域管理を使用するローカル管理表領域は、単一ファイル表領域、つまり、bigfile表領域(「bigfile表領域」を参照)としても作成できます。
bigfile表領域を使用してデータベースの記憶域容量を増やし、多数のデータファイルと一時ファイルを管理する負荷を減らすことができます。
bigfile表領域は、単一で非常に大きい(最大40億ブロック)データファイルを持つ可能性がある表領域です。これに対して、従来のsmallfile表領域には複数のデータファイルを格納できますが、各データファイルは大きくありません。
bigfile表領域の利点は、次のとおりです。
8000ブロックを持つbigfile表領域には、32TBのデータファイルを格納できます。32000ブロックを持つbigfile表領域には、128TBのデータファイルを格納できます。1つのOracle Databaseのデータファイルの最大数は制限されています(通常は64000ファイル)。したがって、bigfile表領域によって、Oracle Databaseの記憶域容量が大幅に増加します。
bigfile表領域を使用すると、データベースに必要なデータファイルの数を減らすことができます。また、別の利点として、CREATE DATABASE
文とCREATE CONTROLFILE
文のDB_FILES
初期化パラメータとMAXDATAFILES
パラメータを調整すると、データファイル情報に必要なSGA領域の量と制御ファイルのサイズを削減できます。
bigfile表領域によるデータファイルの透過性によって、データベース管理が簡素化されます。ALTER
TABLESPACE
文のSQL構文を使用すると、基礎となる各データファイルではなく表領域で操作を実行できます。
bigfile表領域は、自動セグメント領域管理を指定したローカル管理表領域でのみサポートされます。ただし、ローカル管理のUNDO表領域、一時表領域およびSYSTEM
表領域の3つは例外です。
注意:
bigfile表領域は、ストライプ化やRAID、および動的に拡張可能な論理ボリュームをサポートする、自動ストレージ管理(Oracle ASM)などの論理ボリューム・マネージャとともに使用することを目的にしています。
パラレル問合せ実行およびRMANのバックアップ・パラレル化で問題が生じる可能性があるため、ストライプ化をサポートしていないシステムにはbigfile表領域を作成しないでください。
表領域の容量が制限される場合があるため、大規模なファイル・サイズをサポートしていないプラットフォームでbigfile表領域を使用することはお薦めしません。サポートされているファイルの最大サイズの詳細は、ご使用のオペレーティング・システム固有のドキュメントを参照してください。
bigfile表領域を作成するには、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表領域はデフォルトで作成されます。
データベース作成時にデフォルトの表領域タイプをBIGFILE
に設定しておきながら、従来の表領域(smallfile)を作成する場合は、CREATE
SMALLFILE
TABLESPACE
文を指定すると、デフォルトの表領域タイプよりも作成する表領域が優先されます。
表領域の作成時に、表領域に作成されるすべての表をデフォルトで圧縮するように指定できます。
圧縮された表領域を作成する際に、DEFAULT
キーワードを使用し、その後に表の作成時に使用する圧縮タイプ句を1つ指定して、表圧縮のタイプを指定します。
次の文は、表領域内に作成されるすべての文で、特に指定がないかぎり高度な行圧縮が使用されることを示しています。
CREATE TABLESPACE ... DEFAULT ROW STORE COMPRESS ADVANCED ... ;
デフォルトの表領域圧縮指定は、その表領域に表を作成するときに上書きできます。
関連項目:
表圧縮の様々なタイプの詳細は、「表圧縮の使用」を参照してください
デフォルトの圧縮タイプで表領域を作成するときに使用する正確な構文は、『Oracle Database SQL言語リファレンス』を参照してください。
永続表領域を暗号化して機密データを保護できます。
暗号化表領域では、主にデータベース以外の手段による未承認のアクセスからデータを保護します。たとえば、あるOracle Databaseから別のOracle Databaseに移動するため、または格納用のオフサイト施設に移動するために暗号化された表領域をバックアップ・メディアに書き込むと、表領域は暗号化されたままになります。
また、暗号化表領域では、データベースのセキュリティ機能を回避して、オペレーティング・システムのファイル・システムから直接データベース・ファイルにアクセスしようとするユーザーからデータを保護します。表領域の暗号化はアプリケーションに対して完全に透過的であるため、アプリケーションの変更は不要です。
表領域の暗号化によって、すべてのセキュリティ問題に対処できるわけではありません。たとえば、データベース内からのアクセスは制御できません。暗号化された表領域に格納されているオブジェクトに対する権限が付与されたユーザーは、追加のパスワードやキーを指定せずにそれらのオブジェクトにアクセスできます。
表領域を暗号化すると、すべての表領域ブロックが暗号化されます。暗号化は、表、クラスタ、索引、LOB(BASICFILE
とSECUREFILE
)、表パーティション、索引パーティションなどを含むすべてのセグメント・タイプに対してサポートされています。
注意:
暗号化された表領域に格納されているSECUREFILE
LOBに対してLOB暗号化を使用する必要はありません。
最大限のセキュリティを確保するために、暗号化された表領域のデータは、UNDO表領域、REDOログおよび一時表領域に書き込まれる場合は自動的に暗号化されます。暗号化されたUNDO表領域や一時表領域を明示的に作成する必要はなく、実際、これらの表領域タイプに暗号化を指定することはできません。
異なる表領域に別のパーティションがあるパーティション表およびパーティション索引表の場合は、同じ表または索引で、暗号化された表領域と暗号化されていない表領域の両方を使用できます。
表領域暗号化はOracle Databaseの透過的データ暗号化機能を使用しますが、この機能を使用するには、データベースのマスター暗号化鍵を保存するためにキーストアを作成する必要があります。暗号化された表領域を作成する場合、および暗号化データを格納または取得する場合は、キーストアがオープンしている必要があります。キーストアは、オープンするとすべてのセッションで使用可能になり、明示的にクローズするか、データベースが停止されるまではオープンしたままになります。
透過的データ暗号化では、次に示すAdvanced Encryption Standard (AES)アルゴリズムやTriple Data Encryption Standard (3DES)アルゴリズムなど、業界標準の暗号化アルゴリズムがサポートされています。
AES256
AES192
AES128
3DES168
暗号化キーの長さはアルゴリズム名で示されています。たとえば、AES128アルゴリズムでは128ビットのキーが使用されます。表領域の作成時に使用するアルゴリズムを指定し、異なる表領域で別々のアルゴリズムを使用できます。理論上は、キーの長さが長くなるほどセキュリティが強化されますが、その分、CPUオーバーヘッドがかかります。アルゴリズムをCREATE
TABLESPACE
分で指定しなかった場合、AES128がデフォルトです。表領域の暗号化にはディスク領域オーバーヘッドは発生しません。
制限事項
暗号化された表領域の制限事項は、次のとおりです。
既存の表領域は、ALTER
TABLESPACE
文で暗号化できません。ただし、データ・ポンプまたはSQL文(CREATE
TABLE
AS
SELECT
やALTER
TABLE
MOVE
など)を使用して、既存の表データを暗号化された表領域に移動できます。
暗号化された表領域は、別のデータベースにトランスポートする際に制限を受けます。「データのトランスポートに関する一般的な制限事項」を参照してください。
暗号化された表領域を使用してデータベースをリカバリする際(SHUTDOWN
ABORT
またはデータベース・インスタンスを停止させる致命的なエラーの後など)には、リカバリ・プロセスがデータ・ブロックおよびREDOを復号化できるように、データベースをマウントしてからデータベースをオープンするまでにキーストアをオープンする必要があります。
また、透過的データ暗号化に関する一般的な制限事項は、『Oracle Database Advanced Securityガイド』を参照してください。
関連項目:
透過的データ暗号化の詳細およびキーストアを作成してオープンする手順は、『Oracle Database 2日でセキュリティ・ガイド』を参照してください。
表領域全体を暗号化する代替方法は、「機密データを格納する列の暗号化」を参照してください
Oracle Real Application Clusters環境でのキーストアの使用方法は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。
CREATE
TABLESPACE
文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
暗号化された表領域を作成して、未承認のアクセスに対してデータを保護できます。
表領域を暗号化するには、COMPATIBLE
初期化パラメータを11.1.0
以上に設定した状態でデータベースをオープンする必要があります。表領域を作成できるユーザーは、暗号化された表領域も作成できます。
例
暗号化された表領域を作成するには、次の手順を実行します。
ENCRYPTION
句を指定してCREATE TABLESPACE
文を実行します。
次の文では、デフォルトの暗号化アルゴリズムを使用して暗号化された表領域を作成しています。
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);
DBA_TABLESPACES
およびUSER_TABLESPACES
データ・ディクショナリ・ビューを問い合せて、暗号化された表領域に関する情報を取得できます。
DBA_TABLESPACES
とUSER_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 AES256
一時表領域によって、メモリー内に収まらない複数のソート操作の同時実行性が向上します。また、一時表領域によって、ソート中の領域管理操作の効率も向上します。
一時表領域には、セッションの間のみ存続する一時データが格納されます。一時表領域を使用すると、メモリーに格納できない複数のソート操作の同時実行性を改善し、ソート時の領域管理操作の効率を改善できます。
一時表領域は、次の情報を格納するために使用します。
中間ソート結果
一時表と一時索引
一時LOB
一時Bツリー
特定のインスタンスのソート操作はすべて、一時表領域内の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$TEMPSEG_USAGE
ビューでは、そのセグメント内の現行のソート・ユーザーが識別されます。
一時表領域を使用するソート操作が完了しても、ソート・セグメントに割り当てられたエクステントの割当ては解除されず、エクステントには、使用可能マークおよび再利用可能マークが付けられます。DBA_TEMP_FREE_SPACE
ビューには、各一時表領域の割当済領域の合計と空き領域が表示されます。詳細は、「一時表領域の領域使用情報の表示」を参照してください。大量の未使用領域があるローカル管理の一時表領域は手動で縮小できます。詳細は、「ローカル管理の一時表領域の縮小」を参照してください。
関連項目:
ユーザーの作成方法および一時表領域の割当て方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
デフォルト一時表領域の詳細は、『Oracle Database概要』を参照してください。
V$SORT_SEGMENT
、V$TEMPSEG_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;
すべての一時表領域は均一サイズのローカル管理エクステントを使用して作成されるため、一時表領域の場合、エクステント管理句はオプションです。EXTENT SIZE
句でエクステント・サイズを指定した場合は、それが使用されます。指定しない場合は、Oracle Databaseで表領域サイズおよびファイル・サイズを使用してデフォルトのエクステント・サイズを決定します。
注意:
オペレーティング・システムによっては、一時ファイルのブロックが実際にアクセスされるまで、一時ファイル用の領域が割り当てられない場合があります。領域の割当ての遅延のため、一時ファイルの作成およびサイズ変更が速くなります。ただし、後で一時ファイルが使用されるときに、十分なディスク領域を使用可能にする必要があります。使用しているシステムでデータベースがこのように一時ファイルを割り当てているかどうかは、オペレーティング・システムのマニュアルを参照して判断してください。
通常の表領域と同様に、単一ファイル(大型ファイル)の一時表領域を作成できます。
bigfile一時表領域を作成するには、次のようにします。
CREATE BIGFILE TEMPORARY TABLESPACE
文を実行して、単一の一時ファイル表領域を作成します。
bigfile表領域の詳細は、「bigfile表領域の作成」および「bigfile表領域の変更」の項を参照してください。ただし、データファイルのかわりに一時ファイルを使用する一時表領域を作成する点を考慮に入れてください。
DBA_TEMP_FREE_SPACE
ディクショナリ・ビューには、各一時表領域の領域使用に関する情報が表示されます。
この情報には、割当て済領域と空き領域が含まれます。これらの統計を表示するには、次の文を使用してこのビューを問い合せます。
SELECT * from DBA_TEMP_FREE_SPACE; TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE ----------------------------------- --------------- --------------- ---------- TEMP 250609664 250609664 249561088
一時表領域グループは、データベースに対してデフォルトの一時表領域として割り当てられる表領域グループです。
ユーザーは、一時表領域グループを使用して複数の表領域から一時領域を消費できます。単一の一時表領域ではなく表領域グループを使用することによって、ソート(特に多数のパーティションがある表でのソート)の結果を保持するのに1つの表領域では不十分な場合に発生する問題を回避できます。パラレル実行のサーバーで表領域グループを使用すると、1回のパラレル操作で複数の一時表領域を使用できます。
表領域グループには、次の特性があります。
これには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
には表領域lmtemp2
とlmtemp3
が含まれます。
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
にはlmtemp
とlmtemp2
が含まれ、group1
にはtmtemp3
のみが含まれます。
次の文を使用すると、表領域をグループから削除できます。
ALTER TABLESPACE lmtemp3 TABLESPACE GROUP '';
これによって、表領域lmtemp3
はどのグループにも属さなくなります。さらに、group1
に属するメンバーがなくなるため、group1
は暗黙的に削除されます。
ALTER DATABASE...DEFAULT
TEMPORARY
TABLESPACE
文を使用して、表領域グループをデータベースのデフォルト一時表領域として割り当てます。
次に例を示します。
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE group2;
これで、明示的に一時表領域が割り当てられていないユーザーは表領域lmtemp
とlmtemp2
を使用することになります。
表領域グループがデフォルト一時表領域に指定されている場合、そのグループのメンバーの表領域は削除できません。メンバーの表領域を削除するには、最初にその表領域を表領域グループから削除する必要があります。同様に、単一の一時表領域がデフォルト一時表領域に指定されている場合は、その一時表領域は削除できません。
表領域の作成または変更時に、インメモリー列ストアに対して表領域を有効にできます。インメモリー列ストアに対して表領域が有効になると、表領域内のすべての表はデフォルトでインメモリー列ストアに対して有効になります。
注意:
この機能は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。
インメモリー列ストアは、システム・グローバル領域(SGA)のオプション部分で、高速スキャン用に最適化された表、表パーティション、その他のデータベース・オブジェクトのコピーが格納されます。インメモリー列ストアでは、表データがSGAに行ではなく列ごとに格納されます。
DB_BLOCK_SIZE
初期化パラメータで指定された標準のデータベース・ブロック・サイズとは異なるブロック・サイズの表領域を作成できます。この機能によって、ブロック・サイズの異なる表領域をデータベース間でトランスポートできます。
データベース標準のブロック・サイズとは異なるブロック・サイズを持つ表領域を作成するには、次のようにします。
CREATE TABLESPACE
文のBLOCKSIZE
句を使用します。
BLOCKSIZE
句を正しく実行するためには、DB_CACHE_SIZE
と、少なくとも1つのDB_nK_CACHE_SIZE
初期化パラメータをすでに設定している必要があります。さらに、BLOCKSIZE
句で指定する整数を1つのDB_nK_CACHE_SIZE
パラメータの設定に対応付ける必要があります。冗長な指定になりますが、BLOCKSIZE
をDB_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;
関連項目:
DB_CACHE_SIZE
およびDB_nK_CACHE_SIZE
のパラメータ設定の詳細は、「バッファ・キャッシュ初期化パラメータの設定」を参照してください
一部のデータベース操作については、データベースでREDOレコードを生成するかどうかを制御できます。
REDOを使用しないと、メディア・リカバリはできません。ただし、REDOの生成を抑制するとパフォーマンスが改善されるため、簡単にリカバリできる操作に適している場合があります。たとえば、CREATE TABLE...AS SELECT
文は、データベース障害やインスタンス障害が発生した場合に操作を繰り返すことができます。
表領域内のオブジェクトに対してこのような操作を実行するときにREDOを抑制するには、次のようにします。
CREATE TABLESPACE
文でNOLOGGING
句を指定します。
この句を指定しないか、かわりにLOGGING
を指定した場合は、表領域内のオブジェクトに変更が行われるとREDOが生成されます。一時セグメントや一時表領域の場合は、ロギング属性に関係なくREDOは生成されません。
表領域レベルで指定するロギング属性は、その表領域内で作成されるオブジェクトのデフォルト属性になります。このデフォルトのロギング属性は、CREATE TABLE
文を使用するなど、スキーマ・オブジェクト・レベルでLOGGING
やNOLOGGING
を指定することで上書きできます。
スタンバイ・データベースがある場合は、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
システム権限が必要です。
関連項目:
表領域内の各データファイルの可用性を変更する方法の詳細は、「データファイルの可用性の変更」を参照してください
表領域をオフラインにすると、通常アクセスができなくなります。
表領域は、次のような場合にオフライン化できます。
データベースの一部のみを使用できないようにし、残りの部分には正常にアクセスできるようにする場合
表領域のバックアップをオフラインで実行する場合(ただし、表領域はオンラインでも、使用中でもバックアップ可能です)
アプリケーションの更新またはメンテナンスを行う間、アプリケーションとその表グループを一時的にアクセス不可にする場合
表領域のデータファイルの名前の変更または再配置をする場合
詳細は、「データファイルの名前変更と再配置」を参照してください。
表領域をオフライン化するには、次のようにします。
OFFLINE
句を指定してALTER TABLESPACE
文を実行します。
表領域をオフライン化すると、その関連ファイルがすべてオフライン化されます。
次の表領域はオフライン化できません。
SYSTEM
UNDO表領域
一時表領域
表領域をオフライン化する前に、その表領域がデフォルト表領域としてすでに割り当てられているユーザーの表領域割当ての変更を考慮してください。このようなユーザーは表領域がオフラインの間その中のオブジェクトにアクセスできないため、表領域割当ての変更をお薦めします。
ALTER TABLESPACE...OFFLINE文では、次のパラメータを指定できます。
句 | 説明 |
---|---|
|
表領域のどのデータファイルにもエラー条件が存在していない場合は、この表領域を通常の方法でオフライン化できます。書込みエラーが発生していると、現時点では表領域のデータファイルをオフライン化することはできません。 |
|
表領域の1つまたは複数のデータファイルについてエラー条件が存在している場合でも、表領域を一時的にオフライン化できます。 オフラインになっているファイルがないときに表領域を一時的にオフライン化する場合は、表領域をオンラインに戻す前にメディア・リカバリを実行する必要はありません。しかし、表領域の1つまたは複数のファイルが書込みエラーのためにオフラインになっており、この表領域を一時的にオフライン化する場合は、表領域をオンラインに戻す前にリカバリする必要があります。 |
|
データベースによりデータファイル上のチェックポイントがチェックされることなく、表領域をただちにオフラインにできます。 |
注意:
表領域をオフライン化する必要がある場合は、可能なかぎりNORMAL
句(デフォルト)を使用してください。この設定によって、不完全リカバリの後にALTER DATABASE OPEN RESETLOGS
文を使用してREDOログ順序をリセットした場合でも、表領域をオンラインに戻すためのリカバリが不要になることが保証されます。
TEMPORARY
は、表領域を通常の方法でオフライン化できないときのみ指定してください。この場合、エラーのためにオフライン化されたファイルのみをリカバリする必要があり、その後に表領域をオンライン化できます。IMMEDIATE
は、NORMAL設定とTEMPORARY設定を試した後にのみ指定してください。
次の例では、users
表領域を通常の方法でオフライン化しています。
ALTER TABLESPACE users OFFLINE NORMAL;
データベースがオープンされている場合は、いつでもOracle Database内の任意の表領域をオンライン化できます。通常、表領域は、データベース・ユーザーがその中のデータを使用できるようにオンラインになっています。
表領域をオンライン化するには、次のようにします。
ONLINE
句を指定してALTER TABLESPACE
文を実行します。
オンライン化しようとする表領域が、正常に(ALTER TABLESPACE OFFLINE
文のNORMAL
句を使用して)オフライン化されていない場合は、最初にメディア・リカバリをしないかぎりオンライン化できません。メディア・リカバリを実行しないと、エラーが返されて表領域はオフラインのままになります。
たとえば、次の文はusers
表領域をオンラインにします。
ALTER TABLESPACE users ONLINE;
関連項目:
メディア・リカバリの実行方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
表領域は読取り専用モードに設定できます。これにより、それに格納されているデータの更新が禁止されます。
表領域を読取り専用にすると、表領域のデータファイルに対して書込み操作ができなくなります。
読取り専用表領域の主な目的は、データベース内の大規模かつ静的部分のバックアップおよびリカバリを実行しなくて済むようにすることです。また、読取り専用表領域は、ユーザーが履歴データを変更できないように履歴データを完全に保護する手段でもあります。表領域を読取り専用にすると、その表領域内のすべての表はユーザーの更新権限レベルに関係なく更新できません。
注意:
表領域は、それが作成されたデータベース内でしかオンライン化できないため、読取り専用にすること自体でアーカイブ要件やデータ公開要件を満たすことはできません。ただし、「データベース間での表領域のトランスポート」で説明するように、トランスポータブル表領域機能を使用すると、これらの要件を満たすことができます。
表や索引などの項目は読取り専用表領域から削除できますが、読取り専用表領域内のオブジェクトは作成または変更できません。ALTER TABLE...ADD
またはALTER TABLE...MODIFY
など、データ・ディクショナリ内のファイル記述を更新する文は実行できますが、新しい記述は表領域を読取り/書込み用にするまでは使用できません。
読取り専用表領域は、他のデータベースにトランスポートすることもできます。読取り専用表領域は更新できないため、CD-ROMまたはWrite Once-Read Many(WORM)デバイスに格納できます。
表領域を読取り専用にするには、READ ONLY
句を指定してALTER TABLESPACE
文を使用します。
すべての表領域は、最初は読取り/書込み用として作成されます。そのためには、ALTER TABLESPACE
またはMANAGE TABLESPACE
システム権限が必要です。
表領域を読取り専用にするには、あらかじめ次の条件を満たす必要があります。
表領域は必ずオンラインにする。これにより、表領域に適用する必要のあるUNDO情報がないことが保証されます。
表領域をアクティブなUNDO表領域またはSYSTEM
表領域にしない。
表領域を現行のオンライン・バックアップに含めない(オンライン・バックアップは、終了時に表領域内にあるすべてのデータファイルのヘッダー・ファイルを更新するためです)。
表領域を一時表領域にできない。
表領域を読取り専用に変更するには、次のようにします。
ALTER TABLESPACE
文でREAD ONLY
句を使用します。
たとえば、次の文はflights
表領域を読取り専用にします。
ALTER TABLESPACE flights READ ONLY;
読取り専用表領域のデータにアクセスする際のパフォーマンスを向上させるため、表領域を読取り専用にする直前に、表領域内の表のブロックすべてにアクセスする問合せを発行することをお薦めします。各表に対してSELECT COUNT (*)
などの単純な問合せを実行しておくと、それ以降、表領域のデータ・ブロックに最も効率的にアクセスできるようになります。これによって、最後にブロックを変更したトランザクションの状態をデータベースが確認する必要がなくなるからです。
データベースのトランザクション処理中に、ALTER TABLESPACE...READ ONLY
文を発行できます。この文が発行されると、表領域は一時的に読取り専用モードになり、ALTER
コマンドは、既存のトランザクションがコミットまたはロールバックにより完了するまで待機します。表領域に対するそれ以後のDML操作は許可されず、DML文でそれ以降の変更をしようとすると、エラーが返されます。
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
またはMANAGE TABLESPACE
システム権限が必要です。
表領域を書込み操作可能に変更するには、次のようにします。
ALTER TABLESPACE
文でREAD WRITE
キーワードを使用します。
表領域を読取り/書込み用にするには、前提条件として、表領域のみでなく、そのすべてのデータファイルをオンライン化する必要があります。データファイルをオンライン化するには、ALTER DATABASE
文のDATAFILE...ONLINE
句を使用します。データファイルの現行の状態を確認するには、V$DATAFILE
ビューを使用します。
たとえば、次の文はflights
表領域を書込み可能にします。
ALTER TABLESPACE flights READ WRITE;
読取り専用表領域を書込み可能にすると、データファイルの制御ファイル・エントリが更新されるため、読取り専用バージョンのデータファイルをリカバリの開始点として使用できます。
読取り専用表領域は、CD-ROMまたはWORM (ライト・ワンス・リード・メニー)デバイスに作成できます。
CD-ROMまたはWORMデバイスに読取り専用表領域を作成するには、次のようにします。
RENAME DATAFILE
句を指定したALTER TABLESPACE
文を使用します。データファイルの名前を変更すると、制御ファイルに記述されているこれらのファイルの名前も変更されます。読取り専用表領域のデータファイルのオープンを、アクセスが試行されるまで遅延できます。
大規模データベースのほとんどが、アクセス速度の遅いデバイスや階層形式の記憶デバイス上にある読取り専用表領域に格納されている場合は、READ_ONLY_OPEN_DELAYED
初期化パラメータをTRUE
に設定することを検討する必要があります。これにより、読取り専用表領域内のデータファイルは、そこに格納されたデータの読取り試行時に初めてアクセスされるため、主にデータベースのオープンなど、特定の操作が高速になります。
READ_ONLY_OPEN_DELAYED=TRUE
に設定すると、次のような副次的な影響があります。
オープン時には、読取り専用の欠落ファイルや不良ファイルが検出されません。アクセスしようとしたときに初めて検出されます。
ALTER SYSTEM CHECK DATAFILES
では、読取り専用ファイルはチェックされません。
ALTER TABLESPACE...ONLINE
およびALTER DATABASE
DATAFILE...ONLINE
では、読取り専用ファイルはチェックされません。最初のアクセス時にのみチェックされます。
V$RECOVER_FILE
、V$BACKUP
およびV$DATAFILE_HEADER
は、読取り専用ファイルにアクセスしません。読取り専用ファイルは結果リスト上に「DELAYED OPEN
」というエラーで示され、他の列の値は0(ゼロ)になります。
V$DATAFILE
は読取り専用ファイルにアクセスしません。読取り専用ファイルにはサイズ「0」がリストされます。
V$RECOVERY_LOG
は読取り専用ファイルにアクセスしません。リカバリに必要な可能性があるログは、リストに追加されません。
ALTER DATABASE NOARCHIVELOG
は読取り専用ファイルにはアクセスしません。リカバリが必要な読取り専用ファイルがあっても続行されます。
注意:
RECOVER DATABASE
およびALTER DATABASE OPEN RESETLOGS
は、パラメータ値に関係なく、すべての読取り専用データファイルに引き続きアクセスします。これらの操作で読取り専用ファイルへのアクセスを回避する場合は、該当ファイルをオフライン化します。
バックアップ制御ファイルを使用すると、一部のファイルの読取り専用状態が不正確になる場合があります。これにより、これらの操作の一部で予期しない結果が返されることがあります。この状況には注意が必要です。
データファイルと一時ファイルの追加などの作業を行って、表領域を変更およびメンテナンスできます。
表領域のサイズを増やすには、表領域のデータファイルのサイズを増やすか、またはデータファイルを追加します。
詳細は、「データファイルのサイズ変更」および「データファイルの作成および表領域への追加」を参照してください。
また、データファイルおよびbigfile表領域に対して自動ファイル拡張(AUTOEXTEND
)を有効にできます。詳細は、「データファイルの自動拡張機能の使用可能および使用禁止」を参照してください。
ローカル管理表領域に対して、データファイルの追加、可用性の変更、読取り専用または読取り/書込みへの変更、名前の変更、または自動拡張の有効化/無効化を行うことができます。
ローカル管理表領域をローカル管理の一時表領域に変更したり、セグメント領域の管理方法を変更することはできません。ローカル管理表領域では、使用可能エクステントを結合する必要はありません。ただし、次のような操作の場合は、ALTER TABLESPACE
文をローカル管理表領域に対して使用できます。
データファイルを追加する場合。次に例を示します。
ALTER TABLESPACE lmtbsb ADD DATAFILE '/u02/oracle/data/lmtbsb02.dbf' SIZE 1M;
表領域の可用性(ONLINE
/OFFLINE
)を変更する場合。「表領域の可用性の変更」を参照してください。
表領域を読取り専用または読取り/書込み用にする場合。「読取り専用表領域の使用」を参照してください。
データファイルの名前を変更したり、表領域内のデータファイルのサイズの自動拡張を使用可能または使用禁止にする場合。「データファイルおよび一時ファイルの管理」を参照してください。
bigfile表領域のサイズを変更または自動拡張できます。
ALTER TABLESPACE
文の次の2つの句は、bigfile表領域使用時におけるデータファイルの透過性をサポートします。
RESIZE
: RESIZE
句を使用すると、bigfile表領域内の単一データファイルを参照せずに、そのデータファイルのサイズを絶対サイズに変更できます。次に例を示します。
ALTER TABLESPACE bigtbs RESIZE 80G;
AUTOEXTEND
(ADD
DATAFILE
句の範囲外で使用):
bigfile表領域では、ADD
DATAFILE
句の範囲外でAUTOEXTEND
句を使用できます。次に例を示します。
ALTER TABLESPACE bigtbs AUTOEXTEND ON NEXT 20G;
ローカル管理の一時表領域を変更して、一時ファイルの追加、一時ファイルのオフライン化または一時ファイルのオンライン化を行うことができます。
注意:
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
文を使用して、既存の一時ファイルの自動拡張を使用可能または使用禁止にしたり、一時ファイル名を変更することもできます。必要な構文は、『Oracle Database SQL言語リファレンス』を参照してください。
注意:
一時ファイルの名前を変更するには、一時ファイルをオフライン化し、オペレーティング・システムのコマンドを使用して、その一時ファイルを名前変更または再配置します。次に、ALTER
DATABASE
RENAME
FILE
コマンドを使用してデータベースの制御ファイルを更新します。
ローカル管理の一時表領域を縮小して、未使用領域を解放できます。
データベースで大規模なソート操作を実行すると、一時表領域が増大し、ディスク領域の容量が大幅に占有される場合があります。ソート操作が完了しても余分になった領域は解放されず、使用可能マークと再利用可能マークが付けられるのみです。したがって、単一の大規模なソート操作を実行すると、ソート操作の完了後に大量の割当て済一時領域が未使用のままになります。このため、データベースでは、ローカル管理の一時表領域を縮小して未使用領域を解放できます。
一時表領域を縮小するには、次にようにします。
ALTER TABLESPACE
文のSHRINK SPACE
句を使用します。
一時表領域の特定の一時ファイルを縮小するには、次のようにします。
ALTER TABLESPACE
文のSHRINK TEMPFILE
句を使用します。
縮小すると、表領域または一時ファイルの他の属性を維持しながら可能なかぎり空き領域を解放します。オプションのKEEP
句は、表領域または一時ファイルの最小サイズを定義します。
縮小はオンライン操作です。これは、ユーザー・セッションは必要に応じてソート・エクステントの割当てを継続でき、すでに実行中の問合せは影響を受けないことを意味します。
次の例では、20MBのサイズを確保しながら、ローカル管理の一時表領域のlmtmp1
を縮小しています。
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
ビューには名前が変更された表領域がユーザーのデフォルト表領域として表示されます。
この文の操作では、次の点に注意してください。
名前を変更する表領域がSYSTEM
表領域またはSYSAUX
表領域の場合、名前は変更されず、エラーが発生します。
表領域内のデータファイルがオフラインの場合、または表領域がオフラインの場合、その表領域の名前は変更されず、エラーが発生します。
表領域が読取り専用の場合、データファイル・ヘッダーは更新されません。これは破損とはみなされませんが、データファイル・ヘッダーの名前が変更されなかったことを示すメッセージがアラート・ログに書き込まれます。データ・ディクショナリと制御ファイルは更新されます。
表領域がデフォルト一時表領域の場合は、データベース・プロパティ表内の対応するエントリが更新され、DATABASE_PROPERTIES
ビューに新しい名前が表示されます。
表領域がUNDO表領域で、次の条件が満たされると、サーバー・パラメータ・ファイル(SPFILE
)の表領域名は新しい表領域名に変更されます。
サーバー・パラメータ・ファイルを使用して、インスタンスを起動した場合。
表領域名がインスタンスに対してUNDO_TABLESPACE
で指定されている場合。
従来の初期化パラメータ・ファイル(PFILE
)を使用している場合は、初期化パラメータ・ファイルを手動で変更する必要があることを示すメッセージがアラート・ログに書き込まれます。
表領域とその内容が不要になった場合は、その表領域と内容(表領域に含まれるセグメント)をデータベースから削除できます。
表領域を削除するには、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
表領域は、データベースの作成時に、SYSTEM
表領域の補助表領域としてインストールされます。これまで個別に表領域を作成して使用していた一部のデータベースのコンポーネントは、SYSAUX
表領域に含まれるようになりました。
SYSAUX
表領域が使用不可能になった場合でも、データベースのコア機能は実行可能です。SYSAUX
表領域を使用しているデータベース機能はエラーとなるか、機能が制限される可能性があります。
SYSAUX
表領域の占有データを監視できます。
SYSAUX
表領域の登録済占有データのリストは、「SYSAUX表領域の概要」を参照してください。これらのコンポーネントはSYSAUX
表領域を使用し、SYSAUX
表領域を占有する方法がインストール時に提供されます。
SYSAUX
表領域の占有データを監視するには、次のようにします。
V$SYSAUX_OCCUPANTS
ビューを問い合せます。
このビューには、SYSAUX
表領域の占有データに関する次の情報がリスト表示されます。
占有データの名前
占有データの説明
スキーマ名
移動プロシージャ
現行の領域使用
ビュー情報は、占有データ別にメンテナンスされます。
関連項目:
V$SYSAUX_OCCUPANTS
ビューの詳細は、『Oracle Databaseリファレンス』を参照してください
V$SYSAUX_OCCUPANTS
ビューで、SYSAUX
表領域の各占有データの移動プロシージャを使用できます。
コンポーネントのインストール時には、コンポーネントをSYSAUX
に常駐させないように指定することもできます。また、後でコンポーネントを指定の表領域に再配置する必要が生じた場合、そのコンポーネントについては、V$SYSAUX_OCCUPANTS
ビューで指定した移動プロシージャを使用して移動を実行できます。
移動プロシージャを使用すると、コンポーネントを他の表領域からSYSAUX
表領域に移動することもできます。
SYSAUX
表領域は、いくつかのデータベース・コンポーネントによって占有され、その合計サイズはそれらのコンポーネントが消費する領域によって決定します。同様に、コンポーネントが消費する領域は、使用される機能およびデータベース・ワークロードの性質によって決定します。
SYSAUX
表領域を最も大きく占有するのは自動ワークロード・リポジトリ(AWR)です。AWRが消費する領域は、特定の時間におけるシステム内でのアクティブなセッションの数、スナップショット間隔、履歴データ保存期間など、いくつかの要因によって決定します。同時にアクティブなセッションが平均10ある標準的なシステムでは、AWRデータ用として約200から300MBの領域が必要になる場合があります。
次の表に、システム構成と予測される負荷に基づいてSYSAUX
表領域のサイズを設定するためのガイドラインを示します。
パラメータ/推奨設定 | 小型 | 中型 | 大型 |
---|---|---|---|
CPU数 |
2 |
8 |
32 |
同時実行セッションの数 |
10 |
20 |
100 |
ユーザー・オブジェクト数: 表および索引 |
500 |
5,000 |
50,000 |
デフォルト構成で安定した状態での予測 |
500MB |
2GB |
5GB |
AWRのサイズを制御するには、スナップショット間隔と履歴データ保存期間を変更します。AWRのスナップショット間隔と保存期間の管理の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。
SYSAUX
表領域のもう1つの主要な占有データは、埋込みのOracle Enterprise Manager Cloud Controlリポジトリです。このリポジトリはCloud Controlで使用され、そのメタデータが格納されます。このリポジトリのサイズは、データベース・アクティビティ、およびリポジトリに格納された構成関連情報によって異なります。
他のデータベース・コンポーネントが消費するSYSAUX
表領域の領域サイズは、関連する機能(Oracle TextやOracle Streamsなど)を使用中の場合のみ大きくなります。このような機能を使用していない場合、これらのコンポーネントはSYSAUX
表領域のサイズに大きく影響しません。
Oracle Databaseにはローカル管理表領域の問題を修正する手段が用意されています。
Oracle Databaseには、DBMS_SPACE_ADMIN
パッケージが組み込まれています。このパッケージは、ローカル管理表領域の問題の診断と修復に使用するサポートの集まりです。
DBMS_SPACE_ADMINパッケージのプロシージャ
次の表に、DBMS_SPACE_ADMIN
パッケージに含まれるプロシージャを示します。各プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
プロシージャ | 説明 |
---|---|
|
自動セグメント領域管理が使用可能な表領域内に作成されたセグメントの整合性を検証します。 手動セグメント領域管理が指定されている表領域には、 |
|
自動セグメント領域管理が使用可能な表領域の整合性を検証します。 手動セグメント領域管理が指定されている表領域には、 |
|
空の表か、または表のパーティションと依存オブジェクトからセグメントを削除します。 |
|
セグメント作成の遅延およびその依存オブジェクトがある表および表のパーティションのセグメントをマテリアライズします。 |
|
セグメントを破損または有効としてマークし、適切なエラーのリカバリを可能にします。 |
|
現在破損としてマークされているセグメントを削除します(領域の再生なし)。 |
|
特定のセグメントのセグメント・ヘッダーおよびビットマップ・ブロックを、 |
|
セグメントのエクステント・マップの一貫性を検証します。 |
|
適切なDBA範囲(エクステント)にビットマップ内で使用可能マークまたは使用済マークを付けます。 |
|
移行が停止した表領域内のセグメントの状態を修正します。 |
|
ローカル管理表領域を、ディクショナリ管理表領域に移行します。 |
|
ディクショナリ管理表領域をローカル管理表領域に移行します。 |
|
適切なビットマップを再作成します。 |
|
特定の表領域の割当て制限を再作成します。 |
|
ビットマップを指定の保存先に再配置します。 |
|
表領域内のセグメントについて、ビットマップとエクステント・マップが同期していることを検証します。 |
次の使用例では、DBMS_SPACE_ADMIN
パッケージを使用して問題を診断し、解決できる代表的な状況について説明します。
注意:
前述の一部のプロシージャは、正しく使用しないとデータが消失してリカバリ不能になる場合があります。これらのプロシージャに不明な点がある場合は、Oracleサポート・サービスと共同で作業を行ってください。
関連項目:
DBMS_SPACE_ADMIN
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
TABLESPACE_VERIFY
プロシージャの使用時に、ビットマップ内で「空き」マークが付いているブロックがセグメントに割り当てられても、セグメント間のオーバーラップがレポートされていないことが検出された場合。
この使用例では、次のタスクを実行してください。
SEGMENT_DUMP
プロシージャをコールして、管理者がそのセグメントに割り当てた範囲をダンプします。 TABLESPACE_EXTENT_MAKE_USED
オプションを指定してTABLESPACE_FIX_BITMAPS
プロシージャをコールし、領域に使用済のマークを付けます。TABLESPACE_REBUILD_QUOTAS
をコールして割当て制限を再作成します。ビットマップに「空き」マークが付いたセグメント・ブロックがあるため、セグメントを削除できない場合。このセグメントには、自動的に「破損」マークが付けられます。
この使用例では、次のタスクを実行してください。
SEGMENT_VERIFY_EXTENTS_GLOBAL
オプションを指定してSEGMENT_VERIFY
プロシージャをコールします。オーバーラップがレポートされない場合は、手順2から5までを実行します。 SEGMENT_DUMP
プロシージャをコールして、そのセグメントに割り当てられたデータ・ブロック・アドレス範囲をダンプします。TABLESPACE_EXTENT_MAKE_FREE
オプションを指定してTABLESPACE_FIX_BITMAPS
プロシージャをコールし、領域に「空き」のマークを付けます。SEGMENT_DROP_CORRUPT
をコールしてSEG$
エントリを削除します。TABLESPACE_REBUILD_QUOTAS
をコールして割当て制限を再作成します。TABLESPACE_VERIFY
プロシージャで、いくつかオーバーラップがレポートされる場合。前の内部エラーに基づいて、一部の実データを削除する必要があります。
この場合、表t1
などの削除するオブジェクトを選択してから、次のタスクを実行します。
t1
がオーバーラップしているすべてのオブジェクトのリストを作成します。t1
を削除します。必要に応じて、SEGMENT_DROP_CORRUPT
プロシージャをコールしてフォローアップします。t1
がオーバーラップしていたすべてのオブジェクトに対して、SEGMENT_VERIFY
プロシージャをコールします。必要に応じて、TABLESPACE_FIX_BITMAPS
プロシージャをコールして該当するビットマップに使用済を示すマークを付けます。TABLESPACE_VERIFY
プロシージャを再度実行し、問題が解決したかどうかを検証します。ビットマップ・ブロックの集合にメディア破損がある場合。
この使用例では、次のタスクを実行してください。
TABLESPACE_REBUILD_BITMAPS
プロシージャをコールします。TABLESPACE_REBUILD_QUOTAS
をコールして割当て制限を再作成します。TABLESPACE_VERIFY
プロシージャをコールして、ビットマップの整合性を検証します。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');
割当て単位のサイズを指定する場合は、必ずシステムによって計算される単位サイズの因数にします。
DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL
プロシージャを使用して、SYSTEM
表領域をディクショナリ管理からローカル管理に移行します。
移行を実行する前に、次の条件を満たす必要があります。
データベースのデフォルト一時表領域がSYSTEM
ではないこと。
ディクショナリ管理表領域にロールバック・セグメントがないこと。
ローカル管理表領域に1つ以上のオンライン・ロールバック・セグメントがあるか、自動UNDO管理を使用している場合は、UNDO表領域がオンラインになっていること。
UNDO領域を含む表領域(つまり、ロールバック・セグメントを含む表領域またはUNDO表領域)を除き、すべての表領域が読取り専用モードになっていること。
SYSAUX
表領域がオフラインであること。
システムが制限モードになっていること。
データベースのコールド・バックアップがあること。
コールド・バックアップを除き、前述のすべての条件はTABLESPACE_MIGRATE_TO_LOCAL
プロシージャにより施行されます。
次の文は、この移行を実行します。
SQL> EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('SYSTEM');
注意:
SYSTEM
表領域をローカル管理に移行すると、データベース内のディクショナリ管理表領域を読取り/書込み用にできなくなります。ディクショナリ管理表領域を読取り/書込みモードで使用する必要がある場合は、これらの表領域をローカル管理に移行してから、SYSTEM
表領域を移行することをお薦めします。
Oracle Databaseのデータ・ディクショナリ・ビューを使用して、表領域に関する情報を問い合せることができます。
次のデータ・ディクショナリ・ビューおよび動的パフォーマンス・ビューは、データベースの表領域に関して役立つ情報を提供します。
ビュー | 説明 |
---|---|
|
制御ファイルに記述されているすべての表領域の名前と番号。 |
|
暗号化されたすべての表領域の名前と暗号化アルゴリズム。 |
|
すべての(またはユーザーがアクセス可能な)表領域の説明。 |
|
表領域グループとそのグループに属する表領域。 |
|
すべての(またはユーザーがアクセス可能な)表領域内のセグメントに関する情報。 |
|
すべての(またはユーザーがアクセス可能な)表領域内のデータ・エクステントに関する情報。 |
|
すべての(またはユーザーがアクセス可能な)表領域内の使用可能エクステントに関する情報。 |
|
各一時表領域の割当て済領域の合計と空き領域。 |
|
所有する表領域の表領域番号など、すべてのデータファイルに関する情報。 |
|
所有する表領域の表領域番号など、すべての一時ファイルに関する情報。 |
|
表領域に属するファイル(データファイル)。 |
|
一時表領域に属するファイル(一時ファイル)。 |
|
ローカル管理の一時表領域すべての全エクステントに関する情報。 |
|
ローカル管理の一時表領域の場合、キャッシュされ、各インスタンスで使用されている一時領域の状態。 |
|
各一時ファイルの使用済領域/空き領域。 |
|
すべてのユーザーのデフォルト表領域と一時表領域。 |
|
すべてのユーザーの表領域割当て制限。 |
|
特定インスタンス内のすべてのソート・セグメントに関する情報。このビューは、表領域が |
|
一時または永続表領域のユーザーに使用される一時(ソート)セグメントの説明。 |
次に示すのは、これらのビューのごく一部の使用例です。
関連項目:
これらのビューの詳細は、『Oracle Databaseリファレンス』を参照してください
DBA_TABLESPACES
ビューを問い合せて、名前およびデフォルト記憶域パラメータをリスト表示できます。
データベースに含まれるすべての表領域の名前とデフォルト記憶域パラメータをすべて表示するには、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
DBA_DATA_FILES
ビューを問い合せて、名前、サイズおよびデータベースの対応する表領域をリスト表示できます。
データファイルの名前、サイズおよびデータベースの対応する表領域を表示するには、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
DBA_FREE_SPACE
ビューを問い合せて、データベースの各表領域の空きエクステントおよび結合アクティビティに関する統計を表示できます。
データベース内の各表領域について、使用可能エクステントと結合アクティビティの統計を生成するには、次の問合せを入力します。
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
は各表領域ファイル内の空き領域のブロック数を示します。新しいオブジェクトを作成しようとしているとき、またはセグメントを拡張予定であり、表領域に十分な領域があることを確かめるときに、この問合せを使用します。