ヘッダーをスキップ

Oracle Database SQL言語リファレンス
11g リリース1(11.1)

E05750-03
目次
目次
索引
索引

戻る 次へ

15 SQL文: CREATE LIBRARY〜CREATE SPFILE

この章では、次のSQL文について説明します。


CREATE LIBRARY

用途

CREATE LIBRARY文を使用すると、オペレーティング・システム共有ライブラリに関連するスキーマ・オブジェクトを作成できます。このスキーマ・オブジェクトの名前は、CREATE FUNCTIONまたはCREATE PROCEDURE文のcall_specで使用できます。また、パッケージまたはタイプにおけるファンクションまたはプロシージャを宣言する際にも使用できます。これによって、SQLおよびPL/SQLは、3GLファンクションおよびプロシージャに対してコールできます。

参照:

ファンクションおよびプロシージャの詳細は、「CREATE FUNCTION」および『Oracle Database PL/SQL言語リファレンス』を参照してください。 

前提条件

自分のスキーマ内にライブラリを作成する場合は、CREATE LIBRARYシステム権限が必要です。他のユーザーのスキーマ内にライブラリを作成する場合は、CREATE ANY LIBRARYシステム権限が必要です。ライブラリに格納されているプロシージャおよびファンクションを使用する場合は、そのライブラリに対するEXECUTEオブジェクト権限が必要です。

CREATE LIBRARY文は、共有ライブラリおよび動的リンクをサポートするプラットフォーム上でのみ有効です。

構文

create_library::=

画像の説明

セマンティクス

OR REPLACE

OR REPLACEを指定すると、既存のライブラリを再作成できます。この句を指定した場合、既存のライブラリに付与されているスキーマ・オブジェクト権限を削除、再作成および再付与しなくても、ライブラリの定義を変更できます。

再定義したライブラリに対して権限を付与されていたユーザーは、権限を再付与されなくてもライブラリにアクセスできます。

libname

作成するライブラリの名前を指定します。call_specでファンクションまたはプロシージャを宣言するときは、この名前を指定します。

filename

一重引用符で囲まれた文字列リテラルを指定します。文字列には、オペレーティング・システムの共有ライブラリの名前となるパスまたはファイル名を指定します。

filenameは、CREATE LIBRARY文の実行中は解析されません。ライブラリ・ファイルの存在は、そのファイルからルーチンが実行されるまでチェックされません。

AGENT句

AGENT句を指定すると、サーバーではなく、データベース・リンクから外部プロシージャを実行できます。外部プロシージャの実行には、agent_dblinkに指定したデータベース・リンクが使用されます。この句を指定しない場合、サーバーのデフォルト・エージェント(extproc)が、外部プロシージャを実行します。

ライブラリの作成例:

次の文は、ライブラリext_libを作成します。

CREATE LIBRARY ext_lib AS '/OR/lib/ext_lib.so';
/

次の文は、ライブラリext_libを再作成します。

CREATE OR REPLACE LIBRARY ext_lib IS '/OR/newlib/ext_lib.so';
/
外部プロシージャ・エージェントの指定例:

次の例は、ライブラリapp_libを作成し、パブリック・データベースsales.hq.acme.comから外部プロシージャを起動することを指定します。

CREATE LIBRARY app_lib as '${ORACLE_HOME}/lib/app_lib.so'
   AGENT 'sales.hq.acme.example.com';
/

参照

データベース・リンクの作成方法については、「パブリック・データベース・リンクの定義例:」を参照してください。 


CREATE MATERIALIZED VIEW

用途

CREATE MATERIALIZED VIEW文を使用すると、マテリアライズド・ビューを作成できます。マテリアライズド・ビューは、問合せ結果を含むデータベース・オブジェクトです。問合せのFROM句には、表、ビューおよびその他のマテリアライズド・ビューを指定できます。これらのオブジェクトをあわせて、マスター表(レプリケーション用語)またはディテール表(データ・ウェアハウス用語)といいます。このマニュアルでは、「マスター表」を使用します。マスター表が格納されているデータベースをマスター・データベースといいます。


注意:

下位互換性を保つために、MATERIALIZED VIEWのかわりにキーワードSNAPSHOTもサポートされています。 


レプリケーションでは、マテリアライズド・ビューを使用すると、ローカル・ノード上にあるリモート・データのコピーのメンテナンスができます。コピーは、アドバンスト・レプリケーション機能によって更新可能となりますが、この機能がない場合は読取り専用です。マテリアライズド・ビューのデータを、表またはビューと同じように選択することができます。レプリケーション環境では、通常作成されるマテリアライズド・ビューは、主キーROWIDオブジェクトおよび副問合せのマテリアライズド・ビューです。

参照:

レプリケーションのサポートに使用するマテリアライズド・ビューの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。 

データ・ウェアハウスでは、通常作成されるマテリアライズド・ビューは、マテリアライズド集計ビュー単一表マテリアライズド集計ビューおよびマテリアライズド結合ビューです。3つのマテリアライズド・ビューは、クエリー・リライトで使用できます。クエリー・リライトとは、マスター表に関して記述したユーザー要求を、1つ以上のマテリアライズド・ビューを含む同等の要求に変換するための最適化手法です。

参照:

  • 「ALTER MATERIALIZED VIEW」

  • データ・ウェアハウスのサポートに使用するマテリアライズド・ビューの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

 

前提条件

マテリアライズド・ビューの作成に必要な権限は、ロールを介してではなく、直接付与する必要があります。

自分のスキーマ内にマテリアライズド・ビューを作成する場合は、次の条件に従う必要があります。

他のユーザーのスキーマ内にマテリアライズド・ビューを作成する場合、次の条件に従う必要があります。

REFRESH ON COMMITモードのマテリアライズド・ビューを作成する(ON COMMIT REFRESH句を使用)場合は、前述の権限の他に、所有しないマスター表に対するON COMMIT REFRESHオブジェクト権限、またはON COMMIT REFRESHシステム権限が必要です。

前述の権限の他にも、クエリー・リライトが使用可能なマテリアライズド・ビューを作成する場合は、次の条件に従う必要があります。

マテリアライズド・ビューを含むスキーマのユーザーには、マテリアライズド・ビューのマスター表および索引を格納するターゲット表領域への十分な割当て制限またはUNLIMITED TABLESPACEシステム権限が必要です。

マテリアライズド・ビューを作成する場合、Oracle Databaseはマテリアライズド・ビューのスキーマ内に、1つの内部表および1つ以上の索引を作成します。また、1つのビューを作成することもあります。これらのオブジェクトは、マテリアライズド・ビューのデータをメンテナンスするために使用されます。ユーザーには、これらのオブジェクトを作成するための権限が必要です。

参照:

  • これらの権限については、「CREATE TABLE」、「CREATE VIEW」および「CREATE INDEX」を参照してください。

  • レプリケーションのためのマテリアライズド・ビューの作成についての前提条件は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

  • データ・ウェアハウスのためのマテリアライズド・ビューの作成についての前提条件は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

 

構文

create_materialized_view::=

画像の説明

physical_properties::=scoped_table_ref_constraint::=materialized_view_props::=physical_attributes_clause::=create_mv_refresh::=subquery::=を参照)

physical_properties::=

画像の説明

segment_attributes_clause::=table_compression::=index_org_table_clause::=を参照)

materialized_view_props::=

画像の説明

column_properties::=、「CREATE TABLE」構文の項にあるtable_partitioning_clauses::=parallel_clause::=build_clause::=を参照)

scoped_table_ref_constraint::=

画像の説明

index_org_table_clause::=

画像の説明

mapping_table_clauseは、マテリアライズド・ビューではサポートされていません。key_compression::=index_org_overflow_clause::=を参照)

key_compression::=

画像の説明

index_org_overflow_clause::=

画像の説明

segment_attributes_clause::=を参照)

create_mv_refresh::=

画像の説明

segment_attributes_clause::=

画像の説明

physical_attributes_clause::=logging_clause::=を参照)

physical_attributes_clause::=

画像の説明

logging_clause::=を参照)

logging_clause::=

画像の説明

table_compression::=

画像の説明

column_properties::=

画像の説明

object_type_col_properties::=nested_table_col_properties::=varray_col_properties::=LOB_partition_storage::=LOB_storage_clause::=を参照。XMLType_column_propertiesは、マテリアライズド・ビューではサポートされていません。)

object_type_col_properties::=

画像の説明

substitutable_column_clause::=を参照)

substitutable_column_clause::=

画像の説明

nested_table_col_properties::=

画像の説明

substitutable_column_clause::=object_properties::=、「CREATE TABLE」構文の項にあるphysical_properties::=column_properties::=を参照)

varray_col_properties::=

画像の説明

substitutable_column_clause::=varray_storage_clause::=を参照)

varray_storage_clause::=

画像の説明

LOB_parameters::=を参照)

LOB_storage_clause::=

画像の説明

LOB_storage_parameters::=を参照)

LOB_storage_parameters::=

画像の説明

LOB_parameters::=storage_clause::=を参照)

LOB_parameters::=

画像の説明

storage_clause::=logging_clause::=を参照)

LOB_partition_storage::=

画像の説明

LOB_storage_clause::=varray_col_properties::=を参照)

parallel_clause::=

画像の説明

build_clause::=

画像の説明

セマンティクス

schema

マテリアライズド・ビューを含めるスキーマを指定します。schemaを指定しないと、自分のスキーマ内にマテリアライズド・ビューが作成されます。

materialized_view

作成するマテリアライズド・ビューの名前を指定します。Oracle Databaseは、マテリアライズド・ビュー名に接頭辞または接尾辞を追加して、マテリアライズド・ビューをメンテナンスするための表および索引の名前を生成します。

column_alias

マテリアライズド・ビューの各列に対して別名を指定できます。列の別名のリストによって、競合する列名が明示的に解決されます。したがって、マテリアライズド・ビューのSELECT句で別名を指定する必要がなくなります。この句で列の別名を指定する場合は、SELECT句内で参照される各データ・ソースの別名を指定する必要があります。

OF object_type

OF object_type句を指定すると、object_type型のオブジェクト・マテリアライズド・ビューを明示的に作成できます。

参照:

OF type_name句の詳細は、「CREATE TABLE」の「object_table」を参照してください。 

scoped_table_ref_constraint

SCOPE FOR句を使用すると、参照の有効範囲を1つのオブジェクト表に制限できます。scope_table_nameを持つ表名または列の別名を参照できます。REF列または属性の値はscope_table_nameまたはc_alias内のオブジェクトを指し、その場所にREF列と同じ型のオブジェクト・インスタンスが格納されます。別名を指定する場合は、その別名が、マテリアライズド・ビューを定義する問合せのSELECT構文のリストの列と1対1で対応する必要があります。

参照:

詳細は、「REF列の有効範囲制約」を参照してください。 

ON PREBUILT TABLE句

ON PREBUILT TABLE句を指定すると、既存の表を再初期化したマテリアライズド・ビューとして登録できます。この句は、データ・ウェアハウス環境において、大きいマテリアライズド・ビューを登録する場合に有効です。その表は、結果マテリアライズド・ビューと同じ名前で、同じスキーマにある必要があります。

マテリアライズド・ビューが削除されると、その既存の表は、1つの表としての元の形に戻ります。


注意:

この句は、表オブジェクトが副問合せの具体化を反映することを前提としています。マテリアライズド・ビューがそのマスター表のデータを正しく反映することを保証するために、この前提が満たされていることを確認することをお薦めします。 


WITH REDUCED PRECISION

WITH REDUCED PRECISIONを指定すると、表またはマテリアライズド・ビュー列の精度が、副問合せで戻される精度と一致しない場合に、精度の低下を許可できます。

WITHOUT REDUCED PRECISION

WITHOUT REDUCED PRECISIONを指定すると、表またはマテリアライズド・ビュー列の精度が副問合せによって戻された精度と一致することを要求できます。一致しない場合、作成操作は中断します。これはデフォルトです。

事前作成表の使用の制限事項:

事前作成表には、次の制限事項があります。

physical_properties_clause

physical_properties_clauseの構成要素は、マテリアライズド・ビューと表に対して同一のセマンティクスを持ちます。ただし、次の項で説明する例外および追加事項があります。

physical_properties_clauseの制限事項:

マテリアライズド・ビューに対しては、ORGANIZATION EXTERNALを指定できません。

segment_attributes_clause

segment_attributes_clauseを使用すると、PCTFREEPCTUSEDINITRANSパラメータの値、およびマテリアライズド・ビューの記憶特性の設定、表領域の割当て、ロギングが実行されるかどうかを指定できます。USING INDEX句では、PCTFREEまたはPCTUSEDは指定できません。

TABLESPACE句

マテリアライズド・ビューを作成する表領域を指定します。この句を指定しないと、マテリアライズド・ビューを含むスキーマのデフォルト表領域内にマテリアライズド・ビューが作成されます。

参照:

デフォルト値を含むこれらの句の詳細は、「physical_attributes_clause」および「storage_clause」を参照してください。 

logging_clause

LOGGINGまたはNOLOGGINGを指定すると、マテリアライズド・ビュー・ログのロギング特性を設定できます。ロギング特性は、マテリアライズド・ビューの作成およびDBMS_REFRESHパッケージによって開始される非アトミック・リフレッシュに影響します。デフォルトは、マテリアライズド・ビューが存在する表領域のロギング特性です。

参照:

この句の詳細は、「logging_clause」を参照してください。アトミック・リフレッシュおよび非アトミック・リフレッシュの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 

table_compression

table_compression句を使用すると、ディスクおよびメモリーの使用量を削減するために、データ・セグメントを圧縮するかどうかを指定できます。

参照:

この句のセマンティクスの詳細は、「CREATE TABLE」の「table_compression」を参照してください。 

index_org_table_clause

ORGANIZATION INDEXを指定すると、索引構成マテリアライズド・ビューを作成できます。このマテリアライズド・ビューでは、データ行は、マテリアライズド・ビューの主キーに定義した索引に格納されます。次のようなマテリアライズド・ビューの索引構成を指定できます。

index_org_table_clauseのキーワードおよびパラメータは、CREATE TABLEと同じです。また、次の制限事項があります。

参照:

詳細は、「CREATE TABLE」の「index_org_table_clause」を参照してください。 

索引構成マテリアライズド・ビューの制限事項:

索引構成マテリアライズド・ビューには、次の制限事項があります。

CLUSTER句

CLUSTER句を指定すると、指定したクラスタの一部としてマテリアライズド・ビューを作成できます。クラスタ化マテリアライズド・ビューは、クラスタの領域割当てを使用します。したがって、CLUSTER句で物理属性またはTABLESPACE句を指定しないでください。

クラスタ化マテリアライズド・ビューの制限事項:

CLUSTERを指定する場合、materialized_view_props内のtable_partitioning_clausesは指定できません。

materialized_view_props

これらのプロパティ句を使用すると、既存の表に基づかないマテリアライズド・ビューを定義できます。既存の表に基づくマテリアライズド・ビューを作成するには、ON PREBUILT TABLE句を使用します。

column_properties

column_properties句を使用すると、LOB、ネストした表、VARRAYまたはXMLTypeの列の記憶特性を指定できます。object_type_col_propertiesは、マテリアライズド・ビューには関連しません。

参照:

この句のパラメータの指定の詳細は、「CREATE TABLE」を参照してください。 

table_partitioning_clauses

table_partitioning_clausesを使用すると、マテリアライズド・ビューを、指定した範囲の値またはハッシュ・ファンクションでパーティション化できます。マテリアライズド・ビューのパーティション化は、表のパーティション化と同じです

参照:

CREATE TABLE」の「table_partitioning_clauses」を参照してください。 

CACHE | NOCACHE

アクセス頻度の高いデータについて、CACHEは、全表スキャンの実行時にこの表に対して取り出された各ブロックを、バッファ・キャッシュの最低使用頻度(LRU)リストの最高使用頻度側に入れることを指定します。この属性は、小規模な参照表で有効です。NOCACHEは、ブロックをLRUリストの最低使用頻度側に入れることを指定します。


注意:

NOCACHEは、storage_clauseKEEPを指定したマテリアライズド・ビューには、影響しません。 


参照:

CACHEまたはNOCACHEの指定の詳細は、「CREATE TABLE」を参照してください。 

parallel_clause

parallel_clauseを使用すると、マテリアライズド・ビューへのパラレル操作をサポートするかどうかを指定できます。作成後にマテリアライズド・ビューに対する問合せおよびDMLのデフォルトの並列度を設定します。

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

build_clause

build_clauseを指定すると、マテリアライズド・ビューをいつ移入するかを指定できます。

IMMEDIATE

IMMEDIATEを指定すると、マテリアライズド・ビューにすぐに移入できます。これはデフォルトです。

DEFERRED

DEFERREDを指定すると、次のREFRESH操作でマテリアライズド・ビューに移入できます。最初の(遅延)リフレッシュは、常に、完全リフレッシュである必要があります。それ以前のマテリアライズド・ビューの値はUNUSABLEであるため、クエリー・リライトには使用できません。

USING INDEX句

USING INDEX句を使用すると、マテリアライズド・ビューのデータをメンテナンスするために使用されるデフォルトの索引のINITRANSパラメータおよびSTORAGEパラメータの値を変更できます。USING INDEXが設定されていない場合、この索引にはデフォルト値が使用されます。デフォルトの索引は、マテリアライズド・ビューの増分リフレッシュ(高速リフレッシュ)を高速に処理するために使用されます。

USING INDEX句の制限事項:

この句では、PCTUSEDパラメータは指定できません。

USING NO INDEX句

USING NO INDEX句を指定すると、デフォルトの索引の作成を抑制できます。CREATE INDEX文を使用することによって、代替する索引を明示的に作成できます。USING NO INDEXを指定し、増分リフレッシュ(REFRESH FAST)でマテリアライズド・ビューを作成する場合は、このような索引を作成する必要があります。

create_mv_refresh

create_mv_refresh句を使用すると、マテリアライズド・ビューのデフォルトのリフレッシュ方法、リフレッシュ・モードおよびリフレッシュ時刻を指定できます。マテリアライズド・ビューのマスター表が変更された場合、マテリアライズド・ビューのデータを更新し、その時点でマスター表にあるデータを正確に反映させる必要があります。この句によって、自動的にマテリアライズド・ビューをリフレッシュする日時をスケジューリングし、リフレッシュの方法およびモードを指定できます。


注意:

この句では、デフォルトのリフレッシュ・オプションのみを設定します。リフレッシュを実際に実装する手順は、『Oracle Databaseアドバンスト・レプリケーション』および『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。 


参照:

 

FAST句

FASTを指定すると、増分リフレッシュ方法を指定できます。これはマスター表に対して行った変更に従ってリフレッシュを行います。従来型DML変更の場合、変更は、マスター表に関連付けられたマテリアライズド・ビュー・ログに格納されます。ダイレクト・パス・インサート操作の場合、ダイレクト・ローダー・ログに格納されます。

REFRESH FASTを指定すると、マテリアライズド・ビューのマスター表のマテリアライズド・ビュー・ログが存在していない場合に、CREATE文は正常に実行されません。ダイレクト・パス・インサートが行われると、ダイレクト・ローダー・ログが自動的に作成されます。手動での操作は必要ありません。

従来型DMLの変更の場合も、ダイレクト・パス・インサート操作の場合も、他の条件によって、高速リフレッシュへのマテリアライズド・ビューの適応性が制限されることがあります。

定義する問合せに分析ファンクションが含まれている場合、マテリアライズド・ビューは高速リフレッシュに適応しません。

参照:

  • レプリケーション環境における高速リフレッシュの制限については、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

  • データ・ウェアハウス環境における高速リフレッシュの制限については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

  • 高速リフレッシュに関する問題の診断については、DBMS_MVIEWパッケージのEXPLAIN_MVIEWプロシージャを参照してください。高速リフレッシュの問題の修正については、DBMS_MVIEWパッケージのTUNE_MVIEWプロシージャを参照してください。

  • 「分析ファンクション」

  • 「高速リフレッシュ可能なマテリアライズド・ビューの作成例:」

 

COMPLETE句

COMPLETEを指定すると、完全リフレッシュ方法を指定できます。これは、マテリアライズド・ビューを定義する問合せを実行することによって実装されます。完全リフレッシュを要求すると、高速リフレッシュが実行可能であっても、完全リフレッシュが実行されます。

FORCE句

FORCEを指定すると、リフレッシュ時に、高速リフレッシュが可能な場合は高速リフレッシュを実行し、可能でない場合は完全リフレッシュを実行するように指定できます。リフレッシュ方法(FASTCOMPLETEまたはFORCE)を指定しないと、デフォルトでFORCEが指定されます。

ON COMMIT句

ON COMMITを指定すると、マテリアライズド・ビューのマスター表に対するトランザクションをコミットするときに、必ず高速リフレッシュが実行されるように指定できます。この句を指定すると、リフレッシュ操作がコミット処理の一部として行われるため、コミットの完了に時間がかかります。

ON COMMITおよびON DEMANDの両方を指定することはできません。ON COMMITを指定した場合は、START WITHまたはNEXTを同時に指定できません。

ON COMMITのリフレッシュの制限事項:
ON DEMAND句

ON DEMANDを指定すると、3つのDBMS_MVIEWリフレッシュ・プロシージャのうちのいずれかを使用してユーザーが手動でリフレッシュしないかぎりデータベースによってマテリアライズド・ビューがリフレッシュされないように指定できます。

ON COMMITおよびON DEMANDのどちらも指定しなかった場合、ON DEMANDがデフォルトになります。このデフォルト設定は、同じCREATE MATERIALIZED VIEW文または後続のALTER MATERIALIZED VIEW文のいずれかにSTART WITH句またはNEXT句を指定することで上書きできます。

ON COMMITおよびON DEMANDの両方を指定することはできません。START WITHおよびNEXTは、ON DEMANDより優先されます。このため、START WITHまたはNEXTを指定したときは、ほとんどの場合、ON DEMANDを指定しても意味がありません。

参照:

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

  • REFRESH ON DEMANDを指定することによって作成できるマテリアライズド・ビューのタイプについては、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

 

START WITH句

最初の自動リフレッシュ時刻を表す日時式を指定します。

NEXT句

自動リフレッシュの間隔を計算するための日時式を指定します。

START WITH値およびNEXT値は、将来の時刻に評価される値です。START WITH値を省略した場合、Oracle Databaseはマテリアライズド・ビューの作成時刻に対してNEXT式を評価することによって、最初の自動リフレッシュ時刻を判断します。START WITH値を指定し、NEXT値を指定しない場合、Oracle Databaseは1回のみマテリアライズド・ビューをリフレッシュします。START WITH値およびNEXT値のどちらも指定しない場合、またはcreate_mv_refreshを指定しない場合は、マテリアライズド・ビューは自動リフレッシュされません。

WITH PRIMARY KEY句

WITH PRIMARY KEYを指定すると、主キー・マテリアライズド・ビューを作成できます。これはデフォルトであり、WITH ROWIDの項で説明する場合を除き、すべての場合に使用する必要があります。主キー・マテリアライズド・ビューを使用すると、高速リフレッシュに対するマテリアライズド・ビューの適応性に影響せずに、マテリアライズド・ビューのマスター表を再編成できます。マスター表には、使用可能な主キー制約が定義されている必要があり、マテリアライズド・ビューを定義する問合せでは、すべての主キー列が直接指定される必要があります。定義する問合せでは、UPPERなどのファンクションへの引数として主キー列を指定できません。

主キー・マテリアライズド・ビューの制限事項:

この句は、オブジェクト・マテリアライズド・ビューには指定できません。WITH OBJECT IDを指定してマテリアライズドされたオブジェクトは暗黙的にリフレッシュされます。

参照:

主キー・マテリアライズド・ビューの詳細は、『Oracle Databaseアドバンスト・レプリケーション』および「主キー・マテリアライズド・ビューの作成例:」を参照してください。 

WITH ROWID句

WITH ROWIDを指定すると、ROWIDマテリアライズド・ビューを作成できます。マテリアライズド・ビューがマスター表の主キー列をすべて含まない場合に、ROWIDマテリアライズド・ビューは有効です。ROWIDマテリアライズド・ビューは、単一表を基にしている必要があり、次のいずれも含むことができません。

完全リフレッシュが行われるまでは、マスター表の再編成後に、ROWIDマテリアライズド・ビューは高速リフレッシュされません。

ROWIDマテリアライズド・ビューの制限事項:

この句は、オブジェクト・マテリアライズド・ビューには指定できません。WITH OBJECT IDを指定してマテリアライズドされたオブジェクトは暗黙的にリフレッシュされます。

参照:

「マテリアライズド集計ビューの作成例:」および「ROWIDマテリアライズド・ビューの作成例:」を参照してください。 

USING ROLLBACK SEGMENT句

自動UNDOモードではロールバック・セグメントではなくUNDO表領域が使用されるため、データベースが自動UNDOモードの場合、この句は無効です。自動UNDOモードを使用することをお薦めします。この句は、ロールバック・セグメントが使用される以前のバージョンのOracle Databaseが含まれるレプリケーション環境との下位互換性のためにサポートされています。

rollback_segmentに、マテリアライズド・ビューのリフレッシュ中に使用するリモート・ロールバック・セグメントを指定します。

DEFAULT

DEFAULTを使用すると、使用するロールバック・セグメントを自動的に選択できます。DEFAULTを指定した場合、rollback_segmentは指定できません。DEFAULTは、マテリアライズド・ビューを(作成ではなく)変更する場合に有効です。

参照:

「ALTER MATERIALIZED VIEW」 

MASTER

MASTERを使用すると、個々のマテリアライズド・ビュー用のリモート・マスター・サイトで使用されるリモート・ロールバック・セグメントを指定できます。

LOCAL

LOCALを使用すると、マテリアライズド・ビューが含まれているローカル・リフレッシュ・グループで使用されるリモート・ロールバック・セグメントを指定できます。これはデフォルトです。

参照:

DBMS_REFRESHパッケージを使用するローカル・マテリアライズド・ビューのロールバック・セグメントの指定については、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。 

rollback_segmentを指定しない場合、使用するロールバック・セグメントが自動的に選択されます。各マテリアライズド・ビューに対して1つのマスター・ロールバック・セグメントが格納され、マテリアライズド・ビューの作成およびリフレッシュ時に検証されます。複合マテリアライズド・ビューの場合、マスター・ロールバック・セグメントの指定は無視されます。

USING ...CONSTRAINTS句

USING ... CONSTRAINTS句を使用すると、リフレッシュ操作中にOracle Databaseでより多くのリライト・オプションを選択でき、リフレッシュをより効果的に実行できます。リフレッシュ操作中に、適用される制約のみに依存するのではなく、適用されていない制約(RELY状態のディメンションの関係や制約など)を使用できます。


注意:

USING TRUSTED CONSTRAINTS句を指定すると、データベース管理者が信頼できると宣言したが、データベースで検証されていないディメンションおよび制約の情報を、Oracle Databaseで使用できます。ディメンションおよび制約の情報が有効であると、パフォーマンスを向上できる場合があります。ただし、この情報が無効であると、正常な状態が戻されても、リフレッシュ・プロシージャによってマテリアライズド・ビューが破損する場合があります。 


この句を指定しない場合、USING ENFORCED CONSTRAINTSがデフォルトになります。

NEVER REFRESH句

NEVER REFRESHを指定すると、Oracle Databaseのリフレッシュ・メカニズムまたはパッケージ・プロシージャを使用したマテリアライズド・ビューのリフレッシュを回避できます。このようなプロシージャから発行された、マテリアライズド・ビューに対するREFRESH文は、無視されます。この句を無効にするには、ALTER MATERIALIZED VIEW ... REFRESH文を発行する必要があります。

FOR UPDATE句

FOR UPDATEを指定すると、副問合せ、主キー、オブジェクトまたはROWIDマテリアライズド・ビューを更新できます。アドバンスト・レプリケーションと組み合せて使用した場合、更新はマスターにも影響します。

QUERY REWRITE句

QUERY REWRITE句を使用すると、マテリアライズド・ビューがクエリー・リライトで使用できるかどうかを指定できます。

ENABLE句

ENABLEを指定すると、クエリー・リライトでマテリアライズド・ビューを使用可能にできます。

クエリー・リライトを使用可能にする場合の制限事項:

クエリー・リライトを使用可能にする処理には、次の制限事項があります。

DISABLE句

DISABLEを指定すると、マテリアライズド・ビューをクエリー・リライトで使用禁止にできます。使用禁止にしたマテリアライズド・ビューはリフレッシュ可能です。

AS subquery

マテリアライズド・ビューを定義する問合せを指定します。マテリアライズド・ビューの作成時に、この副問合せが実行され、実行結果がマテリアライズド・ビューに格納されます。この副問合せは、有効なSQL副問合せである必要があります。ただし、すべての副問合せに高速リフレッシュを適用できるわけではなく、すべての副問合せがクエリー・リライトに使用できるわけでもありません。

マテリアライズド・ビューを定義する問合せに関する注意事項:

マテリアライズド・ビューには、次の注意事項があります。

マテリアライズド・ビューを定義する問合せに関する制限事項:

マテリアライズド・ビュー問合せには、次の制限事項があります。

クエリー・リライトが可能なマテリアライズド・ビューを作成する場合、次の制限があります。

マテリアライズド・ビュー・ログを使用した高速リフレッシュを実行する場合は、いくつかの制限事項があります。

参照:

 

次の例では、「CREATE MATERIALIZED VIEW LOG」の「例」で作成したマテリアライズド・ログが必要です。

単純なマテリアライズド・ビューの作成例:

次の文は、hrスキーマ内のemployees表に基づいた非常に単純なマテリアライズド・ビューを作成します。

CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM hr.employees;

デフォルトでは、REFRESH ON DEMANDのみが指定されている主キー・マテリアライズド・ビューが作成されます。マテリアライズド・ビュー・ログがemployeesに存在する場合は、高速リフレッシュできるようにmv1を変更できます。このようなログが存在しない場合は、mv1の完全リフレッシュのみが可能です。Oracle Databaseでは、mv1に対してデフォルトの記憶域プロパティが使用されます。この操作に必要な権限は、CREATE MATERIALIZED VIEWシステム権限およびhr.employeesに対するSELECTオブジェクト権限のみです。

副問合せマテリアライズド・ビューの作成例:

次の文は、リモート・データベースのshスキーマのcountriesおよびcustomers表を基にした副問合せマテリアライズド・ビューを作成します。

CREATE MATERIALIZED VIEW foreign_customers FOR UPDATE
   AS SELECT * FROM sh.customers@remote cu
   WHERE EXISTS
     (SELECT * FROM sh.countries@remote co
      WHERE co.country_id = cu.country_id);
マテリアライズド集計ビューの作成例:

次の文は、サンプル表sh.salesにマテリアライズド集計ビューを作成して移入し、デフォルトのリフレッシュ方法、モードおよび時刻を指定します。この文は、ここに示されている2つのログおよび「マテリアライズド・ビュー・ログの作成例:」で作成されたマテリアライズド・ビュー・ログを使用します。

CREATE MATERIALIZED VIEW LOG ON times
   WITH ROWID, SEQUENCE (time_id, calendar_year)
   INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW LOG ON products
   WITH ROWID, SEQUENCE (prod_id)
   INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW sales_mv
   BUILD IMMEDIATE
   REFRESH FAST ON COMMIT
   AS SELECT t.calendar_year, p.prod_id, 
      SUM(s.amount_sold) AS sum_sales
      FROM times t, products p, sales s
      WHERE t.time_id = s.time_id AND p.prod_id = s.prod_id
      GROUP BY t.calendar_year, p.prod_id;
マテリアライズド結合ビューの作成例:

次の文は、サンプル・スキーマshの表を使用して、マテリアライズド集計ビューsales_by_month_by_stateを作成して移入します。マテリアライズド・ビューは、この文が正しく実行されるとすぐに移入されます。デフォルトで、次のマテリアライズド・ビューを定義する問合せを再実行することによって、後続のリフレッシュが行われます。

CREATE MATERIALIZED VIEW sales_by_month_by_state
     TABLESPACE example
     PARALLEL 4
     BUILD IMMEDIATE
     REFRESH COMPLETE
     ENABLE QUERY REWRITE
     AS SELECT t.calendar_month_desc, c.cust_state_province,
        SUM(s.amount_sold) AS sum_sales
        FROM times t, sales s, customers c
        WHERE s.time_id = t.time_id AND s.cust_id = c.cust_id
        GROUP BY t.calendar_month_desc, c.cust_state_province;
事前作成したマテリアライズド・ビューの作成例:

次の文は、既存の集計表sales_sum_tableに対するマテリアライズド集計ビューを作成します。

CREATE TABLE sales_sum_table
   (month VARCHAR2(8), state VARCHAR2(40), sales NUMBER(10,2));

CREATE MATERIALIZED VIEW sales_sum_table
   ON PREBUILT TABLE WITH REDUCED PRECISION
   ENABLE QUERY REWRITE
   AS SELECT t.calendar_month_desc AS month, 
             c.cust_state_province AS state,
             SUM(s.amount_sold) AS sales
      FROM times t, customers c, sales s
      WHERE s.time_id = t.time_id AND s.cust_id = c.cust_id
      GROUP BY t.calendar_month_desc, c.cust_state_province;

前述の例では、マテリアライズド・ビューは事前作成表と同じ名前を持ち、かつ事前作成表と同じデータ型で同じ数の列を持ちます。WITH REDUCED PRECISION句によって、マテリアライズド・ビュー列の精度と副問合せによって戻された値の精度の違いは許可されます。

主キー・マテリアライズド・ビューの作成例:

次の文は、サンプル表oe.product_informationに主キー・マテリアライズド・ビューcatalogを作成します。

CREATE MATERIALIZED VIEW catalog   
   REFRESH FAST START WITH SYSDATE NEXT  SYSDATE + 1/4096 
   WITH PRIMARY KEY 
   AS SELECT * FROM product_information;  
ROWIDマテリアライズド・ビューの作成例:

次の文は、サンプル表oe.ordersにROWIDマテリアライズド・ビューを作成します。

CREATE MATERIALIZED VIEW order_data REFRESH WITH ROWID 
   AS SELECT * FROM orders; 
マテリアライズド・ビューの定期的リフレッシュ例:

次の文は、主キー・マテリアライズド・ビューemp_dataを作成し、サンプル表hr.employeesのデータを移入します。

CREATE MATERIALIZED VIEW LOG ON employees
   WITH PRIMARY KEY
   INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW emp_data 
   PCTFREE 5 PCTUSED 60 
   TABLESPACE example 
   STORAGE (INITIAL 50K NEXT 50K)
   REFRESH FAST NEXT sysdate + 7 
   AS SELECT * FROM employees; 

前述の文にはSTART WITHパラメータが指定されていないため、Oracle Databaseでは、現行のSYSDATEを使用してNEXT値が評価され、最初の自動リフレッシュ時刻が判断されます。従業員表のマテリアライズド・ビュー・ログが作成されたため、マテリアライズド・ビュー作成の7日後から、7日ごとにマテリアライズド・ビューの高速リフレッシュが実行されます。

マテリアライズド・ビューが高速リフレッシュを行うための条件と一致するため、高速リフレッシュが行われます。また、前述の文では、マテリアライズド・ビューをメンテナンスするためにデータベースで使用される表の記憶特性も設定しています。

マテリアライズド・ビューの自動リフレッシュ時刻の例:

次の文は、remoteおよびlocalデータベースの従業員表を問い合せる複合マテリアライズド・ビューall_customersを作成します。

CREATE MATERIALIZED VIEW all_customers
   PCTFREE 5 PCTUSED 60 
   TABLESPACE example 
   STORAGE (INITIAL 50K NEXT 50K) 
   USING INDEX STORAGE (INITIAL 25K NEXT 25K)
   REFRESH START WITH ROUND(SYSDATE + 1) + 11/24 
   NEXT NEXT_DAY(TRUNC(SYSDATE), 'MONDAY') + 15/24 
   AS SELECT * FROM sh.customers@remote 
         UNION
      SELECT * FROM sh.customers@local; 

このマテリアライズド・ビューは、翌日の午前11:00に自動的にリフレッシュされ、その後は、毎週月曜日の午後3:00にリフレッシュされます。デフォルトのリフレッシュ方法は、FORCEです。定義する問合せにはUNION演算子が含まれますが、UNION演算子は高速リフレッシュでサポートされていないため、自動的に完全リフレッシュが実行されます。

前述の文では、マテリアライズド・ビューおよびこのマテリアライズド・ビューをメンテナンスするために使用される索引の記憶特性を次のように設定しています。

高速リフレッシュ可能なマテリアライズド・ビューの作成例:

次の文は、product_informationおよびinventories表からWHERE条件で戻される行を制限するUNION集合演算子を使用して、サンプル・スキーマoeの表order_itemsから列を選択する高速リフレッシュが可能なマテリアライズド・ビューを作成します。order_itemsおよびproduct_informationのマテリアライズド・ビュー・ログは、CREATE MATERIALIZED VIEW LOG「例」で作成されたものです。また、次の例では、oe.inventoriesのマテリアライズド・ビュー・ログが必要です。

CREATE MATERIALIZED VIEW LOG ON inventories
   WITH (quantity_on_hand);

CREATE MATERIALIZED VIEW warranty_orders REFRESH FAST AS
  SELECT order_id, line_item_id, product_id FROM order_items o
    WHERE EXISTS
    (SELECT * FROM inventories i WHERE o.product_id = i.product_id
      AND i.quantity_on_hand IS NOT NULL)
  UNION
    SELECT order_id, line_item_id, product_id FROM order_items
    WHERE quantity > 5; 

マテリアライズド・ビューwarranty_ordersには、order_itemsproduct_idを結合列とする)およびinventories(quantity_on_handをフィルタ列とする)で定義されたマテリアライズド・ビュー・ログが必要です。「マテリアライズド・ビュー・ログにフィルタ列を指定する例:」および「マテリアライズド・ビュー・ログに結合列を指定する例:」を参照してください。

ネステッド・マテリアライズド・ビューの作成例:

次の例は、前述の例のマテリアライズド・ビューをマスター表として使用し、サンプル・スキーマoeの特定の販売員で構成されるマテリアライズド・ビューを作成します。

CREATE MATERIALIZED VIEW my_warranty_orders
   AS SELECT w.order_id, w.line_item_id, o.order_date
   FROM warranty_orders w, orders o
   WHERE o.order_id = o.order_id
   AND o.sales_rep_id = 165; 

CREATE MATERIALIZED VIEW LOG

用途

CREATE MATERIALIZED VIEW LOG文を使用すると、マテリアライズド・ビューのマスター表に関連する表マテリアライズド・ビュー・ログを作成できます。


注意:

下位互換性を保つために、MATERIALIZED VIEWのかわりにキーワードSNAPSHOTもサポートされています。 


マスター表のデータがDMLによって変更された場合、Oracle Databaseは変更を記述する行をマテリアライズド・ビュー・ログに格納し、そのマテリアライズド・ビュー・ログを使用して、マスター表を基にしたマテリアライズド・ビューをリフレッシュします。このプロセスを、増分リフレッシュまたは高速リフレッシュといいます。マテリアライズド・ビュー・ログがない場合、マテリアライズド・ビュー問合せが再実行され、マテリアライズド・ビューがリフレッシュされます。このプロセスが完全リフレッシュです。通常、高速リフレッシュは、完全リフレッシュよりも高速に処理されます。

マテリアライズド・ビュー・ログは、マスター表と同一のスキーマ内のマスター・データベースにあります。マスター表に定義できるマテリアライズド・ビュー・ログは1つのみです。Oracle Databaseでは、このマテリアライズド・ビュー・ログを使用して、マスター表に基づく高速リフレッシュが可能なすべてのマテリアライズド・ビューに対して、高速リフレッシュを実行します。

マテリアライズド結合ビューを高速リフレッシュする場合、マテリアライズド・ビューが参照するそれぞれのマスター表に対するマテリアライズド・ビュー・ログを作成する必要があります。

参照:

  • マテリアライズド・ビューの概要は、「CREATE MATERIALIZED VIEW」、「ALTER MATERIALIZED VIEW」、『Oracle Database概要』、『Oracle Databaseデータ・ウェアハウス・ガイド』および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

  • マテリアライズド・ビュー・ログの変更については、「ALTER MATERIALIZED VIEW LOG」を参照してください。

  • マテリアライズド・ビュー・ログの削除については、「DROP MATERIALIZED VIEW LOG」を参照してください。

  • ダイレクト・ローダー・ログの使用については、『Oracle Databaseユーティリティ』を参照してください。

 

前提条件

マテリアライズド・ビュー・ログを作成するために必要な権限は、マテリアライズド・ビュー・ログに関連付けられた基礎となるオブジェクトの作成に必要な権限と直接関連しています。

どちらの場合も、マテリアライズド・ビュー・ログの所有者には、マテリアライズド・ビュー・ログを格納するための表領域への十分な割当て制限またはUNLIMITED TABLESPACEシステム権限が必要です。

参照:

マテリアライズド・ビュー・ログを作成する場合の前提条件については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。 

構文

create_materialized_vw_log::=

画像の説明

physical_attributes_clause::=logging_clause::=parallel_clause::=、「CREATE TABLE」のtable_partitioning_clauses::=new_values_clause::=を参照)

physical_attributes_clause::=

画像の説明

storage_clause::=を参照)

logging_clause::=

画像の説明

parallel_clause::=

画像の説明

new_values_clause::=

画像の説明

セマンティクス

schema

マテリアライズド・ビュー・ログのマスター表が含まれているスキーマを指定します。schemaを省略した場合、マスター表は自分のスキーマ内に含まれているとみなされます。マテリアライズド・ビュー・ログは、マスター表のスキーマ内に作成されます。なお、ユーザーSYSのスキーマ内の表に対しては、マテリアライズド・ビュー・ログを作成できません。

table

マテリアライズド・ビュー・ログを作成するマスター表の名前を指定します。

マテリアライズド・ビュー・ログのマスター表の制限事項:

一時表またはビューに対しては、マテリアライズド・ビュー・ログを作成できません。

参照:

「マテリアライズド・ビュー・ログの作成例:」 

physical_attributes_clause

physical_attributes_clauseを使用すると、マテリアライズド・ビュー・ログにおける物理特性および記憶特性を定義できます。

参照:

デフォルト値を含むこれらの句の詳細は、「physical_attributes_clause」および「storage_clause」を参照してください。 

TABLESPACE句

マテリアライズド・ビュー・ログを作成する表領域を指定します。この句を省略した場合、マテリアライズド・ビュー・ログのスキーマのデフォルト表領域内にマテリアライズド・ビュー・ログが作成されます。

logging_clause

LOGGINGまたはNOLOGGINGを指定すると、マテリアライズド・ビュー・ログのロギング特性を設定できます。デフォルトは、マテリアライズド・ビュー・ログが存在する表領域のロギング特性です。

参照:

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

CACHE | NOCACHE

アクセス頻度の高いデータについて、CACHEは、全表スキャンの実行時にこのログ用に取り出された各ブロックを、バッファ・キャッシュの最低使用頻度(LRU)リストの最高使用頻度側に入れることを指定します。この属性は、小規模な参照表で有効です。

NOCACHEは、ブロックをLRUリストの最低使用頻度側に入れることを指定します。デフォルトはNOCACHEです。


注意:

NOCACHEは、storage_clauseKEEPを指定したマテリアライズド・ビュー・ログには、影響しません。 


参照:

CACHEまたはNOCACHEの指定の詳細は、「CREATE TABLE」を参照してください。 

parallel_clause

parallel_clauseを使用すると、パラレル操作でマテリアライズド・ビュー・ログをサポートするかどうかを指定できます。

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

table_partitioning_clauses

table_partitioning_clausesを使用すると、マテリアライズド・ビュー・ログが、指定された範囲の値またはハッシュ・ファンクションでパーティション化されることを指定できます。マテリアライズド・ビュー・ログのパーティション化は、表のパーティション化と同じです。

参照:

CREATE TABLE」の「table_partitioning_clauses」を参照してください。 

WITH句

WITH句を使用すると、マスター内の行の更新時に、マテリアライズド・ビュー・ログに主キー、ROWID、オブジェクトIDまたはこれらの行識別子の組合せを記録するかどうかを指定できます。また、マテリアライズド・ビュー・ログに順序を追加し、レコードに対する追加の順序情報を提供することもできます。

この句を指定すると、マテリアライズド・ビュー・ログがフィルタ列(副問合せマテリアライズド・ビューが参照する主キー以外の列)または結合列(副問合せのWHERE句で結合を定義する主キー以外の列)として参照する追加の列を記録するかどうかを指定できます。

この句を指定しない場合、またはPRIMARY KEYROWIDまたはOBJECT IDなしで句を指定する場合は、デフォルトで主キー値が格納されます。ただし、作成時にOBJECT IDまたはROWIDのみを指定した場合は、主キー値は暗黙的に格納されません。明示的に、またはデフォルトで作成された主キー・ログによって、主キー制約の追加の検証が実行されます。

OBJECT ID

OBJECT IDを指定すると、更新されるすべての行に対するシステム生成またはユーザー定義のオブジェクト識別子をマテリアライズド・ビュー・ログに記録することを指定できます。

OBJECT IDの制限事項:

OBJECT IDは、オブジェクト表のログの作成時のみに指定でき、記憶表用には指定できません。

PRIMARY KEY

PRIMARY KEYを指定すると、更新されるすべての行の主キーをマテリアライズド・ビュー・ログに記録することを指定できます。

ROWID

ROWIDを指定すると、更新されるすべての行のROWIDをマテリアライズド・ビュー・ログに記録することを指定できます。

SEQUENCE

SEQUENCEを指定すると、追加の順序情報を提供する順序値をマテリアライズド・ビュー・ログに記録できます。更新操作後の高速リフレッシュには、順序番号が必要です。

参照:

マテリアライズド・ビュー・ログの順序番号の使用およびこの句の使用例については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。 

column

更新されるすべての行に対して、マテリアライズド・ビュー・ログに値を記録する列を指定します。通常、フィルタ列および結合列を指定します。

WITH句の制限事項:

この句には、次の制限事項があります。

NEW VALUES句

NEW VALUES句を使用すると、更新DML操作で、古い値と新しい値の両方をマテリアライズド・ビュー・ログに保存するかどうかを指定できます。

参照:

「マテリアライズド・ビュー・ログに新しい値を追加する例:」 

INCLUDING

INCLUDINGを指定すると、古い値と新しい値の両方を保存できます。このログが単一表マテリアライズド集計ビューの表用で、マテリアライズド・ビューに高速リフレッシュを実行する場合、INCLUDINGを指定してください。

EXCLUDING

EXCLUDINGを指定すると、ログに新しい値が記録されなくなります。これはデフォルトです。この句を使用すると、新しい値の記録によるオーバーヘッドを回避できます。マスター表に高速リフレッシュが可能な単一表マテリアライズド集計ビューが定義されている場合は、この句を使用しないでください。

マテリアライズド・ビュー・ログの作成例:

次の文は、物理特性および記憶特性を指定するoe.customers表にマテリアライズド・ビュー・ログを作成します。

CREATE MATERIALIZED VIEW LOG ON customers 
   PCTFREE 5 
   TABLESPACE example 
   STORAGE (INITIAL 10K NEXT 10K); 

customersのマテリアライズド・ビュー・ログは、主キー・マテリアライズド・ビューの高速リフレッシュのみサポートします。

次の文は、ROWID句を指定してマテリアライズド・ビュー・ログの別のバージョンを作成します。これによって、高速リフレッシュが使用可能になるマテリアライズド・ビューのタイプが追加されます。

CREATE MATERIALIZED VIEW LOG ON customers WITH PRIMARY KEY, ROWID; 

このcustomersのマテリアライズド・ビュー・ログによって、ROWIDマテリアライズド・ビューおよびマテリアライズド結合ビューに対する高速リフレッシュが実行可能になります。マテリアライズド集計ビューの高速リフレッシュを指定するには、次の例に示すとおり、SEQUENCEおよびINCLUDING NEW VALUES句も指定する必要があります。

マテリアライズド・ビュー・ログにフィルタ列を指定する例:

次の文は、sh.sales表にマテリアライズド・ビュー・ログを作成します。この文は、「マテリアライズド集計ビューの作成例:」で使用します。この文は、このマテリアライズド・ビューで参照される表のすべての列を、フィルタ列として指定します。

CREATE MATERIALIZED VIEW LOG ON sales 
   WITH ROWID, SEQUENCE(amount_sold, time_id, prod_id)
   INCLUDING NEW VALUES; 
マテリアライズド・ビュー・ログに結合列を指定する例:

次の文は、サンプル・スキーマoeorder_items表にマテリアライズド・ビュー・ログを作成します。ログは、主キーおよび「高速リフレッシュ可能なマテリアライズド・ビューの作成例:」で結合列として使用したproduct_idを記録します。

CREATE MATERIALIZED VIEW LOG ON order_items WITH (product_id);
マテリアライズド・ビュー・ログに新しい値を追加する例:

次の例は、INCLUDING NEW VALUESを指定するoe.product_information表にマテリアライズド・ビュー・ログを作成します。

CREATE MATERIALIZED VIEW LOG ON product_information 
   WITH ROWID, SEQUENCE (list_price, min_price, category_id), PRIMARY KEY
   INCLUDING NEW VALUES;

次の文は、マテリアライズド集計ビューを作成し、product_informationログを使用します。

CREATE MATERIALIZED VIEW products_mv 
   REFRESH FAST ON COMMIT
   AS SELECT SUM(list_price - min_price), category_id
         FROM product_information 
         GROUP BY category_id;

マスター表に定義されたログに古い値と新しい値の両方が含まれるため、このマテリアライズド・ビューでは、高速リフレッシュを実行できます。


CREATE OPERATOR

用途

CREATE OPERATOR文を使用すると、新しい演算子を作成し、バインディングを定義できます。

演算子は、索引タイプ、SQL問合せおよびDML文で参照できます。それに対して演算子は、ファンクション、パッケージ、型および他のユーザー定義オブジェクトを参照します。

参照:

これらの依存性および一般的な演算子については、『Oracle Databaseデータ・カートリッジ開発者ガイド』および『Oracle Database概要』を参照してください。 

前提条件

自分のスキーマ内に演算子を作成する場合は、CREATE OPERATORシステム権限が必要です。他のユーザーのスキーマ内に演算子を作成する場合は、CREATE ANY OPERATORシステム権限が必要です。どちらの場合も、参照するファンクションおよび演算子に対するEXECUTEオブジェクト権限が必要です。

構文

create_operator::=

画像の説明

binding_clause::=

画像の説明

implementation_clause::=

画像の説明

context_clause::=

画像の説明

using_function_clause::=

画像の説明

セマンティクス

OR REPLACE

OR REPLACEを指定すると、演算子スキーマ・オブジェクトの定義を置換できます。

演算子の置換の制限事項:

演算子をサポートする索引タイプなどの依存オブジェクトが演算子にない場合のみ、定義を置換できます。

schema

演算子が含まれているスキーマを指定します。schemaを省略した場合、自分のスキーマ内に演算子が作成されます。

operator

作成する演算子の名前を指定します。

binding_clause

binding_clauseを使用すると、演算子をファンクションにバインドするために、1つ以上のパラメータ・データ型(parameter_type)を指定できます。各バインドの署名(対応するファンクションに対する引数のデータ型のシーケンス)は、オーバーロードの規則に従って一意である必要があります。

parameter_type自体をオブジェクト型にできます。この場合、任意にスキーマで修飾することもできます。

演算子のバインドの制限事項:

REFLONGまたはLONG RAWparameter_typeに指定できません。

参照:

オーバーロードの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。 

RETURN句

バインドに戻りデータ型を指定します。

return_type自体をオブジェクト型にできます。この場合、任意にスキーマで修飾することもできます。

戻りデータ型のバインドの制限事項:

REFLONGまたはLONG RAWreturn_typeに対して指定できません。

implementation_clause

この句を使用すると、バインドの実装を指定できます。

ANCILLARY TO句

ANCILLARY TO句を使用すると、演算子バインドが、指定した主演算子バインド(primary_operator)を補助することを指定できます。この句を指定する場合は、1つのみの数値パラメータで前のバインドを指定しないでください。

context_clause

context_clauseを使用すると、主演算子バインドを補助しないバインドのファンクション実装を指定できます。

WITH INDEX CONTEXT、SCAN CONTEXT

この句を使用すると、演算子のファンクション評価に、実装タイプで指定した索引およびスキャン・コンテキストが使用されるように指定できます。

COMPUTE ANCILLARY DATA

COMPUTE ANCILLARY DATAを指定すると、演算子バインディングが補助データを計算するように指定できます。

WITH COLUMN CONTEXT

WITH COLUMN CONTEXTを指定すると、列情報が演算子のファンクション実装に渡されるように指定できます。

この句を指定する場合は、実装するファンクションの署名に、余分なODCIFuncCallInfo構造を1つ含める必要があります。

参照:

ODCIFuncCallInfoルーチンを使用する手順については、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。 

using_function_clause

using_function_clauseを使用すると、バインディングを実装するファンクションを指定できます。function_nameには、スタンドアロン・ファンクション、パッケージ・ファンクション、型メソッドまたはこれらのシノニムを指定できます。

ファンクションが後で削除された場合は、演算子などのすべての依存オブジェクトに、INVALIDのマークが付けられます。ただし、その後ALTER OPERATOR ... DROP BINDING文を発行してバインディングを削除した場合は、後続の問合せおよびDMLで依存オブジェクトが再検証されます。

ユーザー定義演算子の作成例:

次の文は、非常に単純な等価性のファンクション実装を作成した後、このファンクションを使用する演算子を作成します。より詳細な例については、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。

CREATE FUNCTION eq_f(a VARCHAR2, b VARCHAR2) RETURN NUMBER AS
BEGIN
   IF a = b THEN RETURN 1;
   ELSE RETURN 0;
   END IF;
END;
/

CREATE OPERATOR eq_op
   BINDING (VARCHAR2, VARCHAR2) 
   RETURN NUMBER 
   USING eq_f; 

CREATE OUTLINE

用途


注意:

ストアド・アウトラインは、SQL計画管理を優先して、今後のリリースではサポートされなくなります。Oracle Database 11g リリース1(11.1)では、ストアド・アウトラインは過去のリリースと同様に機能します。ただし、新規のアプリケーションにはSQL計画管理を使用することをお薦めします。SQL計画管理では、ストアド・アウトラインよりもすぐれたSQLパフォーマンスと安定性を実現するSQL計画ベースラインが作成されます。

既存のストアド・アウトラインがある場合は、DBMS_SPMパッケージのLOAD_PLANS_FROM_CURSOR_CACHEプロシージャまたはLOAD_PLANS_FROM_SQLSETプロシージャを使用して、SQL計画ベースラインに移行することを検討してください。移行が完了した場合、ストアド・アウトラインを無効にするか、または削除する必要があります。

参照: SQL計画管理の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。DBMS_SPMパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 


CREATE OUTLINE文を使用すると、ストアド・アウトラインを作成できます。ストアド・アウトラインは、実行計画を生成するためにオプティマイザが使用する属性集合です。最適化に影響する要因に変更があるかどうかにかかわらず、特定のSQL文が発行された場合に、実行計画の生成に影響するアウトラインの集合を使用するように、オプティマイザに指示します。これらの要因における変更を考慮するように、アウトラインを変更することもできます。


注意:

影響を与えるSQL文には、アウトライン作成時に指定した文と一致する文字列を指定する必要があります。 


参照:

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

  • アウトラインの変更については、「ALTER OUTLINE」を参照してください。

  • USE_STORED_OUTLINESパラメータおよびUSE_PRIVATE_OUTLINESパラメータの詳細は、「ALTER SESSION」および「ALTER SYSTEM」を参照してください。

 

前提条件

パブリック・アウトラインまたはプライベート・アウトラインの作成には、CREATE ANY OUTLINEシステム権限が必要です。

ソース・アウトラインからクローン・アウトラインを作成するには、SELECT_CATALOG_ROLEロールも必要です。

個々のセッションまたはシステムに対して、ストアド・アウトラインを動的に使用可能または使用禁止にできます。

構文

create_outline::=

画像の説明


注意:

outlineの後に指定する必須の句はありません。ただし、outlineの後には1つ以上の句を指定する必要があり、FROM句またはON句のどちらかを指定する必要があります。 


セマンティクス

OR REPLACE

OR REPLACEを指定すると、既存のアウトラインを同じ名前の新しいアウトラインと置き換えることができます。

PUBLIC | PRIVATE

PUBLICを指定すると、PUBLICが使用するアウトラインを作成できます。これはデフォルトです。

PRIVATEを指定すると、現行のセッションのみがプライベートに使用するアウトラインを作成できます。このアウトラインのデータは、現行のスキーマに格納されます。


注意:

プライベート・アウトラインを作成するには、DBMS_OUTLN_EDIT.CREATE_EDIT_TABLESプロシージャの実行によって自分のスキーマのアウトライン・データを保持するアウトライン編集表が必要です。このプロシージャの実行には、DBMS_OUTLN_EDITパッケージに対するEXECUTEオブジェクト権限が必要です。 


outline

ストアド・アウトラインに割り当てる一意の名前を指定します。outlineを指定しない場合、データベースがアウトライン名を生成します。

参照:

「アウトラインの作成例:」 

FROM source_outline

FROM句を使用すると、既存のアウトラインのコピーによって新しいアウトラインを作成できます。デフォルトでは、パブリック領域のsource_categoryが検索されます。PRIVATEを指定すると、現行のスキーマのアウトラインが検索されます。

アウトラインのコピーの制限事項:

FROM句を指定する場合、ON句は指定できません。

参照:

「プライベート・クローン・アウトラインの作成例:」および「プライベート・アウトラインのパブリック領域への公開例:」を参照してください。 

FOR CATEGORY句

ストアド・アウトラインをグループ化するために使用する任意の名前を指定します。たとえば、週末に使用するアウトラインの1つのカテゴリおよび四半期末に使用する別のカテゴリを指定できます。categoryを指定しない場合、アウトラインはDEFAULTカテゴリに格納されます。

ON句

文をコンパイルする際にアウトラインが作成されるSQL文を指定します。この句は、FROM句を使用して既存のアウトラインのコピーを作成する場合のみに指定するオプションです。

指定できる文は、SELECTDELETEUPDATEINSERT ... SELECTまたはCREATE TABLE ... AS SELECTのいずれかです。

ON句の制限事項:

この句には、次の制限事項があります。

アウトラインの作成例:

次の文は、ON文をコンパイルすることによってストアド・アウトラインを作成します。アウトラインはsalariesという名前で、specialカテゴリに格納されます。

CREATE OUTLINE salaries FOR CATEGORY special
   ON SELECT last_name, salary FROM employees;

USE_STORED_OUTLINESパラメータにspecialが設定されている場合、同じSELECT文が後でコンパイルされると、アウトラインsalariesを作成する場合と同様に実行計画が生成されます。

プライベート・クローン・アウトラインの作成例:

次の文は、前述の例で作成したパブリック・カテゴリsalariesに基づいて、ストアド・プライベート・アウトラインmy_salariesを作成します。プライベート・アウトラインを作成する場合、プライベート・アウトラインを作成するユーザーには、DBMS_OUTLN_EDITパッケージに対するEXECUTEオブジェクト権限が必要です。また、このパッケージのCREATE_EDIT_TABLESプロシージャを実行する必要があります。

EXECUTE DBMS_OUTLN_EDIT.CREATE_EDIT_TABLES;

CREATE OR REPLACE PRIVATE OUTLINE my_salaries
   FROM salaries;
プライベート・アウトラインのパブリック領域への公開例:

次の文は、プライベート編集の後でプライベート・アウトラインをパブリック領域にコピー(公開)します。

CREATE OR REPLACE OUTLINE public_salaries 
   FROM PRIVATE my_salaries;

CREATE PACKAGE

用途

パッケージはPL/SQLを使用して定義されます。このため、この項では一般的な情報について説明します。構文およびセマンティクスの詳細は『Oracle Database PL/SQL言語リファレンス』を参照してください。

CREATE PACKAGE文を使用すると、ストアド・パッケージの仕様部を作成できます。パッケージとは、関連するプロシージャ、ファンクション、およびデータベース上にまとめて格納されるその他のプログラム・オブジェクトの集合のことです。パッケージ仕様部では、これらのオブジェクトを宣言します。後で指定するパッケージ本体では、これらのオブジェクトを定義します。

参照:

  • パッケージ実装の指定については、「CREATE PACKAGE BODY」を参照してください。

  • スタンドアロン・ファンクションおよびプロシージャの作成については、「CREATE FUNCTION」および「CREATE PROCEDURE」を参照してください。

  • パッケージの変更および削除については、「ALTER PACKAGE」および「DROP PACKAGE」を参照してください。

  • パッケージの詳細および使用方法については、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』および『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

 

前提条件

自分のスキーマ内にパッケージを作成または再作成する場合は、CREATE PROCEDUREシステム権限が必要です。他のユーザーのスキーマ内にパッケージを作成または再作成する場合は、CREATE ANY PROCEDUREシステム権限が必要です。

Oracle Databaseのプリコンパイラ・プログラム内にCREATE PACKAGE文を埋め込む場合、キーワードEND-EXECに続けて、各言語の埋込みSQL文の終了記号を記述して文を終了する必要があります。

参照:

詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。 

構文

パッケージはPL/SQLを使用して定義されます。このため、このマニュアルの構文図ではSQLキーワードのみを示します。PL/SQLの構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。

create_package::=

画像の説明

plsql_sourceについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。)

セマンティクス

OR REPLACE

OR REPLACEを指定すると、既存のパッケージ仕様部を再作成できます。この句を指定した場合、パッケージに対して付与されていたオブジェクト権限を削除、再作成および再付与しなくても、既存のパッケージの仕様部を変更できます。パッケージ仕様部を変更した場合、その仕様部は自動的に再コンパイルされます。

再定義したパッケージに対して権限が付与されていたユーザーは、権限が再付与されなくてもそのパッケージにアクセスできます。

ファンクション索引がパッケージに依存している場合、索引にDISABLEDのマークが付きます。

参照:

パッケージ仕様部の再コンパイルについては、「ALTER PACKAGE」を参照してください。 

plsql_source

plsql_sourceの構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。


CREATE PACKAGE BODY

用途

パッケージ本体はPL/SQLを使用して定義されます。このため、この項では一般的な情報について説明します。構文およびセマンティクスの詳細は『Oracle Database PL/SQL言語リファレンス』を参照してください。

CREATE PACKAGE BODY文を使用すると、ストアド・パッケージの本体を作成できます。パッケージとは、関連するプロシージャ、ストアド・ファンクション、およびデータベース上にまとめて格納されるその他のプログラム・オブジェクトの集合のことです。パッケージ本体では、これらのオブジェクトを定義します。前述のCREATE PACKAGE文で定義するパッケージ仕様部では、これらのオブジェクトを宣言します。

一連のプロシージャやファンクションをスタンドアロンのスキーマ・オブジェクトとして作成するかわりの方法としてパッケージを使用する方法があります。

参照:

  • スタンドアロン・ファンクションおよびプロシージャの作成については、「CREATE FUNCTION」および「CREATE PROCEDURE」を参照してください。

  • 作成方法を含むパッケージの詳細は、「CREATE PACKAGE」を参照してください。

  • パッケージの変更については、「ALTER PACKAGE」を参照してください。

  • データベースからのパッケージの削除については、「DROP PACKAGE」を参照してください。

 

前提条件

自分のスキーマ内にパッケージを作成または再作成する場合は、CREATE PROCEDUREシステム権限が必要です。他のユーザーのスキーマ内にパッケージを作成または再作成する場合は、CREATE ANY PROCEDUREシステム権限が必要です。どちらの場合も、パッケージ本体はパッケージと同じスキーマ内に作成される必要があります。

Oracle Databaseのプリコンパイラ・プログラム内にCREATE PACKAGE BODY文を埋め込む場合、キーワードEND-EXECに続けて、各言語の埋込みSQL文の終了記号を記述して文を終了する必要があります。

参照:

『Oracle Database PL/SQL言語リファレンス』 

構文

パッケージ本体はPL/SQLを使用して定義されます。このため、このマニュアルの構文図ではSQLキーワードのみを示します。PL/SQLの構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。

create_package_body::=

画像の説明

plsql_sourceについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。)

セマンティクス

OR REPLACE

OR REPLACEを指定すると、既存のパッケージ本体を再作成できます。この句を指定した場合、パッケージに対して付与されていたオブジェクト権限を削除、再作成および再付与しなくても、既存のパッケージの本体を変更できます。パッケージ本体を変更した場合、その本体は自動的に再コンパイルされます。

再定義したパッケージに対して権限が付与されていたユーザーは、権限が再付与されなくてもそのパッケージにアクセスできます。

参照:

パッケージ本体の再コンパイルについては、「ALTER PACKAGE」を参照してください。 

plsql_source

plsql_sourceの構文およびセマンティクスについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。


CREATE PFILE

用途

CREATE PFILE文を使用すると、バイナリのサーバー・パラメータ・ファイルまたは現行のメモリー内パラメータ設定をテキストの初期化パラメータ・ファイルにエクスポートできます。テキストのパラメータ・ファイルの作成は、データベースで使用している現行のパラメータ設定リストの取得に便利です。また、テキスト・エディタで簡単に編集でき、CREATE SPFILE文を使用してサーバー・パラメータ・ファイルに変換して戻すこともできます。

この文が正常に実行されると、サーバーにテキストのパラメータ・ファイルが作成されます。Oracle Real Application Clusters環境では、すべてのインスタンスのすべてのパラメータ設定が含まれます。サーバー・パラメータ・ファイルのパラメータ設定と同じ行のコメントも含まれます。

参照:

  • サーバー・パラメータ・ファイルの詳細は、「CREATE SPFILE」を参照してください。

  • テキストの初期化パラメータ・ファイルおよびバイナリのサーバー・パラメータ・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。

  • Oracle Real Application Clusters環境でのサーバー・パラメータ・ファイルの使用については、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

 

前提条件

この文を実行するには、SYSDBAロールまたはSYSOPERロールが必要です。この文は、インスタンスの起動前と起動後のいずれかで実行できます。

構文

create_pfile::=

画像の説明

セマンティクス

pfile_name

作成するテキストのパラメータ・ファイル名を指定します。pfile_nameを指定しないと、プラットフォーム固有のデフォルトの初期化パラメータ・ファイル名が使用されます。pfile_nameには、パス接頭辞を含めることができます。パス接頭辞を指定しない場合は、データベースによってデフォルトの格納場所(プラットフォームによって異なる)のパス接頭辞が追加されます。

spfile_name

テキストのファイルを作成する元となるバイナリのサーバー・パラメータ・ファイル名を指定します。

MEMORY

MEMORYを指定すると、現行のシステム全体のパラメータ設定を使用してpfileを作成できます。RAC環境では、作成されたファイルには各インスタンスからのパラメータ設定が含まれます。

パラメータ・ファイルの作成例:

次の例は、バイナリのサーバー・パラメータ・ファイルs_params.oraからテキストのパラメータ・ファイルmy_init.oraを作成します。

CREATE PFILE = 'my_init.ora' FROM SPFILE = 's_params.ora';


注意:

通常、オペレーティング・システムのパラメータ・ファイルには、フルパスのファイル名を指定する必要があります。パスについては、ご使用のオペレーティング・システムのOracleマニュアルを参照してください。 



CREATE PROCEDURE

用途

パッケージはPL/SQLを使用して定義されます。このため、この項では一般的な情報について説明します。構文およびセマンティクスの詳細は『Oracle Database PL/SQL言語リファレンス』を参照してください。

CREATE PROCEDURE文を使用すると、スタンドアロンのストアド・プロシージャまたはコール仕様を作成できます。

プロシージャとは、名前によってコールできるPL/SQL文の集合です。コール仕様は、SQLおよびPL/SQLからコールできるように、Javaメソッドまたは第三世代言語(3GL)ルーチンを宣言します。コール仕様は、コールされたときに起動するJavaメソッドをOracle Databaseに指示します。また、引数および戻り値に対して実行する型変換もデータベースに指示します。

ストアド・プロシージャには、開発、整合性、セキュリティ、パフォーマンスおよびメモリー割当ての面でいくつかのメリットがあります。

参照:

  • ストアド・プロシージャのコール方法など、ストアド・プロシージャの詳細および外部プロシージャの登録については、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。

  • プロシージャと類似点が多いファンクションの詳細は、「CREATE FUNCTION」を参照してください。

  • パッケージの作成の詳細は、「CREATE PACKAGE」を参照してください。CREATE PROCEDURE文では、スタンドアロンのスキーマ・オブジェクトとしてプロシージャが作成されます。また、プロシージャをパッケージの一部としても作成できます。

  • スタンドアロン・プロシージャの変更および削除については、「ALTER PROCEDURE」および「DROP PROCEDURE」を参照してください。

  • 共有ライブラリについては、「CREATE LIBRARY」を参照してください。

 

前提条件

自分のスキーマ内にプロシージャを作成または再作成する場合は、CREATE PROCEDUREシステム権限が必要です。他のユーザーのスキーマ内にプロシージャを作成または再作成する場合は、CREATE ANY PROCEDUREシステム権限が必要です。

コール仕様を起動する場合、その他の権限が必要になることがあります。たとえば、Cコール仕様には、Cライブラリに対するEXECUTEオブジェクト権限が必要です。

Oracleプリコンパイラ・プログラム内にCREATE PROCEDURE文を埋め込む場合、キーワードEND-EXECに続けて、各言語の埋込みSQL文の終了記号を記述して文を終了する必要があります。

参照:

詳細は、『Oracle Database PL/SQL言語リファレンス』または『Oracle Database Java開発者ガイド』を参照してください。 

構文

パッケージ本体はPL/SQLを使用して定義されます。このため、このマニュアルの構文図ではSQLキーワードのみを示します。PL/SQLの構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。

create_procedure::=

画像の説明

plsql_sourceについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。)

セマンティクス

OR REPLACE

OR REPLACEを指定すると、既存のプロシージャを再作成できます。この句を指定した場合、プロシージャに付与されているオブジェクト権限を削除、再作成および再付与しなくても、既存のプロシージャの定義を変更できます。プロシージャを再定義した場合、そのプロシージャは自動的に再コンパイルされます。

再定義したプロシージャに対して権限が付与されていたユーザーは、権限が再付与されなくてもそのプロシージャにアクセスできます。

ファンクション索引がパッケージに依存している場合、索引にDISABLEDのマークが付きます。

参照:

プロシージャの再コンパイルについては、「ALTER PROCEDURE」を参照してください。 

plsql_source

plsql_sourceの構文およびセマンティクスについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。


CREATE PROFILE


注意:

リソース制限を設定する場合、このSQL文ではなく、データベース・リソース・マネージャを使用することをお薦めします。データベース・リソース・マネージャを使用すると、リソース使用の管理および監査を柔軟に行うことができます。データベース・リソース・マネージャの詳細は、『Oracle Database管理者ガイド』を参照してください。 


用途

CREATE PROFILE文を使用すると、プロファイルを作成できます。プロファイルとは、データベース・リソースの制限の設定です。あるユーザーに対してプロファイルを割り当てた場合、そのユーザーは、その割当て制限を超えることはできません。

参照:

パスワード管理およびパスワード保護の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 

前提条件

プロファイルを作成する場合、CREATE PROFILEシステム権限が必要です。

次の方法でユーザーに対するリソース制限を指定します。

構文

create_profile::=

画像の説明

resource_parameters::=

画像の説明

size_clause::=を参照)

password_parameters::=

画像の説明

セマンティクス

profile

作成するプロファイルの名前を指定します。プロファイルを使用した場合、ユーザーが使用可能なデータベース・リソースを1つのコールまたは1つのセッションごとに制限できます。

Oracle Databaseでは、次の方法でリソース制限を適用します。

UNLIMITED

リソース・パラメータでUNLIMITEDを指定すると、このプロファイルを割り当てられたユーザーは無制限にリソースを使用できます。パスワード・パラメータでUNLIMITEDを指定した場合は、パラメータに制限が設定されていないことを示します。

DEFAULT

DEFAULTを指定すると、このプロファイルでリソースの制限を省略できます。このプロファイルを割り当てられたユーザーは、DEFAULTプロファイルで指定した対象リソースに対する制限を受けます。DEFAULTプロファイルは、最初に無制限のリソースを定義します。ALTER PROFILE文でこの制限を変更できます。

明示的にプロファイルが割り当てられていないユーザーは、DEFAULTプロファイルに定義されている制限を受けます。ユーザーに明示的に割り当てられているプロファイルでリソースに対する制限が省略されている場合、または制限に対してDEFAULTが指定されている場合、ユーザーはDEFAULTプロファイルで定義されているリソースに関する制限を受けます。

resource_parameters

SESSIONS_PER_USER

ユーザーを制限する同時セッションの数を指定します。

CPU_PER_SESSION

1セッション当たりのCPU時間制限を指定します。この値は100分の1秒単位で指定します。

CPU_PER_CALL

1コール(解析、実行またはフェッチ)当たりのCPU時間制限を指定します。この値は100分の1秒単位で指定します。

CONNECT_TIME

1セッション当たりの合計経過時間制限を指定します。この値は分単位で指定します。

IDLE_TIME

セッション中の連続的な非活動時間の長さを制限します。この値は分単位で指定します。長時間実行の問合せなどの処理は、この制限を受けません。

LOGICAL_READS_PER_SESSION

メモリーおよびディスクから読み込まれるブロックなど、1セッション中に読み込まれるデータ・ブロックの数の制限を指定します。

LOGICAL_READS_PER_CALL

SQL文(解析、実行またはフェッチ)を処理する1つのコールで読み込まれるデータ・ブロックの数の制限を指定します。

PRIVATE_SGA

1つのセッションでシステム・グローバル領域(SGA)の共有プール内に割り当てることができるプライベート領域の大きさを指定します。この句の詳細は、「size_clause」を参照してください。


注意:

この制限は、共有サーバー・アーキテクチャを使用している場合のみに適用されます。SGA内のセッション用のプライベート領域には、プライベートSQLおよびPL/SQL領域が含まれますが、共有SQLおよびPL/SQL領域は含まれません。 


COMPOSITE_LIMIT

1セッション当たりのリソースの総コストをサービス単位で指定します。サービス単位の合計は、CPU_PER_SESSIONCONNECT_TIMELOGICAL_READS_PER_SESSIONおよびPRIVATE_SGAの重み付き合計として計算されます。

参照:

 

password_parameters

次の句を使用すると、パスワード・パラメータを設定できます。時間の長さを設定するパラメータは、日数で解析されます。テストのために、分(n/1440)または秒(n/86400)を指定できます。

FAILED_LOGIN_ATTEMPTS

ユーザー・アカウントがロックされる前に、そのアカウントへのログインに失敗できる回数を指定します。この句を指定しない場合、10日がデフォルトになります。

PASSWORD_LIFE_TIME

同じパスワードを認証に使用できる日数を制限します。PASSWORD_GRACE_TIMEの値とともに設定した場合、猶予期間内にパスワードを変更しないと、そのパスワードは使用できなくなり、それ以降の接続は拒否されます。この句を指定しない場合、180日がデフォルトになります。

PASSWORD_REUSE_TIMEおよびPASSWORD_REUSE_MAX

これら2つのパラメータは、両方を組み合せて設定する必要があります。PASSWORD_REUSE_TIMEは、パスワードを再利用できない日数を指定します。PASSWORD_REUSE_MAXは、現行のパスワードを再利用する前に必要な、パスワードの変更回数を指定します。これらのパラメータを有効にするには、両方のパラメータに整数を指定する必要があります。

PASSWORD_LOCK_TIME

ログインが指定された回数連続して失敗した場合、アカウントがロックされる日数を指定します。この句を指定しない場合、1日がデフォルトになります。

PASSWORD_GRACE_TIME

警告が出され、ログインが許可される猶予期間の日数を指定します。この句を指定しない場合、7日がデフォルトになります。

PASSWORD_VERIFY_FUNCTION

PASSWORD_VERIFY_FUNCTION句を使用すると、PL/SQLの複雑なパスワード検証スクリプトをCREATE PROFILE文の引数として渡すことができます。Oracle Databaseにはデフォルトのスクリプトがありますが、ユーザー固有のルーチンを作成することも、サード・パーティのソフトウェアを使用することもできます。

パスワード・パラメータにexprを指定する場合、スカラー副問合せ式を除くすべての形式の式を指定できます。

参照:

「プロファイルのパスワード制限の設定例:」 

プロファイルの作成例:

次の文は、プロファイルnew_profileを作成します。

CREATE PROFILE new_profile
  LIMIT PASSWORD_REUSE_MAX 10
        PASSWORD_REUSE_TIME 30;
プロファイルのリソース制限の設定の例:

次の文は、プロファイルapp_userを作成します。

CREATE PROFILE app_user LIMIT 
   SESSIONS_PER_USER          UNLIMITED 
   CPU_PER_SESSION            UNLIMITED 
   CPU_PER_CALL               3000 
   CONNECT_TIME               45 
   LOGICAL_READS_PER_SESSION  DEFAULT 
   LOGICAL_READS_PER_CALL     1000 
   PRIVATE_SGA                15K
   COMPOSITE_LIMIT            5000000; 

ユーザーにapp_userプロファイルを割り当てた場合、そのユーザーは、後続のセッションで次の制限を受けます。

プロファイルのパスワード制限の設定例:

次の文は、app_user2プロファイルに、パスワード制限値を設定して作成します。

CREATE PROFILE app_user2 LIMIT
   FAILED_LOGIN_ATTEMPTS 5
   PASSWORD_LIFE_TIME 60
   PASSWORD_REUSE_TIME 60
   PASSWORD_REUSE_MAX 5
   PASSWORD_VERIFY_FUNCTION verify_function
   PASSWORD_LOCK_TIME 1/24
   PASSWORD_GRACE_TIME 10;

この例では、Oracle Databaseのデフォルトのパスワード検証ファンクションverify_functionを使用します。この検証ファンクションの使用方法または独自の検証ファンクションの設計方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。


CREATE RESTORE POINT

用途

CREATE RESTORE POINT文を使用すると、リストア・ポイント(タイムスタンプまたはデータベースのSCNに関連付けられた名前)を作成できます。リストア・ポイントを使用すると、表またはデータベースをリストア・ポイントによって指定された時点にフラッシュバックできます。その際、SCNやタイムスタンプを指定する必要はありません。リストア・ポイントは、バックアップやデータベースの複製など、様々なRecovery Manager操作でも有効です。Recovery Managerを使用して、アーカイブ・バックアップの実装プロセスにリストア・ポイントを作成できます。

参照:

  • リストア・ポイントおよび保証付きリストア・ポイントの作成と使用、データベースの複製およびアーカイブ・バックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

  • リストア・ポイントの使用方法および削除方法については、「FLASHBACK DATABASE」、「FLASHBACK TABLE」および「DROP RESTORE POINT」を参照してください。

 

前提条件

通常のリストア・ポイントを作成するには、SELECT ANY DICTIONARY権限またはFLASHBACK ANY TABLE権限のいずれかが必要です。保証付きリストア・ポイントを作成するには、SYSDBAシステム権限が必要です。

リストア・ポイントを表示または使用するには、SELECT ANY DICTIONARYまたはFLASHBACK ANY TABLEのいずれかのシステム権限か、SELECT_CATALOG_ROLEロールが必要です。

リストア・ポイントは、プライマリ・データベースまたはスタンバイ・データベースに作成できます。データベースは、オープンされている状態でも、マウントされているがオープンされていない状態でもかまいません。データベースがマウントされている場合、それが物理スタンバイ・データベースでなければ、整合性を保持して停止されてからマウントされている必要があります。

保証付きリストア・ポイントを作成する場合は、その前に、フラッシュ・リカバリ領域を作成しておく必要があります。フラッシュバック・データベースを使用可能にしておかなくても、リストア・ポイントは作成できます。ただし、フラッシュバック・データベースが使用可能になっていない場合、このデータベースに作成する最初の保証付きリストア・ポイントは、データベースのマウント時に作成する必要があります。保証付きリストア・ポイントを作成する場合、データベースはARCHIVELOGモードになっていることが必要です。

構文

create_restore_point::=

画像の説明

セマンティクス

restore_point

リストア・ポイントの名前を指定します。名前は、最大128文字の文字値です。

データベースには、最大2048個のリストア・ポイントを保持できます。リストア・ポイントは、少なくとも初期化パラメータCONTROL_FILE_RECORD_KEEP_TIMEで指定された日数はデータベース内に保持されます。そのパラメータのデフォルト値は7日です。保証付きおよび保存済のリストア・ポイントは、ユーザーが明示的に削除するまでデータベース内に保持されます。

PRESERVEGUARANTEE FLASHBACK DATABASEも指定しない場合、結果のリストア・ポイントによって、DB_FLASHBACK_RETENTION_TARGET初期化パラメータで設定された期間内のリストア・ポイントにデータベースをフラッシュバックできます。そのようなリストア・ポイントは、データベースによって自動的に管理されます。リストア・ポイントの数が、前述のrestore_pointで定められた最大数に達すると、最も古いリストア・ポイントが自動的に削除されます。一定の状況では長期バックアップのリストアに使用するために、リストア・ポイントはRecovery Managerリカバリ・カタログに保持されます。DROP RESTORE POINT文を使用して、リストア・ポイントを明示的に削除することもできます。

AS OF句

この句を使用すると、過去の指定した日時またはSCNでリストア・ポイントを作成できます。TIMESTAMPを指定する場合、exprは過去の日時となる有効な日時式である必要があります。SCNを指定する場合、exprは過去のデータベースの有効なSCNである必要があります。どちらの場合にも、exprはデータベースの現行のインカネーションの日時またはSCNを参照する必要があります。

PRESERVE

PRESERVEを指定すると、リストア・ポイントを明示的に削除する必要があることを指定できます。このようなリストア・ポイントは、フラッシュバック履歴機能で使用するために作成すると有効です。

GUARANTEE FLASHBACK DATABASE

保証付きリストア・ポイントの場合、初期化パラメータDB_FLASHBACK_RETENTION_TARGETの設定とは無関係に、データベースをリストア・ポイントに確定的にフラッシュバックできます。フラッシュバック機能が保証されるかどうかは、フラッシュ・リカバリ領域に十分な使用可能スペースがあるかどうかによって決まります。

保証付きリストア・ポイントで保証されるのは、データベースを保証付きリストア・ポイントにフラッシュバックするのに十分なフラッシュバック・ログが、データベースに保持されるということのみです。すべての表を同じリストア・ポイントにフラッシュバックするためのUNDOがデータベースに保持されるかどうかは保証されません。

保証付きリストア・ポイントは、常に保存されます。DROP RESTORE POINT文を使用してユーザーが明示的に削除する必要があります。このリストア・ポイントは、期限切れになることはありません。保証付きリストア・ポイントは、フラッシュ・リカバリ領域内の領域を大量に使用する場合があります。このため、保証付きリストア・ポイントは十分に検討したうえで作成することをお薦めします。

リストア・ポイントを作成して使用する例:

次の例では、通常のリストア・ポイントを作成し、表を更新してから、変更した表をリストア・ポイントにフラッシュバックします。この例は、ユーザーhrがそれぞれの文を使用する適切なシステム権限を持っていることを前提としています。

CREATE RESTORE POINT good_data;

SELECT salary FROM employees WHERE employee_id = 108;

    SALARY
----------
     12000

UPDATE employees SET salary = salary*10
   WHERE employee_id = 108;

SELECT salary FROM employees
   WHERE employee_id = 108;

    SALARY
----------
    120000

COMMIT;

FLASHBACK TABLE employees TO RESTORE POINT good_data;

SELECT salary FROM employees
   WHERE employee_id = 108;

    SALARY
----------
     12000

CREATE ROLE

用途

CREATE ROLE文を使用すると、ロールを作成できます。ロールは、ユーザーまたは他のロールに付与できる権限の集合です。ロールを使用してデータベース権限を管理できます。ロールに権限を追加したうえで、ユーザーにそのロールを付与できます。その後、ユーザーはロールを使用可能にし、そのロールによって付与された権限を使用できるようになります。

ロールには、そのロールに付与されたすべての権限、およびそのロールに付与された他のロールのすべての権限が含まれています。新しく作成されたロールには、ロールや権限は付与されていません。GRANT文を使用して、ロールに様々な権限を追加します。

NOT IDENTIFIEDIDENTIFIED EXTERNALLYまたはBY passwordロールを作成した場合、そのロールはADMIN OPTION付きで付与されます。ただし、ロールIDENTIFIED GLOBALLYを作成した場合、ロールは付与されません。

参照:

  • ロールの付与については、「GRANT」を参照してください。

  • ロールを使用可能にする場合は、「ALTER USER」を参照してください。

  • データベースのロールの変更または削除については、「ALTER ROLE」および「DROP ROLE」を参照してください。

  • 現行のセッションに対するロールの使用可能化および使用禁止化については、「SET ROLE」を参照してください。

  • ロールの概要は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

 

前提条件

CREATE ROLEシステム権限が必要です。

構文

create_role::=

画像の説明

セマンティクス

role

作成するロールの名前を指定します。データベース・キャラクタ・セットにマルチバイト文字がサポートされている場合でも、ロールにはシングルバイト文字を1つ以上使用することをお薦めします。各ユーザーに対し、一度に使用可能にできるユーザー定義のロールの最大数は148です。

配布メディアで提供されているSQLスクリプトには、いくつかのロールが定義されています。

参照:

事前定義済のロールのリストについては、「GRANT」を、ユーザーに対するロールの使用可能化および使用禁止化については、「SET ROLE」を参照してください。 

NOT IDENTIFIED句

NOT IDENTIFIEDを指定すると、指定するロールがデータベースによって認可され、パスワードを入力しなくてもこのロールを使用可能にできます。

IDENTIFIED句

IDENTIFIED句を使用すると、SET ROLE文によってロールを使用可能にする前に、指定したメソッドによってユーザーが認可される必要があります。

BY password

BY password句を使用すると、ローカル・ロールを作成できます。また、ロールを使用可能にするときに、パスワードを指定する必要があることを指定できます。データベース・キャラクタ・セットにマルチバイト文字が含まれている場合でも、データベース・キャラクタ・セットのシングルバイト文字のみでパスワードを指定できます。

USING package

USING package句を使用すると、保護アプリケーション・ロールを作成できます。保護アプリケーション・ロールとは、認可済パッケージのみを使用するアプリケーションよって使用可能になるロールです。schemaを指定しない場合、パッケージが自分のスキーマ内にあるとみなされます。


注意:

ユーザーにロールを付与する場合、ロールはユーザーのデフォルトのロールとして付与されるため、ログインするとすぐに使用可能になります。アプリケーション・ロールのセキュリティを確保するには、ロールをデフォルトのロールにしないようにする必要があります。ユーザーにアプリケーション・ロールを付与した直後に、DEFAULT ROLE ALL EXCEPT role句を指定したALTER USER文を発行し、アプリケーション・ロールを指定します。これによって、このユーザーによる以降のログイン時に、認可済パッケージを使用するアプリケーションのみがこのロールを使用可能にできるというルールが適用されます。 


参照:

保護アプリケーション・ロールの作成については、『Oracle Databaseセキュリティ・ガイド』を参照してください。 

EXTERNALLY

EXTERNALLYを指定すると、外部ロールを作成できます。外部ユーザーは、ロールを使用可能にする前に、オペレーティング・システムやサード・パーティ・サービスなどの外部サービスによって認可されている必要があります。

オペレーティング・システムによっては、ユーザーがオペレーティング・システムに対してパスワードを指定しないと、ロールが使用可能にできない場合もあります。

GLOBALLY

GLOBALLYを指定すると、グローバル・ロールを作成できます。グローバル・ユーザーは、ログイン時にロールの使用が可能になる前に、エンタープライズ・ディレクトリ・サービスによってロールの使用を認可されている必要があります。

NOT IDENTIFIED句およびIDENTIFIED句を両方とも省略した場合、ロールにはNOT IDENTIFIEDがデフォルト値として使用されます。

ロールの作成例:

次の文は、ロールdw_managerを作成します。

CREATE ROLE dw_manager;

この後にdw_managerロールを付与されるユーザーは、このロールに付与されているすべての権限を継承します。

次の例のように、パスワードの指定によってロールにセキュリティのレイヤーを追加できます。

CREATE ROLE dw_manager
   IDENTIFIED BY warehouse; 

この後、dw_managerロールを付与されたユーザーは、パスワードwarehouseを指定して、SET ROLE文でロールを使用可能にする必要があります。

次の文は、グローバル・ロールwarehouse_userを作成します。

CREATE ROLE warehouse_user IDENTIFIED GLOBALLY;

次の文は、同じロールを外部ロールとして作成します。

CREATE ROLE warehouse_user IDENTIFIED EXTERNALLY;

CREATE ROLLBACK SEGMENT


注意:

ロールバック・セグメントを使用せずに、自動UNDO管理モードでデータベースを実行することを強くお薦めします。ロールバック・セグメントは、以前のバージョンのOracle Databaseとの互換性に必要な場合以外は使用しないでください。自動UNDO管理の詳細は、『Oracle Database管理者ガイド』を参照してください。 


用途

CREATE ROLLBACK SEGMENT文を使用すると、ロールバック・セグメントを作成できます。ロールバック・セグメントとは、トランザクションによる変更を元に戻す(取り消す)ために必要なデータを格納する際にOracle Databaseが使用するオブジェクトです。

ここでは、データベースがロールバックUNDOモードで実行されている(初期化パラメータUNDO_MANAGEMENTMANUALを設定、またはすべて設定しない)ことを前提としています。データベースが自動UNDOモードで実行されている場合(初期化パラメータUNDO_MANAGEMENTにデフォルト値のAUTOを設定)、ユーザー作成のロールバック・セグメントには関連がなくなります。

また、データベースにローカル管理SYSTEM表領域がある場合、ディクショナリ管理表領域にロールバック・セグメントは作成できません。かわりに、自動UNDO管理機能を使用するか、またはローカル管理表領域を作成して、ロールバック・セグメントを保持する必要があります。


注意:

1つの表領域に複数のロールバック・セグメントを作成できます。一般に、複数のロールバック・セグメントがあると、パフォーマンスが向上します。

  • 表領域にロールバック・セグメントを追加する場合、表領域は必ずオンラインである必要があります。

  • ロールバック・セグメントを作成した場合、最初はオフライン状態になります。そのロールバック・セグメントをOracle Databaseインスタンスでトランザクション可能にする場合、ALTER ROLLBACK SEGMENT文を使用してオンラインの状態にしてください。データベース起動時に自動的にオンライン状態にする場合、初期化パラメータROLLBACK_SEGMENTの値にそのセグメントの名前を追加してください。

 

SYSTEM以外の表領域のオブジェクトを使用する場合は、次の注意事項があります。

前提条件

ロールバック・セグメントを作成するには、CREATE ROLLBACK SEGMENTシステム権限が必要です。

構文

create_rollback_segment::=

画像の説明

storage_clauseを参照)

セマンティクス

PUBLIC

PUBLICを指定すると、ロールバック・セグメントがパブリックとなり、すべてのインスタンスに対して使用可能にできます。この句を省略した場合、ロールバック・セグメントはプライベートになり、インスタンスの初期化パラメータROLLBACK_SEGMENTSで指定したインスタンスに対してのみ使用可能になります。

rollback_segment

作成するロールバック・セグメントの名前を指定します。

TABLESPACE

TABLESPACE句を使用すると、ロールバック・セグメントが作成される表領域を指定できます。この句を省略した場合、ロールバック・セグメントはSYSTEM表領域に作成されます。


注意:

Oracle Databaseは、頻繁にロールバック・セグメントにアクセスする必要があります。そのため、明示的または(この句を省略して)暗黙的に、ロールバック・セグメントをSYSTEM表領域に作成しないことをお薦めします。さらに、ロールバック・セグメントが含まれている表領域の競合を回避するために、この表領域には表、索引などの他のオブジェクトを含めないでください。また、エクステントの割当ておよび割当て解除は、最小限に抑える必要があります。

そのためには、自動割当てを使用禁止にしてローカル管理表領域にロールバック・セグメントを作成します。ローカル管理表領域とは、EXTENT MANAGEMENT LOCAL句にUNIFORMを指定して作成された表領域です。AUTOALLOCATE設定はサポートされません。 


参照:

「CREATE TABLESPACE」 

storage_clause

storage_clauseを使用すると、ロールバック・セグメントの記憶特性を指定できます。

ロールバック・セグメントの作成例:

次の文は、適切に構成された表領域にデフォルトの記憶域値でロールバック・セグメントを作成します。

CREATE TABLESPACE rbs_ts
   DATAFILE 'rbs01.dbf' SIZE 10M
   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100K;

/* This example and the next will fail if your database is in 
   automatic undo mode.
*/
CREATE ROLLBACK SEGMENT rbs_one
   TABLESPACE rbs_ts;

前述の文は、次の文と同じ結果になります。

CREATE ROLLBACK SEGMENT rbs_one
   TABLESPACE rbs_ts
   STORAGE
   ( INITIAL 10K
     NEXT 10K
     MAXEXTENTS UNLIMITED );

CREATE SCHEMA

用途

CREATE SCHEMA文を使用すると、複数表およびビューを作成し、自分のスキーマ内に1つのトランザクションで複数の権限を付与できます。

CREATE SCHEMA文を実行すると、挿入されている個々の文が実行されます。すべての文が正常に実行された場合、そのトランザクションがコミットされます。文の結果が1つでもエラーになった場合は、すべての文がロールバックされます。


注意:

この文では、実際にスキーマが作成されるわけではありません。ユーザーを作成すると、自動的にスキーマが作成されます(「CREATE USER」を参照)。この文を実行すると、複数のトランザクションで複数のSQL文を発行しなくても、スキーマに表およびビューが移入され、これらのオブジェクトに対する権限が付与されます。 


前提条件

CREATE SCHEMA文には、CREATE TABLE文、CREATE VIEW文およびGRANT文を含めることができます。CREATE SCHEMA文を発行する場合は、挿入した文を発行するための権限が必要です。

構文

create_schema::=

画像の説明

セマンティクス

schema

スキーマの名前を指定します。スキーマ名は、Oracle Databaseユーザー名と一致している必要があります。

create_table_statement

このCREATE SCHEMA文の一部として発行するCREATE TABLE文を指定します。この文の終わりには、セミコロン(またはその他の終了文字)を付けないでください。

参照:

「CREATE TABLE」 

create_view_statement

このCREATE SCHEMA文の一部として発行するCREATE VIEW文を指定します。この文の終わりには、セミコロン(またはその他の終了文字)を付けないでください。

参照:

「CREATE VIEW」 

grant_statement

このCREATE SCHEMA文の一部として発行するGRANT文を指定します。この文の終わりには、セミコロン(またはその他の終了文字)を付けないでください。この句を使用すると、所有するオブジェクトに対するオブジェクト権限を、他のユーザーに付与できます。また、WITH ADMIN OPTION付きでシステム権限を付与されている場合、それらの権限を他のユーザーに付与できます。

参照:

「GRANT」 

CREATE SCHEMA文は、Oracle Databaseでサポートされている完全な構文ではなく、標準SQLで定義されている構文のみをサポートします。

CREATE TABLECREATE VIEWおよびGRANTの各文を指定する順序は重要ではありません。CREATE SCHEMA文の中の文では、既存のオブジェクトまたは同じCREATE SCHEMA文の他の文で作成したオブジェクトを参照できます。

スキーマに対する権限付与の制限事項:

parallel_clause構文は、CREATE SCHEMACREATE TABLE文で使用できますが、オブジェクトの作成時に並列度は使用されません。

参照:

詳細は、「CREATE TABLE」の「parallel_clause」を参照してください。 

スキーマの作成例:

次の文は、サンプルの注文入力ユーザーoe用のoeという名前のスキーマ、表new_product、ビューnew_product_viewを作成し、サンプルの人事情報のユーザーhrnew_product_viewに対するSELECTオブジェクト権限を付与します。

CREATE SCHEMA AUTHORIZATION oe
   CREATE TABLE new_product 
      (color VARCHAR2(10)  PRIMARY KEY, quantity NUMBER) 
   CREATE VIEW new_product_view 
      AS SELECT color, quantity FROM new_product WHERE color = 'RED' 
   GRANT select ON new_product_view TO hr; 

CREATE SEQUENCE

用途

CREATE SEQUENCE文を使用すると、順序を作成できます。順序とは、データベース・オブジェクトの1つで、これを使用して複数のユーザーが一意の整数を生成することができます。順序を使用した場合、主キー値が自動的に生成されます。

順序番号が生成されると、順序はトランザクションのコミットやロールバックとは無関係に増加していきます。2人のユーザーが、同時に同一の順序を増加させると、ユーザーがそれぞれ順序番号を生成しているため、取得する順序番号間に違いが発生することもあります。他のユーザーが生成した順序番号は取得できません。あるユーザーが順序値を生成すると、他のユーザーがその順序を増加させたかどうかに関係なく、順序を生成したユーザーは引き続きその値にアクセスできます。

順序番号は表から独立して生成されるため、1つ以上の表に対して同一の順序を使用することができます。生成された順序番号が、最終的にロールバックされるトランザクションで使用されたため、個々の順序番号が連続していないように見える場合があります。また、他のユーザーが同一順序を使用していることを個々のユーザーが認識しない場合もあります。

順序が作成されると、SQL文の中でCURRVAL疑似列を使用してその値にアクセスできます(この場合、その順序の現在の値が戻ります)。また、NEXTVAL疑似列を使用してもアクセスできます(この場合は、順序が増加され、新しい値が戻ります)。

参照:

 

前提条件

自分のスキーマ内に順序を作成する場合は、CREATE SEQUENCEシステム権限が必要です。

他のユーザーのスキーマ内に順序を作成する場合は、CREATE ANY SEQUENCEシステム権限が必要です。

構文

create_sequence::=

画像の説明

セマンティクス

schema

順序を含めるスキーマを指定します。schemaを省略した場合、自分のスキーマ内に順序が作成されます。

sequence

作成する順序の名前を指定します。

次の句のうちどれも指定しない場合は、1から始まる昇順の順序が作成され、上限なしで1ずつ増加していきます。INCREMENT BYに-1のみを指定した場合は、初期値を-1として、下限なしで1つずつ減少していきます。

INCREMENT BY

順序の番号間の増分間隔を指定します。この値は、0(ゼロ)以外の正の整数または負の整数になります。この値には、28桁以内の値を指定できます。この値の絶対値は、MAXVALUEMINVALUEの差未満である必要があります。この値が負の場合、順序は降順になります。この値が正の場合、順序は昇順になります。この句を省略した場合、デフォルトで増分間隔は1に設定されます。

START WITH

生成する順序番号の初期値を指定します。この句を指定した場合、順序の最小値より大きい値を初期値として昇順を開始することも、最大値よりも小さい値を初期値として降順を開始することもできます。昇順の場合、デフォルト値は順序の最小値になります。降順の場合、デフォルト値は順序の最大値になります。28桁以内の整数値を指定できます。


注意:

この値は、必ずしも、順序の最大値または最小値に達した後に、昇順で循環する順序が戻るときの値ではありません。 


MAXVALUE

順序の最大値を指定します。28桁以内の整数値を指定できます。MAXVALUE値は、START WITH以上で、かつMINVALUEを超える値である必要があります。

NOMAXVALUE

NOMAXVALUEを指定すると、順序の最大値を、昇順の場合は1027、降順の場合は-1に指定できます。これはデフォルトです。

MINVALUE

順序の最小値を指定します。28桁以内の整数値を指定できます。MINVALUE値は、START WITH以下で、かつMAXVALUE未満である必要があります。

NOMINVALUE

NOMINVALUEを指定すると、順序の最小値を、昇順の場合は1、降順の場合は-1026に指定できます。これはデフォルトです。

CYCLE

CYCLEを指定すると、順序が最大値または最小値に達しても、引き続き値を生成できます。つまり、昇順の場合は、最大値に達すると最小値が生成されます。降順の場合は、最小値に達すると最大値が生成されます。

NOCYCLE

NOCYCLEを指定すると、順序が最大値または最小値に達した場合は、それ以上値を生成しないように指定できます。これはデフォルトです。

CACHE

より高速に順序番号にアクセスできるように、メモリー上に事前に割り当て、保持しておく順序番号の数を指定します。28桁以内の整数値を指定できます。このパラメータの最小値は2です。循環する順序の場合、この値は、そのサイクル内で生成される値の数未満である必要があります。指定したサイクル内で生成される順序番号の数を超える値はキャッシュできません。したがって、CACHEに指定できる値の最大値は、次の式で求められる値未満である必要があります。

(CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT)

システム障害が発生すると、キャッシュされた順序の値のうち、コミットされたDML文で使用されていなかったものはすべて失われます。したがって、失われる可能性がある値の数は、CACHEパラメータの値と等しくなります。


注意:

Oracle Real Application Clusters環境で順序を使用する場合は、パフォーマンスを向上するために、CACHEの設定を使用することをお薦めします。 


NOCACHE

NOCACHEを指定すると、順序の値を事前に割り当てないように指定できます。CACHEおよびNOCACHEの両方を省略した場合、デフォルトで20の順序番号がキャッシュされます。

ORDER

ORDERを指定すると、要求どおりの順序で順序番号を生成することを保証できます。順序番号をタイムスタンプとして使用する場合に、この句は有効です。通常、主キー生成用の順序については、順序どおりに生成するかどうかの保証は重要ではありません。

Oracle Real Application Clustersを使用する場合、ORDERは順序どおりの生成を確保する場合にのみ必要です。排他モードの場合、順序番号は必ず順序どおりに生成されます。

NOORDER

NOORDERを指定すると、要求どおりの順で順序番号を生成することは保証されません。これはデフォルトです。

順序の作成例:

次の文は、サンプル・スキーマoeに順序customers_seqを作成します。この順序は、customers表に行が追加されるときに、顧客ID番号として使用できます。

CREATE SEQUENCE customers_seq
 START WITH     1000
 INCREMENT BY   1
 NOCACHE
 NOCYCLE;

最初にcustomers_seq.nextvalを参照したときは、1000が戻されます。次に参照したときは、1001が戻されます。同様に、この後の各参照で、前回参照された値より1大きい値が戻されます。


CREATE SPFILE

用途

CREATE SPFILEを使用すると、従来のプレーンテキストの初期化パラメータ・ファイルまたは現行のシステム全体の設定から、サーバー・パラメータ・ファイルを作成できます。サーバー・パラメータ・ファイルは、サーバーのみに存在し、データベースを起動するためにクライアントからコールされるバイナリ・ファイルです。

サーバー・パラメータ・ファイルを指定すると、個々のパラメータを永続的に変更できます。サーバー・パラメータ・ファイルを使用する場合、新しいパラメータ値を永続化するALTER SYSTEM SET parameter文を指定できます。新しい値は、現行のインスタンスのみでなく、その後で起動するすべてのインスタンスにおいて適用されます。従来のプレーンテキストのパラメータ・ファイルでは、パラメータ値を永続的に変更できません。

サーバー・パラメータ・ファイルは、サーバー上に存在するため、Oracle Databaseによる自動データベースのチューニングおよびRecovery Managerによるバックアップが可能です。

データベースの起動時にサーバー・パラメータ・ファイルを使用するには、CREATE SPFILE文を使用してサーバー・パラメータ・ファイルを作成する必要があります。

Oracle Real Application Clusters環境のすべてのインスタンスは、同一のサーバー・パラメータ・ファイルを使用する必要があります。ただし、個々のインスタンスで1つのファイル内の同じパラメータで異なる設定が可能な場合もあります。インスタンス固有のパラメータ定義は、SID.parameter = valueで指定します。SIDにはインスタンス識別子を指定します。

サーバー・パラメータ・ファイルを使用したデータベースの起動方法は、作成したサーバー・パラメータ・ファイルをデフォルトで作成したか、または非デフォルトで作成したかによって異なります。サーバー・パラメータ・ファイルの使用方法については、「サーバー・パラメータ・ファイルの作成例:」を参照してください。

参照:

  • バイナリのサーバー・パラメータ・ファイルから正規のテキストのパラメータ・ファイルを作成する場合の詳細は、「CREATE PFILE」を参照してください。

  • 従来のプレーンテキストの初期化パラメータ・ファイルおよびサーバー・パラメータ・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。

  • Oracle Real Application Clusters環境でのサーバー・パラメータ・ファイルの使用については、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

 

前提条件

この文を実行するには、SYSDBAシステム権限またはSYSOPERシステム権限が必要です。この文は、インスタンスの起動前と起動後のいずれかで実行できます。ただし、spfile_nameを使用して、インスタンスがすでに起動済の場合は、この文で同じspfile_nameを指定できません。

構文

create_spfile::=

画像の説明

セマンティクス

spfile_name

この句を指定すると、作成するサーバー・パラメータ・ファイルの名前を指定できます。

spfile_nameには、パス接頭辞を含めることができます。パス接頭辞を指定しない場合は、データベースによってデフォルトの格納場所(プラットフォームによって異なる)のパス接頭辞が追加されます。

参照:

  • デフォルトおよびデフォルト以外のサーバー・パラメータ・ファイルを使用したデータベースの起動の詳細は、「サーバー・パラメータ・ファイルの作成例:」を参照してください。

  • デフォルトのパラメータ・ファイル名については、オペレーティング・システム固有のドキュメントを参照してください。

 

pfile_name

サーバー・パラメータ・ファイルを作成する元になる従来のプレーンテキストの初期化パラメータ・ファイル名を指定します。従来のパラメータ・ファイルは、サーバー上にある必要があります。

MEMORY

MEMORYを指定すると、現行のシステム全体のパラメータ設定を使用してspfileを作成できます。RAC環境では、作成されたファイルには各インスタンスからのパラメータ設定が含まれます。

サーバー・パラメータ・ファイルの作成例:

次の例は、クライアントの初期化パラメータ・ファイルt_init1.oraからデフォルトのサーバー・パラメータ・ファイルを作成します。

CREATE SPFILE 
   FROM PFILE = '$ORACLE_HOME/work/t_init1.ora';


注意:

通常、オペレーティング・システムのパラメータ・ファイルには、フルパスのファイル名を指定する必要があります。 


デフォルトのサーバー・パラメータ・ファイルを作成する場合、その後のデータベースの起動は、次のようにPFILEパラメータなしでSQL*PlusのコマンドSTARTUPを実行し、サーバー・パラメータ・ファイルを使用します。

STARTUP

次の例は、クライアントの初期化パラメータ・ファイルt_init1.oraからデフォルト以外のサーバー・パラメータ・ファイルs_params.oraを作成します。

CREATE SPFILE = 's_params.ora' 
   FROM PFILE = '$ORACLE_HOME/work/t_init1.ora';

デフォルト以外のサーバー・パラメータ・ファイルを作成する場合、次の単一行を含む以前のパラメータ・ファイルを最初に作成し、その後でデータベースを起動します。

spfile = 's_params.ora'

このパラメータ・ファイル名は、ご使用のオペレーティング・システムのネーミング規則に従う必要があります。その後、STARTUPコマンドで単一行のパラメータ・ファイルを使用します。次の例では、単一行のパラメータ・ファイルの名前がnew_param.oraであるとした場合のデータベースの起動方法を示します。

STARTUP PFILE=new_param.ora


戻る 次へ
Oracle
Copyright © 1996, 2008, Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引