| Oracle Database SQL言語リファレンス 11g リリース1(11.1) E05750-03 |
|
この章では、次のSQL文について説明します。
マテリアライズド・ビューは、問合せ結果を含むデータベース・オブジェクトです。問合せのFROM句には、表、ビューおよびその他のマテリアライズド・ビューを指定できます。これらをあわせて、マスター表(レプリケーション用語)またはディテール表(データ・ウェアハウス用語)といいます。このマニュアルでは、マスター表という用語を使用します。マスター表が格納されているデータベースをマスター・データベースといいます。
ALTER MATERIALIZED VIEW文を使用すると、既存のマテリアライズド・ビューを次の方法で変更できます。
参照:
マテリアライズド・ビューを変更するために必要な権限は、次のように直接付与される必要があります。
マテリアライズド・ビューが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER ANY MATERIALIZED VIEWシステム権限が必要です。
クエリー・リライトでマテリアライズド・ビューを使用可能にする場合、次の条件が必要です。
QUERY REWRITE権限が必要です。
GLOBAL QUERY REWRITE権限が必要です。
QUERY REWRITE権限が必要です。また、マテリアライズド・ビューの所有者は、マテリアライズド・ビュー所有者が所有しないすべてのマスター表へのSELECT権限を持っている必要があります。
(「ALTER TABLE」の項にあるphysical_attributes_clause::=、table_compression::=、LOB_storage_clause::=、modify_LOB_storage_clause::=、alter_table_partitioning::=、parallel_clause::=、logging_clause::=、allocate_extent_clause::=、alter_iot_clauses::=、scoped_table_ref_constraint::=、alter_mv_refresh::=を参照)
(storage_clause::=を参照)
(LOB_storage_parameters::=を参照)
(LOB_parameters::=、storage_clause::=を参照)
(storage_clause::=、logging_clause::=を参照)
(storage_clause::=、LOB_retention_clause::=、LOB_compression_clause::=、logging_clause::=、allocate_extent_clause::=、shrink_clause::=、deallocate_unused_clause::=を参照)
(size_clause::=を参照)
(size_clause::=を参照)
(index_org_table_clause::=、alter_overflow_clause::=を参照。alter_mapping_table_clausesは、マテリアライズド・ビューではサポートされていません。)
(mapping_table_clauseおよびkey_compressionは、マテリアライズド・ビューではサポートされていません。index_org_overflow_clause::=を参照)
(「ALTER TABLE」の項にあるsegment_attributes_clause::=を参照)
(allocate_extent_clause::=、shrink_clause::=、deallocate_unused_clause::=を参照)
(「ALTER TABLE」の項にあるsegment_attributes_clause::=を参照)
マテリアライズド・ビューが含まれているスキーマを指定します。schemaを指定しない場合、マテリアライズド・ビューは自分のスキーマ内にあるとみなされます。
変更するマテリアライズド・ビューの名前を指定します。
PCTFREE、PCTUSED、INITRANSパラメータの値(USING INDEX句で使用する場合は、INITRANSパラメータ値のみ)、およびマテリアライズド・ビューの記憶特性を指定します。PCTFREE、PCTUSEDおよびINITRANSパラメータの詳細は、「ALTER TABLE」を参照してください。記憶特性の詳細は、「storage_clause」を参照してください。
table_compression句を使用すると、ディスクおよびメモリーの使用量を削減するために、データ・セグメントを圧縮するかどうかを指定できます。この句のセマンティクスの詳細は、「CREATE TABLE」のtable_compression句を参照してください。
LOB_storage_clauseを使用すると、新しいLOBの記憶特性を指定できます。マテリアライズド・ビューのLOB記憶域は、表の場合と同様に動作します。LOB記憶域パラメータの詳細は、「CREATE TABLE」の「LOB_storage_clause」を参照してください。
modify_LOB_storage_clauseを使用すると、LOB属性LOB_itemの物理属性またはLOBオブジェクト属性を変更できます。マテリアライズド・ビューのLOB記憶域の変更は、表の場合と同様に動作します。
マテリアライズド・ビューのalter_table_partitioningの構文および一般的な機能は、パーティション表と同じです。「ALTER TABLE」の「alter_table_partitioning」を参照してください。
partitioning_clausesでは、LOB_storage_clauseまたはmodify_LOB_storage_clauseを指定できません。
この句を使用すると、partitionに関連付けられたすべてのローカル索引パーティションに、UNUSABLEのマークが付きます。
この句を使用すると、partitionに関連付けられた、使用禁止のローカル索引パーティションを再構築できます。
parallel_clauseを使用すると、マテリアライズド・ビューのデフォルトの並列度を変更できます。
この句の詳細は、「CREATE TABLE」の「parallel_clause」を参照してください。
この句を使用すると、マテリアライズド・ビューのロギング特性を指定または変更できます。この句の詳細は、「logging_clause」を参照してください。
allocate_extent_clauseを使用すると、マテリアライズド・ビューの新しいエクステントを明示的に割り当てることができます。この句の詳細は、「allocate_extent_clause」を参照してください。
この句を使用すると、マテリアライズド・ビューのセグメントを縮小化できます。この句の詳細は、「CREATE TABLE」の「shrink_clause」を参照してください。
アクセス頻度の高いデータについて、CACHEは、全表スキャンの実行時にこの表に対して取り出された各ブロックを、バッファ・キャッシュのLRUリストの最高使用頻度側に入れることを指定します。この属性は、小規模な参照表で有効です。NOCACHEは、ブロックをLRUリストの最低使用頻度側に入れることを指定します。この句の詳細は、「CREATE TABLE」の「CACHE | NOCACHE | CACHE READS」を参照してください。
alter_iot_clausesを使用すると、索引構成マテリアライズド・ビューの特性を変更できます。alter_iot_clausesコンポーネントのキーワードおよびパラメータは、ALTER TABLEと同じです。また、次の制限事項があります。
index_org_table_clauseのmapping_table_clausesまたはkey_compression句は指定できません。
この句を使用すると、マテリアライズド・ビューのデータをメンテナンスするために使用される索引のINITRANSパラメータおよびSTORAGEパラメータの値を変更できます。
この句では、PCTUSEDまたはPCTFREEパラメータは指定できません。
MODIFY scoped_table_ref_constraint句を使用すると、新しい表または新しい列の別名にREF列または属性の有効範囲を再指定できます。
ALTER MATERIALIZED VIEW文では、1つのREF列または属性の有効範囲のみを再指定することができます。この句は、この文以外では使用できません。
alter_mv_refresh句を使用すると、自動リフレッシュの方法、モードおよび日時のデフォルト値を変更できます。マテリアライズド・ビューのマスター表の内容が変更された場合、マテリアライズド・ビューのデータを更新し、現在マスター表にあるデータを正確に反映させる必要があります。この句によって、自動的にマテリアライズド・ビューをリフレッシュする日時をスケジューリングし、リフレッシュの方法およびモードを指定できます。
FASTを指定すると、増分リフレッシュ方法を指定できます。これはマスター表に対して行った変更に従ってリフレッシュを行います。この変更は、マスター表に関連付けられたマテリアライズド・ビュー・ログ(従来型DML変更の場合)またはダイレクト・ローダー・ログ(ダイレクト・パス・インサート操作の場合)に格納されます。
従来型DMLの変更の場合も、ダイレクト・パス・インサート操作の場合も、他の条件によって、高速リフレッシュへのマテリアライズド・ビューの適応性が制限されることがあります。
|
参照:
|
FASTリフレッシュには、次の制限事項があります。
FASTリフレッシュを指定した場合、作成するマテリアライズド・ビューは高速リフレッシュに適応することが検証されています。ALTER MATERIALIZED VIEW文でリフレッシュ方法をFASTに変更した場合、これは検証されていません。マテリアライズド・ビューが高速リフレッシュに適応しない場合、このビューをリフレッシュしようとするとエラーが戻されます。
COMPLETEを指定すると、完全リフレッシュ方法を指定できます。これは、マテリアライズド・ビューを定義する問合せを実行することによって実装されます。完全リフレッシュを指定すると、高速リフレッシュが実行可能であっても、完全リフレッシュが実行されます。
FORCEを指定すると、リフレッシュ時に、高速リフレッシュが可能な場合は高速リフレッシュを実行し、そうでない場合は完全リフレッシュを実行できます。
ON COMMITを指定すると、マテリアライズド・ビューのマスター表に対するトランザクションをコミットするときに必ず高速リフレッシュが実行されます。
この句は、マテリアライズド結合ビューおよびマテリアライズド集計ビューにのみサポートされます。
ON DEMANDを指定すると、マテリアライズド・ビューは、3つのDBMS_MVIEWリフレッシュ・プロシージャのいずれかのコールによる要求でリフレッシュされます。ON COMMITおよびON DEMANDのどちらも指定しなかった場合、ON DEMANDがデフォルトになります。
ON COMMITまたはON DEMANDを指定した場合、START WITHまたはNEXTを同時に指定できません。
START WITH dateを指定すると、最初の自動リフレッシュ時間を表す日付を指定できます。
NEXTを指定すると、自動リフレッシュの間隔を計算するための日付式を指定できます。
START WITH値およびNEXT値は、将来の時刻に評価される値です。START WITH値を省略した場合、Oracle Databaseはマテリアライズド・ビューの作成時刻に対してNEXT式を評価することによって、最初の自動リフレッシュ時刻を判断します。START WITH値を指定し、NEXT値を指定しない場合、Oracle Databaseは1回のみマテリアライズド・ビューをリフレッシュします。START WITH値およびNEXT値のどちらも指定しない場合、またはalter_mv_refreshを指定しない場合、Oracle Databaseはマテリアライズド・ビューを自動リフレッシュしません。
WITH PRIMARY KEYを指定すると、ROWIDマテリアライズド・ビューを主キー・マテリアライズド・ビューに変更できます。主キー・マテリアライズド・ビューを使用すると、高速リフレッシュを継続できるマテリアライズド・ビューの機能に影響せずに、マテリアライズド・ビュー・マスター表を再編成できます。
この句を指定するには、マスター表に、使用可能な主キー制約が定義され、この制約に基づき、主キー情報を記録するマテリアライズド・ビュー・ログが定義されている必要があります。
自動UNDOモードでは、ロールバック・セグメントではなくUNDO表領域が使用されるため、データベースが自動UNDOモードの場合、この句は無効です。自動UNDOモードを使用することをお薦めします。この句は、ロールバック・セグメントが使用される以前のバージョンのOracle Databaseが含まれるレプリケーション環境との下位互換性のためにサポートされています。
この句の詳細は、「CREATE MATERIALIZED VIEW」の「USING ROLLBACK SEGMENT句」を参照してください。
この句のセマンティクスは、CREATE MATERIALIZED VIEWおよびALTER MATERIALIZED VIEW文で同じです。この句の詳細は、「CREATE MATERIALIZED VIEW」の「USING ...CONSTRAINTS句」を参照してください。
この句を使用すると、マテリアライズド・ビューをクエリー・リライトで使用できるかどうかを指定できます。
ENABLEを指定すると、クエリー・リライトでマテリアライズド・ビューを使用可能にできます。
マテリアライズド・ビューを使用可能にする処理には、次の制限事項があります。
ENABLEモードでもクエリー・リライトに適応しません。
DETERMINISTICである場合のみ、クエリー・リライトを使用可能にできます。CURRENT_TIMEまたはUSERを含めることはできません。DISABLEを指定すると、クエリー・リライトでマテリアライズド・ビューを使用禁止にできます。マテリアライズド・ビューが無効な場合、使用禁止であるかどうかにかかわらず、クエリー・リライトの使用には適応しません。ただし、使用禁止にされたマテリアライズド・ビューをリフレッシュすることはできます。
COMPILEを指定すると、マテリアライズド・ビューを明示的に再検証できます。マテリアライズド・ビューが依存するオブジェクトを削除または変更した場合、マテリアライズド・ビューはアクセス可能のままですが、クエリー・リライトに対しては無効です。再度、明示的にマテリアライズド・ビューの妥当性チェックを行い、クエリー・リライトの使用に適応させるには、この句を使用します。
マテリアライズド・ビューの再妥当性チェックに失敗すると、リフレッシュできなくなるか、またはクエリー・リライトに使用できなくなります。
この句を使用すると、マスター表が変更された後のマテリアライズド・ビューの失効状態を管理することができます。CONSIDER FRESHは、マテリアライズド・ビューが最新であり、TRUSTEDまたはSTALE_TOLERATEDモードでのクエリー・リライトに適応するとみなされるように指定します。Oracle Databaseは、マテリアライズド・ビューが最新であるかどうかを保証できないため、ENFORCEDモードでのクエリー・リライトはサポートしません。また、この句はマテリアライズド・ビューの失効状態をUNKNOWNに設定します。失効状態は、ALL_MVIEWS、DBA_MVIEWSおよびUSER_MVIEWSの各データ・ディクショナリ・ビューのSTALENESS列に表示されます。
いずれかのマスター表の内容が変更された場合、マテリアライズド・ビューは失効します。この句は、Oracle Databaseに対して、マテリアライズド・ビューが最新で、変更されていないものと仮定するように指示します。そのため、リフレッシュが保留されているこれらの表に対する実際の更新内容は、マテリアライズド・ビューから削除されます。
|
参照:
|
次の文は、マテリアライズド・ビューsales_by_month_by_state(「マテリアライズド集計ビューの作成例:」で作成)のリフレッシュ方法のデフォルトをFASTに変更します。
ALTER MATERIALIZED VIEW sales_by_month_by_state REFRESH FAST;
これ以降のマテリアライズド・ビューの自動リフレッシュは、高速リフレッシュになります。これは、単純なマテリアライズド・ビューであり、そのマスター表には、マテリアライズド・ビューの作成前または最後のリフレッシュ前に作成されたマテリアライズド・ビュー・ログがあります。
REFRESH句にSTART WITHまたはNEXTの値が指定されていないため、マテリアライズド・ビューsales_by_month_by_stateを作成したとき、または最後に変更したときにREFRESH句で設定されたリフレッシュ間隔がそのまま使用されます。
次の文は、マテリアライズド・ビューsales_by_month_by_stateの新しい自動リフレッシュ間隔を設定します。
ALTER MATERIALIZED VIEW sales_by_month_by_state REFRESH NEXT SYSDATE+7;
REFRESHにSTART WITHの値が指定されていないため、マテリアライズド・ビューsales_by_month_by_stateが作成されたとき、または最後に変更されたときに指定されたSTART WITHとNEXTの値によって設定された日時に次の自動リフレッシュが行われます。
このマテリアライズド・ビューは、次に自動リフレッシュが行われる際に、リフレッシュされます。次に自動リフレッシュが行われる日時は、NEXTに設定した式SYSDATE+7が計算されて決まります。その後は、週に1回リフレッシュが自動的に行われます。REFRESH句にリフレッシュ方法が明示的に指定されていないため、CREATE MATERIALIZED VIEW文または直前のALTER MATERIALIZED VIEW文のREFRESH句で指定されたリフレッシュ方法が引き続き使用されます。
次の文は、Oracle Databaseがマテリアライズド・ビューsales_by_month_by_stateを最新であるとみなすように指定します。この文を使用すると、sales_by_month_by_stateのマスター表に対してパーティション・メンテナンス操作を実行した後でも、sales_by_month_by_stateに対してTRUSTEDモードでのクエリー・リライトが可能です。
ALTER MATERIALIZED VIEW sales_by_month_by_state CONSIDER FRESH;
次の文は、マテリアライズド・ビューemp_data(「マテリアライズド・ビューの定期的リフレッシュ例:」で作成)の新しいリフレッシュ方法、NEXTで示す新しいリフレッシュ日時および新しい自動リフレッシュ間隔を指定します。
ALTER MATERIALIZED VIEW emp_data REFRESH COMPLETE START WITH TRUNC(SYSDATE+1) + 9/24 NEXT SYSDATE+7;
START WITH句に指定した値によって、このマテリアライズド・ビューの次の自動リフレッシュは翌日の午前9時に発生するように設定されます。この日時にマテリアライズド・ビューの完全リフレッシュが実行され、NEXTに設定した式が計算されます。その後は、このマテリアライズド・ビューは毎週リフレッシュされます。
次の文は、マテリアライズド・ビューemp_dataのクエリー・リライトを使用可能にし、暗黙的に再妥当性チェックを行います。
ALTER MATERIALIZED VIEW emp_data ENABLE QUERY REWRITE;
次の文は、ROWIDマテリアライズド・ビューorder_data(「ROWIDマテリアライズド・ビューの作成例:」で作成)を主キー・マテリアライズド・ビューに変更します。この例では、order_dataに主キーを持つマテリアライズド・ビュー・ログを定義していることが必要です。
ALTER MATERIALIZED VIEW order_data REFRESH WITH PRIMARY KEY;
次の文は、マテリアライズド・ビューstore_mvを再検証します。
ALTER MATERIALIZED VIEW order_data COMPILE;
マテリアライズド・ビュー・ログとは、マテリアライズド・ビューのマスター表に関連付けられる表です。ALTER MATERIALIZED VIEW LOG文を使用すると、既存のマテリアライズド・ビュー・ログの記憶特性またはタイプを変更できます。
|
参照:
|
マスター表の所有者であるか、またはマスター表に対するSELECT権限およびマテリアライズド・ビュー・ログに対するALTER権限が必要です。
(physical_attributes_clause::=、alter_table_partitioning::=(「ALTER TABLE」の項)、parallel_clause::=、logging_clause::=、allocate_extent_clause::=およびnew_values_clause::=を参照)
(storage_clause::=を参照)
(size_clause::=を参照)
FORCEを指定すると、ADD句で指定したいずれかの項目がすでにマテリアライズド・ビュー・ログに指定されている場合、エラーは戻されませんが、既存の要素は無視され、マテリアライズド・ビュー・ログに存在しないすべての項目が追加されます。同様に、INCLUDING NEW VALUESを指定すると、この属性がすでにマテリアライズド・ビュー・ログに指定されている場合、冗長は無視され、エラーも戻されません。
マスター表が定義されているスキーマを指定します。schemaを指定しない場合、マテリアライズド・ビュー・ログは自分のスキーマ内にあるとみなされます。
変更するマテリアライズド・ビュー・ログに関連付けられたマスター表の名前を指定します。
physical_attributes_clauseを使用すると、PCTFREE、PCTUSEDおよびINITRANSの各パラメータの値、マテリアライズド・ビュー・ログ、パーティションおよびオーバーフロー・データ・セグメントの記憶特性、またはパーティション・マテリアライズド・ビュー・ログのデフォルト特性を変更できます。
マテリアライズド・ビュー・ログがローカル管理表領域に存在する場合は、storage_clauseを使用して、エクステント・パラメータを変更することはできません。このパラメータについては、「CREATE TABLE」を参照してください。
alter_table_partitioningの構文および一般的な機能は、ALTER TABLE文の場合と同じです。「ALTER TABLE」の「alter_table_partitioning」を参照してください。
マテリアライズド・ビュー・ログのパーティションの変更には、次の制限事項があります。
LOB_storage_clauseまたはmodify_LOB_storage_clauseは使用できません。
parallel_clauseを使用すると、マテリアライズド・ビュー・ログへのパラレル操作がサポートされているかどうかを指定できます。
この句の詳細は、「CREATE TABLE」の「parallel_clause」を参照してください。
マテリアライズド・ビュー・ログに対するロギング属性を指定します。この句の詳細は、「logging_clause」を参照してください。
allocate_extent_clauseを使用すると、マテリアライズド・ビュー・ログの新しいエクステントを明示的に割り当てることができます。この句の詳細は、「allocate_extent_clause」を参照してください。
この句を使用すると、マテリアライズド・ビュー・ログのセグメントを縮小化できます。この句の詳細は、「CREATE TABLE」の「shrink_clause」を参照してください。
アクセス頻度が高いデータについて、CACHEは、全表スキャンの実行時にこのログ用に取り出された各ブロックを、バッファ・キャッシュ内のLRUリストの最高使用頻度側に入れることを指定します。この属性は、小規模な参照表で有効です。NOCACHEは、ブロックをLRUリストの最低使用頻度側に入れることを指定します。この句の詳細は、「CREATE TABLE」の「CACHE | NOCACHE | CACHE READS」を参照してください。
ADD句を使用すると、マテリアライズド・ビュー・マスター表内の行が変更される際に、主キー値、ROWID値、オブジェクトID値または順序も記録できるようにマテリアライズド・ビュー・ログを拡張できます。また、この句は、新しく列を記録するためにも使用できます。
これらの情報の記録を停止する場合は、マテリアライズド・ビュー・ログを削除してから、再作成する必要があります。マテリアライズド・ビュー・ログを削除した後再作成した場合、マスター表に依存するすべての既存マテリアライズド・ビューが、次回のリフレッシュ時に強制的に完全リフレッシュされます。
各マテリアライズド・ビュー・ログに指定できるのは、PRIMARY KEY、ROWID、OBJECT ID、SEQUENCEおよび列リストの列を1つずつです。このALTER文にPRIMARY KEY、ROWID、OBJECT ID、SEQUENCEおよび列リストを指定できるのはそれぞれ1回のみです。また、FORCEオプションを指定しないかぎり、これらの値のいずれかが作成時に(暗黙的または明示的に)指定された場合、このALTER文にはそれらの値を指定できません。
OBJECT IDを指定すると、更新されるすべての行の適切なオブジェクト識別子をマテリアライズド・ビュー・ログに記録できます。
OBJECT IDは、オブジェクト表のログ用のみに指定でき、記憶表用には指定できません。
PRIMARY KEYを指定すると、更新されるすべての行の主キーをマテリアライズド・ビュー・ログに記録できます。
ROWIDを指定すると、更新されるすべての行のROWID値をマテリアライズド・ビュー・ログに記録できます。
SEQUENCEを指定すると、追加の順序情報を提供する順序値をマテリアライズド・ビュー・ログに記録できます。
更新されるすべての行に対して、マテリアライズド・ビュー・ログに記録する値を持つ新しい列を指定します。通常、フィルタ列(副問合せマテリアライズド・ビューが参照する主キー以外の列)および結合列(副問合せのWHERE句で結合を定義する主キー以外の列)を指定します。
|
参照:
|
NEW VALUES句を使用すると、更新DML操作で、古い値と新しい値の両方をマテリアライズド・ビュー・ログに保存するかどうかを指定できます。ALTER MATERIALIZED VIEW LOG文で追加した列のみでなく、ログのすべての列にこの句で設定した値を適用します。
INCLUDINGを指定すると、古い値と新しい値の両方を保存できます。このログが単一表マテリアライズド集計ビューの表用で、マテリアライズド・ビューに高速リフレッシュを実行する場合、INCLUDINGを指定してください。
EXCLUDINGを指定すると、ログに新しい値が記録されなくなります。この句を使用すると、新しい値の記録によるオーバーヘッドを回避できます。
マテリアライズド・ビューのリフレッシュ・モードをFAST以外のモードに変更した場合を除き、高速リフレッシュが可能な単一表マテリアライズド集計ビューが定義されている場合は、EXCLUDING NEW VALUESを使用しないでください。
次の文は、ROWID情報も記録するように既存の主キー・マテリアライズド・ビュー・ログを変更します。
ALTER MATERIALIZED VIEW LOG ON order_items ADD ROWID;
次の文は、フィルタ列を追加し、新しい値を除外することで、hr.employeesのマテリアライズド・ビュー・ログを変更します。このログを使用するマテリアライズド集計ビューは、これ以降高速リフレッシュされません。ただし、高速リフレッシュが不要になる場合は、この処理によって新しい値の記録によるオーバーヘッドを回避できます。
ALTER MATERIALIZED VIEW LOG ON employees ADD (commission_pct) EXCLUDING NEW VALUES;
ALTER OPERATOR文を使用すると、既存の演算子に対するバインドを追加または削除したり、既存の演算子をコンパイルすることができます。
事前にCREATE OPERATOR文によって演算子が作成されている必要があります。演算子が自分のスキーマ内にあるか、またはALTER ANY OPERATORシステム権限が必要です。ALTER OPERATOR文で参照される演算子およびファンクションに対するEXECUTEオブジェクト権限が必要です。
(add_binding_clause::=、drop_binding_clause::=を参照)
(implementation_clause::=、using_function_clause::=を参照)
(context_clause::=を参照)
演算子が含まれているスキーマを指定します。この句を指定しない場合、その演算子は自分のスキーマにあるとみなされます。
変更する演算子の名前を指定します。
この句を使用すると、演算子バインドを追加し、パラメータ・データ型および戻り型を指定できます。この演算子の既存のバインドと異なる署名を使用する必要があります。
演算子のバインドが索引タイプに関連付けられており、演算子に別のバインドを追加する場合、Oracle Databaseは新しいバインドと索引タイプの関連付けを自動的に行いません。関連付けを行うには、明示的なALTER INDEXTYPE ...ADD OPERATOR文を発行する必要があります。
この句のセマンティクスは、CREATE OPERATORおよびALTER OPERATOR文で同じです。この句の詳細は、「CREATE OPERATOR」の「implementation_clause」を参照してください。
この句のセマンティクスは、CREATE OPERATORおよびALTER OPERATOR文で同じです。この句の詳細は、「CREATE OPERATOR」の「context_clause」を参照してください。
この句のセマンティクスは、CREATE OPERATORおよびALTER OPERATOR文で同じです。この句の詳細は、「CREATE OPERATOR」の「using_function_clause」を参照してください。
この句を使用すると、演算子から削除するバインドのパラメータ・データ型のリストを指定できます。バインドに索引タイプや補助演算子バインドなどの依存オブジェクトが含まれる場合、FORCEを指定する必要があります。FORCEを指定すると、そのバインドに依存するすべてのオブジェクトにINVALIDのマークが付きます。依存オブジェクトは、DDL文、DML文または問合せで次に参照された際に再検証されます。
この句を使用して、この演算子に関連付けられた唯一のバインドを削除することはできません。この演算子に関連付けられた唯一のバインドを削除するには、DROP OPERATOR文を使用する必要があります。詳細は、「DROP OPERATOR」を参照してください。
COMPILEを指定すると、演算子を再コンパイルできます。
次の例は、演算子eq_op(「ユーザー定義演算子の作成例:」で作成)をコンパイルします。
ALTER OPERATOR eq_op COMPILE;
ALTER OUTLINE文を使用すると、ストアド・アウトラインの名前を変更したり、ストアド・アウトラインを異なるカテゴリに再度割り当てることができます。また、アウトラインのSQL文をコンパイルし、古いアウトライン・データを現行の条件で作成したアウトラインと置き換えて、ストアド・アウトラインを再生成できます。
アウトラインを変更する場合は、ALTER ANY OUTLINEシステム権限が必要です。
PUBLICを指定すると、アウトラインのパブリック・バージョンを変更できます。これはデフォルトです。
PRIVATEを指定すると、現行のセッションに対してプライベートで、現行の解析スキーマにデータが格納されているアウトラインを変更できます。
変更するアウトラインの名前を指定します。
REBUILDを指定すると、現行の条件で、outlineの実行計画が再生成されます。
RENAME TO句を使用すると、outlineの値と置き換えるアウトライン名を指定できます。
CHANGE CATEGORY TO句を使用すると、outlineの移動先となるカテゴリ名を指定できます。
この句を使用すると、このアウトラインを選択的に使用可能または使用禁止にできます。デフォルトでは、アウトラインは使用可能になっています。DISABLEキーワードを使用すると、他のアウトラインの使用に影響を与えずに、1つのアウトラインを使用禁止にできます。
次の文は、アウトラインのテキストをコンパイルし、古いアウトライン・データを現行の条件で作成したアウトラインと置き換えて、salariesというストアド・アウトラインを再生成します。
ALTER OUTLINE salaries REBUILD;
パッケージはPL/SQLを使用して定義されます。このため、この項では一般的な情報について説明します。構文およびセマンティクスの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
ALTER PACKAGE文を使用すると、パッケージ仕様部またはパッケージ本体(あるいはその両方)を明示的に再コンパイルできます。明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、また、実行時のコンパイル・エラーとパフォーマンス上のオーバーヘッドもなくなります。
パッケージ中のすべてのオブジェクトは、1つの単位として格納されているため、ALTER PACKAGE文によって、すべてのパッケージ・オブジェクトがまとめて再コンパイルされます。ALTER PROCEDURE文またはALTER FUNCTION文を使用して、パッケージ中の一部のプロシージャまたはファンクションを再コンパイルすることはできません。
|
注意:
この文を使用して、既存のパッケージの宣言や定義を変更することはできません。パッケージを再宣言または再定義する場合は、「CREATE PACKAGE」または「CREATE PACKAGE BODY」に |
パッケージを変更するには、パッケージが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER ANY PROCEDUREシステム権限が必要です。
(package_compile_clause: この句の構文の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。)
パッケージが含まれているスキーマを指定します。schemaを指定しない場合、パッケージは自分のスキーマ内にあるとみなされます。
再コンパイルするパッケージの名前を指定します。
この句の構文とセマンティクスの詳細およびパッケージの作成とコンパイルの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
パッケージはPL/SQLを使用して定義されます。このため、この項では一般的な情報について説明します。構文およびセマンティクスの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
ALTER PROCEDURE文を使用すると、スタンドアロンのストアド・プロシージャを明示的に再コンパイルできます。明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、また、実行時のコンパイル・エラーとパフォーマンス上のオーバーヘッドもなくなります。
パッケージの一部であるプロシージャを再コンパイルする場合、ALTER PACKAGE文を使用して、そのパッケージ全体を再コンパイルします(「ALTER PACKAGE」を参照)。
|
注意:
この文を使用して、既存のプロシージャの宣言または定義を変更することはできません。プロシージャを再宣言または再定義する場合は、 |
ALTER PROCEDURE文は、ALTER FUNCTION文と似ています。詳細は、「ALTER FUNCTION」を参照してください。
プロシージャは、自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER ANY PROCEDUREシステム権限が必要です。
(procedure_compile_clause: この句の構文の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。)
プロシージャが含まれているスキーマを指定します。schemaを指定しない場合、プロシージャは自分のスキーマ内にあるとみなされます。
再コンパイルするプロシージャの名前を指定します。
この句の構文とセマンティクスの詳細およびプロシージャの作成とコンパイルの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
ALTER PROFILE文を使用すると、プロファイルのリソース制限またはパスワード管理パラメータを追加、変更または削除できます。
ALTER PROFILE文を使用すると、プロファイルに対して行った変更は、このプロファイルの現行のセッションのユーザーには影響しません。後続セッションのユーザーのみに影響します。
プロファイルのリソース制限を変更する場合は、ALTER PROFILEシステム権限が必要です。パスワード制限および保護を変更する場合は、ALTER PROFILEおよびALTER USERシステム権限が必要です。
(resource_parameters::=、password_parameters::=を参照)
(size_clause::=を参照)
ALTER PROFILE文のキーワード、パラメータおよび句の意味は、すべてCREATE PROFILE文のキーワード、パラメータおよび句と同じです。
DEFAULTプロファイルから制限を削除することはできません。
詳細は、「CREATE PROFILE」および次の例を参照してください。
次の文は、new_profileプロファイル(「プロファイルの作成例:」で作成)のパスワードを90日間再利用できないようにします。
ALTER PROFILE new_profile LIMIT PASSWORD_REUSE_TIME 90 PASSWORD_REUSE_MAX UNLIMITED;
次の文は、app_userプロファイル(「プロファイルのリソース制限の設定の例:」で作成)のPASSWORD_REUSE_TIME値をDEFAULTプロファイルに定義された値にデフォルト設定します。
ALTER PROFILE app_user LIMIT PASSWORD_REUSE_TIME DEFAULT PASSWORD_REUSE_MAX UNLIMITED;
次の文は、プロファイルapp_userのFAILED_LOGIN_ATTEMPTSを5に、PASSWORD_LOCK_TIMEを1に変更します。
ALTER PROFILE app_user LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1;
この文を使用すると、ログインに5回失敗した場合に、app_userのアカウントは1日ロックされます。
次の文は、プロファイルapp_user2のPASSWORD_LIFE_TIMEを90日に、PASSWORD_GRACE_TIMEを5日に変更します。
ALTER PROFILE app_user2 LIMIT PASSWORD_LIFE_TIME 90 PASSWORD_GRACE_TIME 5;
次の文は、プロファイルapp_userに同時実行セッションの新しい制限5を指定します。
ALTER PROFILE app_user LIMIT SESSIONS_PER_USER 5;
現在、プロファイルapp_userにSESSIONS_PER_USERの制限が定義されていない場合は、このプロファイルに制限5が追加されます。プロファイルに制限が定義されている場合は、前述の文によってその制限が5に再定義されます。プロファイルapp_userが割り当てられているすべてのユーザーは、同時実行のセッションが5件に制限されます。
次の文は、プロファイルapp_userのIDLE_TIME制限を削除します。
ALTER PROFILE app_user LIMIT IDLE_TIME DEFAULT;
プロファイルapp_userが割り当てられているユーザーは、以降のセッションからプロファイルDEFAULTに定義されたIDLE_TIME制限に従います。
次の文は、プロファイルDEFAULTにアイドル時間の制限(2分)を定義します。
ALTER PROFILE default LIMIT IDLE_TIME 2;
IDLE_TIMEの制限は、次のユーザーに適用されます。
次の文は、プロファイルapp_user2に無制限のアイドル時間を設定します。
ALTER PROFILE app_user2 LIMIT IDLE_TIME UNLIMITED;
プロファイルapp_user2が割り当てられているすべてのユーザーは、以降のセッションから無制限のアイドル時間が許可されます。
ALTER RESOURCE COST文を使用すると、セッションで使用するリソース・コストの合計を算出するための式を指定または変更できます。
Oracle Databaseは、その他のリソースの使用も監視しますが、セッションに対するリソース・コストの合計は、この構文の4種類のリソースに基づいて算出されます。
この文を使用すると、4種類のリソースに重みを適用できます。Oracle Databaseは、プロファイルに指定されたこれらのリソースの値に重みを適用し、リソース・コストの合計を算出する計算式を設定します。CREATE PROFILE文のCOMPOSITE_LIMITパラメータを使用して、セッションに対するコストを制限できます。セッションのリソース・コストが制限を超えた場合、セッションは異常終了し、エラーが戻ります。各リソースに割り当てた重みを変更するためにALTER RESOURCE COST文を使用した場合、現行のセッション以降のすべてのセッションで、その新しい重みを基にリソース・コストが計算されます。
ALTER RESOURCE COSTシステム権限が必要です。
最初にセッションで使用された各リソースの量にそのリソースの重みを乗算し、次に、4種類のリソースの乗算結果を加算することによって、リソース・コストの合計が計算されます。どのセッションについても、このコストは、ユーザーのプロファイル内のCOMPOSITE_LIMITパラメータの値によって制限されます。乗算結果と総コストは、ともにサービス単位と呼ばれる単位で表されます。
このキーワードを使用すると、CPU_PER_SESSIONリソースに重みを適用できます。
このキーワードを使用すると、CONNECT_TIMEリソースに重みを適用できます。
この句を使用すると、LOGICAL_READS_PER_SESSIONリソースに重みを適用できます。論理読取りには、メモリーおよびディスクの両方から読み取られたブロックが含まれます。
この句を使用すると、PRIVATE_SGAリソースに重みを適用できます。共有サーバー・アーキテクチャを使用して、セッション用としてSGA内でプライベート領域を割り当てている場合のみ、この制限が適用されます。
各リソースの重みを指定します。各リソースに割り当てる重みによって、各リソースがリソース・コストの合計に影響する程度が決定されます。リソースに重みを割り当てない場合は、デフォルト値の0(ゼロ)が適用され、コストへの影響はありません。重みを割り当てた場合は、データベースの次のセッション以降のすべてのセッションで、その重みが適用されます。
次の文は、リソースCPU_PER_SESSIONとCONNECT_TIMEに重みを割り当てます。
ALTER RESOURCE COST CPU_PER_SESSION 100 CONNECT_TIME 1;
この重みによって、セッションごとに次のコスト計算式が設定されます。
cost = (100 * CPU_PER_SESSION) + (1 * CONNECT_TIME)
この例では、CPU_PER_SESSIONおよびCONNECT_TIMEの値は、DEFAULTプロファイルまたはセッションのユーザーのプロファイルにある値のいずれかです。
ここでは、リソースLOGICAL_READS_PER_SESSIONおよびPRIVATE_SGAに重みを割り当てていないため、これらのリソースは式に含まれません。
プロファイルでCOMPOSITE_LIMIT値として500を割り当てた場合、costが500を超えると、必ず、セッションはこの制限を超えます。たとえば、CPU時間0.04秒、経過時間101分を使用するセッションは、この制限を超えます。同様に、CPU時間が0.0301秒、経過時間が200分のセッションもこの制限を超えます。
一度割り当てた重みは、次のように、別のALTER RESOURCE文を発行することによって変更できます。
ALTER RESOURCE COST LOGICAL_READS_PER_SESSION 2 CONNECT_TIME 0;
新しく割り当てた重みによって、新しいコスト計算式が設定されます。
cost = (100 * CPU_PER_SESSION) + (2 * LOGICAL_READ_PER_SECOND)
CPU_PER_SESSIONおよびLOGICAL_READS_PER_SECONDの値は、DEFAULTプロファイルまたはセッションのユーザーのプロファイルにある値のいずれかです。
このALTER RESOURCE COST文によって、式は次のように変更されます。
CPU_PER_SESSIONリソースの重みは指定しません。このリソースにはすでに重みが割り当てられているため、式では先に指定した重みがそのまま使用されます。
LOGICAL_READS_PER_SESSIONリソースに重みを割り当てたため、このリソースが式で使用されます。
CONNECT_TIMEリソースに0(ゼロ)を割り当てたため、このリソースは式に含まれていません。
PRIVATE_SGAリソースの重みは指定しません。このリソースには重みを割り当てていないため、式に含まれていません。
ALTER ROLE文を使用すると、ロールを使用可能にするために必要な許可を変更できます。
ロールにADMIN OPTIONが付与されている必要があります。付与されていない場合は、ALTER ANY ROLEシステム権限が必要です。
ロールをIDENTIFIED GLOBALLYに変更する前に、次の作業が必要です。
この規則の唯一の例外として、現在ロールを変更しているユーザーからはそのロールを取り消さないでください。
ALTER ROLE文のキーワード、パラメータおよび句の意味は、すべてCREATE ROLE文のキーワード、パラメータおよび句と同じです。
ロールの変更には、次の注意事項があります。
USING package句を使用)、ロールに対応付けられたパスワード情報は失われます。次にロールが使用可能になるときから、新しい認証方式が使用されます。
ALTER ANY ROLEシステム権限を持つユーザーが、IDENTIFIED GLOBALLYロールをIDENTIFIED BY password、IDENTIFIED EXTERNALLYまたはNOT IDENTIFIEDに変更すると、非グローバルなロールを作成した場合と同様に、そのユーザーに変更されたロールがADMIN OPTION付きで付与されます。
詳細は、「CREATE ROLE」および次の例を参照してください。
次の文は、ロールwarehouse_user(「ロールの作成例:」で作成)をNOT IDENTIFIEDに変更します。
ALTER ROLE warehouse_user NOT IDENTIFIED;
次の文は、ロールdw_manager(「ロールの作成例:」で作成)のパスワードをdataに変更します。
ALTER ROLE dw_manager IDENTIFIED BY data;
パスワードの変更後、ロールdw_managerが付与されているユーザーは、新しいパスワードdataを使用してこのロールを使用可能にする必要があります。
次の例は、ロールdw_managerをhr.adminパッケージを使用してアプリケーション・ロールに変更します。
ALTER ROLE dw_manager IDENTIFIED USING hr.admin;
ALTER ROLLBACK SEGMENT文を使用すると、ロールバック・セグメントのオンライン/オフライン切替え、記憶特性の変更、またはロールバック・セグメントの最適サイズまたは指定サイズへの縮小を行うことができます。
ここでは、データベースがロールバックUNDOモードで実行されている(初期化パラメータUNDO_MANAGEMENTにMANUALを設定、またはすべて設定しない)ことを前提としています。データベースが自動UNDOモードで実行されている場合(初期化パラメータUNDO_MANAGEMENTにデフォルト値のAUTOを設定)、ユーザーが作成したロールバック・セグメントは意味を持ちません。
|
参照:
|
ALTER ROLLBACK SEGMENTシステム権限が必要です。
(storage_clause、size_clause::=を参照)
既存のロールバック・セグメントの名前を指定します。
ONLINEを指定すると、ロールバック・セグメントをオンラインにできます。ロールバック・セグメントを作成した場合、最初はオフライン状態になり、トランザクションに使用できなくなります。この句を指定した場合、ロールバック・セグメントはオンラインになり、インスタンスは、トランザクションに対してそのロールバック・セグメントを使用できるようになります。また、初期化パラメータROLLBACK_SEGMENTSを使用すると、インスタンスの起動時にロールバック・セグメントをオンラインにできます。
OFFLINEを指定すると、ロールバック・セグメントをオフラインにできます。
オフラインになっているロールバック・セグメントは、どのインスタンスからもオンラインにできます。
ロールバック・セグメントがオンラインかオフラインかを確認するには、データ・ディクショナリ・ビューDBA_ROLLBACK_SEGSのSTATUS列を問い合せます。オンライン・ロールバック・セグメントの値はIN_USEです。オフライン・ロールバック・セグメントの値はAVAILABLEです。
SYSTEMロールバック・セグメントをオフラインにすることはできません。
storage_clauseを使用すると、ロールバック・セグメントの記憶特性を変更できます。
INITIALパラメータの値は変更できません。ロールバック・セグメントがローカル管理表領域にある場合、変更可能な記憶域パラメータはOPTIMALのみです。ロールバック・セグメントがディクショナリ管理表領域にある場合、変更可能な記憶域パラメータは、NEXT、MINEXTENTS、MAXEXTENTSおよびOPTIMALのみです。
SHRINKを指定すると、ロールバック・セグメントを最適サイズまたは指定サイズに縮小できます。縮小されるかどうか、および縮小量は、ロールバック・セグメントの使用可能領域およびアクティブ・トランザクションのロールバック・セグメント内での領域保持状態の状況によって異なります。
TO size_clauseに値を指定しなかった場合、ロールバック・セグメントを作成したCREATE ROLLBACK SEGMENT文のstorage_clauseのOPTIMALで指定した値が、デフォルトのサイズになります。OPTIMAL値を指定しなかった場合、CREATE ROLLBACK SEGMENT文のstorage_clauseのMINEXTENTSで指定した値がデフォルトのサイズになります。
TO size_clauseに値を指定するかどうかにかかわらず、次のことがいえます。
CREATE ROLLBACK SEGMENT文のOPTIMAL値に戻ります。
ロールバック・セグメントを縮小した後でロールバック・セグメントの実際のサイズを確認する場合は、DBA_SEGMENTSビューのBYTES列、BLOCKS列およびEXTENTS列を問い合せます。
Oracle Real Application Clusters環境では、インスタンスに対してオンライン状態のロールバック・セグメントのみを縮小できます。
次の例では、ロールバック・セグメントrbs_one(「ロールバック・セグメントの作成例:」で作成)を使用します。
次の文は、ロールバック・セグメントrbs_oneをオンラインにします。
ALTER ROLLBACK SEGMENT rbs_one ONLINE;
次の文は、ロールバック・セグメントrbs_oneを縮小します。
ALTER ROLLBACK SEGMENT rbs_one SHRINK TO 100M;
ALTER SEQUENCE文を使用すると、既存の順序の増分値、最小値および最大値、キャッシュされる数および動作を変更できます。この文は、順序番号に影響します。
順序が自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、順序に対するALTERオブジェクト権限またはALTER ANY SEQUENCEシステム権限が必要です。
この文のキーワードおよびパラメータの意味は、順序を作成する場合と同じです。
NEXTVALを最初に呼び出す前に、INCREMENT BYの値を変更する場合、いくつかの順序番号がスキップされます。このため、元のSTART WITHの値を保持するには、順序を削除し、これを元のSTART WITHの値および新しいINCREMENT BYの値を使用して再作成する必要があります。
MAXVALUEの値に現行の順序番号より小さい値は指定できません。次の文は、customers_seq順序(「順序の作成例:」で作成)に新しい最大値を設定します。
ALTER SEQUENCE customers_seq MAXVALUE 1500;
次の文は、customers_seq順序にCYCLEおよびCACHEオプションを指定します。
ALTER SEQUENCE customers_seq CYCLE CACHE 5;
ALTER SESSION文を使用すると、データベースへの接続に影響するすべての条件またはパラメータを、設定または変更できます。この文は、データベースとの接続を切断するまで有効です。
SQLトレース機能を使用可能または使用禁止にするには、ALTER SESSIONシステム権限が必要です。
再開可能な領域割当てを使用可能または使用禁止にするには、RESUMABLEシステム権限が必要です。
特に指定がないかぎり、これ以外の操作についての権限は必要ありません。
ADVISE句を指定すると、分散トランザクションを強制処理するためのアドバイスをリモート・データベースに送ることができます。リモート・データベース内のDBA_2PC_PENDINGビューのADVICE列に、アドバイスが表示されます(値'C'がCOMMIT、'R'がROLLBACK、' 'がNOTHINGを示します)。トランザクションの状態がインダウトになった場合、データベース管理者は、このアドバイスを使用してトランザクションをコミットするか、ロールバックするかを決定できます。
単一トランザクションにおいて、ADVISE句を指定したALTER SESSION文を複数発行し、リモート・データベースごとに異なるアドバイスを送ることができます。ADVISE句を指定した文はそれぞれ、ADVISE句を指定した別の文が発行されるまで、トランザクション内の後続する文で参照されるデータベースに対してアドバイスを送ります。
CLOSE DATABASE LINKを指定すると、データベース・リンクdblinkをクローズできます。データベース・リンクを使用するSQL文を発行した場合、Oracle Databaseは、このデータベース・リンクを使用してリモート・データベース上にセッションを作成します。この接続は、セッションの終了またはデータベース・リンクの数が初期化パラメータOPEN_LINKSの値を超えるまでオープンされています。リンクをオープンしたままにしておくことによって発生するネットワークのオーバーヘッドを減らすには、セッションでデータベース・リンクを再度使用しない場合に、この句を使用してデータベース・リンクを明示的にクローズします。
プロシージャおよびストアド・ファンクションはPL/SQLで記述されるため、COMMIT文とROLLBACK文を発行できます。アプリケーション自体が直接発行していないCOMMIT文やROLLBACK文によって、アプリケーションが中断される場合、DISABLE COMMIT IN PROCEDUREを指定して、セッション中にコールされるプロシージャおよびストアド・ファンクションがこれらの文を発行しないように制御します。
その後、ENABLE COMMIT IN PROCEDUREを指定することによって、セッションでプロシージャおよびストアド・ファンクションがCOMMITおよびROLLBACK文を発行できるようになります。
一部のアプリケーションは、自動的にプロシージャおよびストアド・ファンクションでのCOMMIT文やROLLBACK文を禁止します。詳細は、ご使用のアプリケーションのドキュメントを参照してください。
ALTER DATABASEのsecurity_clauseを使用すると、SYSユーザー以外のユーザーは、プライマリ・データベースまたはスタンバイ・データベース上のデータまたはデータベース・オブジェクトを変更できなくなります。この句を使用すると、現行のセッションの設定を上書きできます。
PARALLELパラメータを使用すると、そのセッションの後続のDML、DDLまたは問合せ文をパラレル実行するかどうかを指定できます。この句は、現行のセッション中に表自体を変更せずに、表の並列度を上書き可能にします。コミットされていないトランザクションは、DMLに対してこの句を実行する前に、コミットまたはロールバックされる必要があります。
ENABLEを指定すると、セッション内の後続文をパラレルで実行できます。これは、DDL文および問合せ文のデフォルトです。
DML: パラレル・ヒントまたはパラレル句が指定されている場合に、DML文をパラレル・モードで実行します。
DDL: パラレル句が指定されている場合に、DDL文をパラレル・モードで実行します。
QUERY: パラレル・ヒントまたはパラレル句が指定されている場合に、問合せをパラレル・モードで実行します。
オプションのPARALLEL integerにENABLEを指定することはできません。
DISABLEを指定すると、セッション内の後続文をシリアルで実行できます。これは、DML文のデフォルトです。
オプションのPARALLEL integerにDISABLEを指定することはできません。
FORCEを使用すると、セッションの後続文を強制的にパラレル実行できます。パラレル句もパラレル・ヒントも指定されていない場合は、デフォルトの並列度が使用されます。この句は、セッションの後続文に指定されたすべてのparallel_clauseを上書きしますが、パラレル・ヒントによって上書きされます。
DML: パラレルDML制限のどれにも違反していない場合、特定の並列度がこの句に指定されていないかぎり、セッションの後続のDML文は、デフォルトの並列度で実行されます。
DDL: 特定の並列度がこの句に指定されていないかぎり、セッションの後続のDDL文は、デフォルトの並列度で実行されます。結果のデータベース・オブジェクトは、通常の並列度に対応します。FORCE DDLを指定した場合、そのセッションで作成されるすべての表は、自動的にデフォルトの並列度で作成されます。結果は、CREATE TABLE文で(デフォルトの並列度を使用して)parallel_clauseを指定した場合と同じです。
QUERY: 特定の並列度がこの句に指定されていないかぎり、後続の問合せは、デフォルトの並列度で実行されます。
並列度を明示的に指定する整数を指定します。
FORCE DDLでは、並列度は後続のDDL文のパラレル句を上書きします。
FORCE DMLおよびFORCE QUERYでは、並列度は、データ・ディクショナリの表に格納されている現行の並列度を上書きします。
次のDML操作は、この句に関係なくパラレル化されません。
LONGまたはLOBデータ型が含まれている表またはスキーマ・オブジェクトでの操作
これらの句を使用すると、再開可能な領域割当てを使用可能および使用禁止にできます。この機能によって、領域不足のエラー条件が発生した場合に操作は停止され、エラー条件が修復されたときに中断したところから自動的に再開されます。
この句を使用すると、セッションに対する再開可能な領域割当てを使用可能にできます。
TIMEOUTを使用すると、エラー条件が修復されるまで操作を停止する時間を秒単位で指定できます。エラー条件がTIMEOUTで指定した時間までに修復されない場合は、停止操作は異常終了します。
NAMEを使用すると、ユーザー定義のテキスト文字列を指定することができ、再開可能モードのセッション中に発行される文の識別に有効です。USER_RESUMABLEデータ・ディクショナリ・ビューおよびDBA_RESUMABLEデータ・ディクショナリ・ビューに、テキスト文字列が挿入されます。NAMEを指定しない場合は、デフォルト文字列「User username(userid), Session sessionid, Instance instanceid」が挿入されます。
この句を使用すると、セッションに対する再開可能な領域割当てを使用禁止にできます。
alter_session_set_clauseを使用すると、セッションの初期化パラメータの値を設定できます。
この句では、2種類のパラメータを設定できます。
ALTER SESSION文の有効範囲内で動的な初期化パラメータ(「初期化パラメータおよびALTER SESSION」を参照)
同じalter_session_set_clauseで複数のパラメータに対する値を設定できます。
一部の初期化パラメータは、ALTER SESSIONの有効範囲内で動的です。ALTER SESSIONを使用してこれらのパラメータを設定すると、設定した値は現行セッションでのみ保持されます。パラメータをALTER SESSION文で変更できるかどうかを確認するには、V$PARAMETER動的パフォーマンス・ビューのISSES_MODIFIABLE列を問い合せます。
ALTER SESSIONで設定可能な一部のパラメータは、初期化パラメータではありません。初期化パラメータ・ファイルではなく、ALTER SESSIONでのみ設定可能です。これらのセッション・パラメータの詳細は、「セッション・パラメータおよびALTER SESSION」を参照してください。
次のパラメータは、セッション・パラメータであり、初期化パラメータではありません。
CONSTRAINT[S] = { IMMEDIATE | DEFERRED | DEFAULT }
CONSTRAINT[S]は、遅延可能制約によって指定された条件を、いつ適用するかを指定します。
IMMEDIATEを設定すると、遅延可能な制約によって指定される条件は、各DML文の直後にチェックされます。これは、セッションの各トランザクションの開始時に、SET CONSTRAINTS ALL IMMEDIATE文を発行することと同じです。
DEFERREDを設定すると、遅延可能な制約によって指定される条件は、トランザクションのコミット時にチェックされます。これは、セッションの各トランザクションの開始時に、SET CONSTRAINTS ALL DEFERRED文を発行することと同じです。
DEFAULTを設定すると、すべての制約は各トランザクションの開始時に、DEFERREDまたはIMMEDIATEの初期状態にリストアされます。
CURRENT_SCHEMA = schema
CURRENT_SCHEMAは、セッションの現行のスキーマを、指定したスキーマに変更します。セッション中のスキーマ・オブジェクトに対する後続の未修飾の参照は、この指定したスキーマ内でオブジェクトに変換されます。この設定は、現行のセッションの存続期間中、またはALTER SESSION SET CURRENT_SCHEMA文を再発行するまで保持されます。
この設定によって、現行のユーザーのスキーマ以外にあるオブジェクトに対する操作を、オブジェクトをスキーマ名で修飾することなく簡単に行えます。この設定によって、現行のスキーマは変更されますが、このセッションのユーザーまたは現行のユーザーは変更されません。また、セッション・ユーザーには、このセッションに対する追加のシステム権限またはオブジェクト権限は付与されません。
ERROR_ON_OVERLAP_TIME = {TRUE | FALSE}
ERROR_ON_OVERLAP_TIMEパラメータには、Oracle Databaseが不明瞭な境界日時値(日時が標準か夏時間かが明確でない場合)を処理する方法を指定します。
TRUEを指定すると、不明瞭なオーバラップ・タイムスタンプに対してエラーが戻されます。
FALSEを指定すると、不明瞭なオーバラップ・タイムスタンプは標準時刻のデフォルトになります。これはデフォルトです。
境界日時値の詳細は、「夏時間のサポート」を参照してください。
FLAGGER = { ENTRY | INTERMEDIATE | FULL | OFF }
FLAGGERパラメータは、FIPSのフラグ付けを指定します。このフラグ付けを使用した場合、ANSI SQL92の拡張要素であるSQL文が発行されたときに、エラー・メッセージが生成されます。FLAGGERは、セッション・パラメータであり、初期化パラメータではありません。
Oracle Databaseでは、ENTRYレベル、INTERMEDIATEレベル、FULLレベルのそれぞれのフラグ付けに違いはありません。セッションでフラグ付けが設定されると、これに続くALTER SESSION SET FLAGGER文は成功しますが、ORA-00097のメッセージが生成されます。このため、セッションを切断しなくてもFIPSのフラグ付けを変更できます。OFFを設定した場合、フラグ付けの使用は停止されます。
INSTANCE = integer
INSTANCEパラメータを設定すると、自分のインスタンスに接続している場合と同様に、別のインスタンスにもアクセスできます。INSTANCEはセッション・パラメータであり、初期化パラメータではありません。Oracle Real Application Clusters(RAC)環境では、このパラメータの設定に基づき、各RACインスタンスで、最適なDMLパフォーマンスを実現するようにディスク領域の静的または動的な所有権が保持されます。
ISOLATION_LEVEL = {SERIALIZABLE | READ COMMITTED}
ISOLATION_LEVELパラメータは、データベースを変更するトランザクションがどのように処理されるかを指定します。ISOLATION_LEVELはセッション・パラメータであり、初期化パラメータではありません。
SERIALIZABLEを設定すると、セッション内のトランザクションは、SQL92に規定されているとおりシリアル化可能トランザクション分離モードを使用します。シリアル化可能トランザクションが行を更新するDML文を実行する場合、現在の更新対象の行がそのシリアル化可能トランザクションの開始時にコミットされていない別のトランザクションによって更新されていたときは、そのDML文は失敗します。シリアル化可能トランザクションは、同一トランザクション内で行った更新を確認できます。
READ COMMITTEDを設定すると、セッション内のトランザクションは、Oracle Databaseトランザクションのデフォルトの動作を行います。別のトランザクションで行ロックを保持しておく必要があるDMLがトランザクションに指定されていると、DML文は行ロックが解除されるまで待ち状態になります。
TIME_ZONE = '[+ | -] hh:mm' | LOCAL | DBTIMEZONE | 'time_zone_region'
TIME_ZONEパラメータには、現行のSQLセッションのデフォルトのローカル・タイムゾーン・オフセットまたは地域名を指定します。TIME_ZONEはセッション・パラメータであり、初期化パラメータではありません。現行のセッションのタイムゾーンを確認するには、組込み関数SESSIONTIMEZONEを問い合せます(「SESSIONTIMEZONE」を参照)。
'[+|-]hh:mm')を指定します。hh:mmの有効範囲は、-12:00〜+14:00です。
LOCALを指定すると、現行のSQLセッションのデフォルトのローカル・タイムゾーン・オフセットが、現行のSQLセッションを起動したときに構築された、元のデフォルトのローカル・タイムゾーン・オフセットに設定されます。
DBTIMEZONEを指定すると、現行のセッションのタイムゾーンにデータベースのタイムゾーンと一致する値が設定されます。この設定を指定する場合、DBTIMEZONEファンクションは、データベースのタイムゾーンをUTCオフセットまたはタイムゾーン地域として戻します。これはデータベースのタイムゾーンの設定に依存します。
time_zone_regionを指定します。有効な地域名を表示するには、V$TIMEZONE_NAMES動的パフォーマンス・ビューのTZNAME列を問い合せます。この設定を指定する場合、SESSIONTIMEZONEファンクションは地域の名前を戻します。USE_PRIVATE_OUTLINES = { TRUE | FALSE | category_name }
USE_PRIVATE_OUTLINESパラメータを使用すると、プライベート・アウトラインの使用を制御することができます。このパラメータが使用可能で、アウトライン化されたSQL文が発行された場合、オプティマイザは、USE_STORED_OUTLINESが使用可能なときに使用されるパブリック領域ではなく、そのセッションのプライベート領域からアウトラインを検索します。そのセッションのプライベート領域にアウトラインが存在しない場合、オプティマイザは、文のコンパイルにアウトラインを使用しません。USE_PRIVATE_OUTLINESは、初期化パラメータではありません。
TRUEに設定すると、要求をコンパイルするときに、オプティマイザはDEFAULTカテゴリのストアド・プライベート・アウトラインを使用します。
FALSEに設定すると、オプティマイザはストアド・プライベート・アウトラインを使用しません。これはデフォルトです。USE_STORED_OUTLINESが使用可能な場合、オプティマイザはストアド・パブリック・アウトラインを使用します。
category_nameに設定すると、要求をコンパイルするときに、オプティマイザはcategory_nameカテゴリのストアド・アウトラインを使用します。
USE_STORED_OUTLINESが使用可能な場合は、このパラメータを使用可能にできません。
USE_STORED_OUTLINES = { TRUE | FALSE | category_name }
USE_STORED_OUTLINESパラメータは、オプティマイザが実行計画を生成するためにストアド・パブリック・アウトラインを使用するかどうかを決定します。USE_STORED_OUTLINESは、初期化パラメータではありません。
TRUEに設定すると、要求をコンパイルするときに、オプティマイザはDEFAULTカテゴリのストアド・アウトラインを使用します。
FALSEに設定すると、オプティマイザはストアド・アウトラインを使用しません。これはデフォルトです。
category_nameに設定すると、要求をコンパイルするときに、オプティマイザはcategory_nameカテゴリのストアド・アウトラインを使用します。
USE_PRIVATE_OUTLINESが使用可能な場合は、このパラメータを使用可能にできません。
次の文は、現行のセッションでパラレルDMLモードを使用可能にします。
ALTER SESSION ENABLE PARALLEL DML;
次のトランザクションは、データベース・リンクremoteによって識別されるデータベース上のemployees表に従業員のレコードを挿入し、localによって識別されるデータベース上のemployees表から従業員のレコードを削除します。
ALTER SESSION ADVISE COMMIT; INSERT INTO employees@remote VALUES (8002, 'Juan', 'Fernandez', 'juanf@hr.com', NULL, TO_DATE('04-OCT-1992', 'DD-MON-YYYY'), 'SA_CLERK', 3000, NULL, 121, 20); ALTER SESSION ADVISE ROLLBACK; DELETE FROM employees@local WHERE employee_id = 8002; COMMIT;
このトランザクションには、ADVISE句を指定したALTER SESSION文が2つあります。このトランザクションが状態不明(インダウト)になった場合、remoteには、最初に指定したALTER SESSION文によってアドバイス'COMMIT'が送信され、localには、2番目の文によってアドバイス'ROLLBACK'が送信されます。
次の文は、データベース・リンクを使用しているlocalデータベース上のjobs表を更新し、このトランザクションをコミットして、データベース・リンクを明示的にクローズします。
UPDATE jobs@local SET min_salary = 3000 WHERE job_id = 'SH_CLERK'; COMMIT; ALTER SESSION CLOSE DATABASE LINK local;
次の文は、セッションのデフォルトの日付書式を'YYYY MM DD-HH24:MI:SS'に動的に変更します。
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY MM DD HH24:MI:SS';
変更後は、新しい日付書式が次のように適用されます。
SELECT TO_CHAR(SYSDATE) Today FROM DUAL; TODAY ------------------- 2001 04 12 12:30:38
次の文は、日付書式要素の言語をフランス語に変更します。
ALTER SESSION SET NLS_DATE_LANGUAGE = French; SELECT TO_CHAR(SYSDATE, 'Day DD Month YYYY') Today FROM DUAL; TODAY --------------------------- Jeudi 12 Avril 2001
次の文は、ISO通貨記号をアメリカ合衆国のISO通貨記号に動的に変更します。
ALTER SESSION SET NLS_ISO_CURRENCY = America; SELECT TO_CHAR( SUM(salary), 'C999G999D99') Total FROM employees; TOTAL ------------------ USD694,900.00
次の文は、小数点文字をカンマ(,)に、桁区切りをピリオド(.)に動的に変更します。
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.' ;
これらの数値書式要素を使用した場合、新しい文字が戻ります。
ALTER SESSION SET NLS_CURRENCY = 'FF'; SELECT TO_CHAR( SUM(salary), 'L999G999D99') Total FROM employees; TOTAL --------------------- FF694.900,00
次の文は、各国通貨記号を'DM'に動的に変更します。
ALTER SESSION SET NLS_CURRENCY = 'DM'; SELECT TO_CHAR( SUM(salary), 'L999G999D99') Total FROM employees; TOTAL --------------------- DM694.900,00
次の文は、表示されたエラー・メッセージの言語をフランス語に動的に変更します。
ALTER SESSION SET NLS_LANGUAGE = FRENCH; Session modifiee. SELECT * FROM DMP; ORA-00942: Table ou vue inexistante
次の文は、言語ソート順序をスペイン語に動的に変更します。
ALTER SESSION SET NLS_SORT = XSpanish;
これによって、文字の値はスペイン語のソート順序に基づいてソートされます。
次の文は、セッションに対してSQLトレース機能を使用可能にします。
ALTER SESSION SET SQL_TRACE = TRUE;
次の文は、明示的に使用禁止にされていないすべてのマテリアライズド・ビューに対する現行のセッションのクエリー・リライトを使用可能にします。
ALTER SESSION SET QUERY_REWRITE_ENABLED = TRUE;
ALTER SYSTEM文を使用すると、Oracle Databaseインスタンスを動的に変更できます。この設定は、データベースがマウントされているかぎり有効です。
ALTER SYSTEMシステム権限が必要です。
(archive_log_clause::=、checkpoint_clause::=、check_datafiles_clause::=、distributed_recov_clauses::=、end_session_clauses::=、quiesce_clauses::=、rolling_migration_clauses::=、alter_system_security_clauses::=、shutdown_dispatcher_clause::=、alter_system_set_clause::=、alter_system_reset_clause::=を参照)
archive_log_clauseを使用すると、REDOログ・ファイルを手動でアーカイブしたり、自動アーカイブを使用可能または使用禁止にすることができます。この句を使用する場合、インスタンスでデータベースをマウントする必要があります。特に指定がないかぎり、データベースはオープンまたはクローズできます。
この句が関係するのは、Oracle Real Application Clusters(RAC)を使用している場合のみです。REDOログ・ファイル・グループをアーカイブするインスタンスの名前を指定します。インスタンス名は最大80文字の文字列です。指定したインスタンスにマップするスレッドはOracle Databaseによって自動的に決定され、対応するREDOログ・ファイル・グループがアーカイブされます。指定したインスタンスにマップされているスレッドがない場合、エラーが戻されます。
SEQUENCEを指定すると、指定したスレッド内のログ順序番号integerによって識別されるオンラインREDOログ・ファイル・グループを手動でアーカイブできます。THREADパラメータを指定しなかった場合、インスタンスに割り当てられているスレッドから、指定したグループがアーカイブされます。
CHANGEを指定すると、オンラインREDOログ・ファイル・グループを、手動でアーカイブできます。このグループには、指定したスレッド内のintegerによって識別されるSCNを持つREDOログ・エントリが含まれます。このSCNが現行のREDOログ・ファイル・グループ内にある場合、ログ・スイッチが実行されます。THREADパラメータを指定しない場合、使用可能な状態にあるすべてのスレッドから、このSCNを含むグループがアーカイブされます。
インスタンスでデータベースをオープンしている場合にのみ、この句を使用できます。
CURRENTを指定すると、ログ・スイッチを強制的に発生させ、指定したスレッドの現行のREDOログ・ファイル・グループを手動でアーカイブできます。THREADパラメータを指定しない場合、すべての使用可能なスレッドから、現行のログ以前のログも含むすべてのREDOログ・ファイル・グループがアーカイブされます。データベースがオープンしているときのみ、CURRENTを指定できます。
NOSWITCHを指定すると、ログ・スイッチの強制実行なしで現行のREDOログ・ファイル・グループを手動でアーカイブできます。この設定は、プライマリ・データベースが停止したときに、データ分岐が発生しないようにするために、主にスタンバイ・データベースで使用されます。データ分岐は、プライマリ・データベースに障害が発生した場合に、データが消失する可能性があることを意味します。
インスタンスでデータベースがマウントされているがオープンされていない場合にのみ、NOSWITCH句を使用できます。データベースがオープンしている場合は、この操作によってデータベースは自動的にクローズされます。再オープンする前にデータベースを手動で停止する必要があります。
GROUPを指定すると、オンラインREDOログ・ファイル・グループを手動でアーカイブできます。このグループには、integerによって識別されるGROUP値が含まれます。REDOログ・ファイル・グループのGROUP値を確認するには、データ・ディクショナリ・ビューDBA_LOG_GROUPSを問い合せます。THREADパラメータとGROUPパラメータの両方を指定する場合は、指定するREDOログ・ファイル・グループが、指定するスレッド内に含まれている必要があります。
LOGFILEを指定すると、オンラインREDOログ・ファイル・グループを手動でアーカイブできます。このグループには、'filename'によって識別されるREDOログ・ファイル・メンバーが含まれます。THREADパラメータとLOGFILEパラメータの両方を指定する場合は、指定するREDOログ・ファイル・グループが、指定するスレッド内に含まれている必要があります。
データベースがバックアップ制御ファイルでマウントされている場合は、USING BACKUP CONTROLFILEを指定し、現行のログ・ファイルを含むすべてのオンライン・ログ・ファイルのアーカイブを許可します。
REDOログ・ファイル・グループは、一杯になった順にアーカイブする必要があります。LOGFILEパラメータを使用してREDOログ・ファイル・グループのアーカイブを指定した場合、それ以前のREDOログ・ファイル・グループがアーカイブされていないとエラー・メッセージが戻ります。
NEXTを指定すると、一杯になってもアーカイブされていない次のオンラインREDOログ・ファイルを、指定したスレッドから手動でアーカイブできます。THREADパラメータを指定しない場合、使用可能な任意のスレッド上の、アーカイブされていない最初のREDOログ・ファイル・グループがアーカイブされます。
ALLを指定すると、一杯になってもアーカイブされていないすべてのオンラインREDOログ・ファイルを、指定したスレッドから手動でアーカイブできます。THREADパラメータを指定しない場合、使用可能なすべてのスレッドから、一杯でアーカイブされていないすべてのREDOログ・ファイル・グループがアーカイブされます。
以前のリリースでは、この句を使用すると、インスタンスに割り当てられたスレッドについて、REDOログ・ファイル・グループの自動アーカイブが使用可能になります。この句は現在非推奨になっています。Oracle Databaseは、REDOログ・ファイル・グループの自動アーカイブを自動的に使用可能にします。この句は無効です。この句を指定すると、アラート・ログにメッセージが書き込まれます。
TO 'location'を指定すると、REDOログ・ファイル・グループがアーカイブされる位置を指定できます。このパラメータの値には、オペレーティング・システムの規則に従って、ファイルの位置を完全に指定する必要があります。このパラメータを指定しない場合、REDOログ・ファイル・グループは初期化パラメータLOG_ARCHIVE_DESTまたはLOG_ARCHIVE_DEST_nに指定された場所に格納されます。
以前のリリースでは、この句を使用すると、インスタンスに割り当てられたスレッドについて、REDOログ・ファイル・グループの自動アーカイブが使用禁止になります。この句は現在非推奨になっています。この句は無効です。この句を指定すると、アラート・ログにメッセージが書き込まれます。
CHECKPOINTを指定すると、チェックポイントを明示的に強制処理して、コミット済のトランザクションによる変更をディスク上のデータ・ファイルに書き込むことができます。インスタンスでデータベースがオープンしている場合にのみ、この句を指定できます。チェックポイントが完了するまで、ユーザーに制御は戻りません。
Oracle Real Application Clusters(RAC)環境で、データベースをオープンしているすべてのインスタンスに対してチェックポイントを実行します。これはデフォルトです。
Oracle RAC環境で、文を発行するインスタンスのREDOログ・ファイル・グループのスレッドに対してのみチェックポイントを実行します。
Oracle RAC環境などの分散データベース・システムで、データベース制御ファイルからインスタンスのSGAを更新し、すべてのオンライン・データ・ファイルに情報を反映します。
GLOBALを指定すると、データベースをオープンしているすべてのインスタンスに対して、この同期化を実行できます。これはデフォルトです。
LOCALを指定すると、ローカル・インスタンスに対してのみこの同期化を実行できます。
インスタンスでデータベースをオープンしておく必要があります。
end_session_clausesを使用すると、現行のセッションを終了することができます。
DISCONNECT SESSION句を使用すると、専用サーバー・プロセス(共有サーバーによって接続が確立されていた場合は、仮想回路)を破棄することによって、現行のセッションが切断されます。この句を使用する場合、インスタンスでデータベースをオープンする必要があります。次の両方の値をV$SESSIONビューで確認して、このセッションを識別する必要があります。
システム・パラメータを適切に設定した場合、アプリケーション・フェイルオーバーが有効になります。
POST_TRANSACTIONを設定すると、セッションが切断される前に、実行中のトランザクションを完了できます。セッションに実行中のトランザクションがない場合、この句は、後述のKILL SESSIONと同様の効果があります。
IMMEDIATEを設定すると、実行中のトランザクションの完了を待たずにセッションを切断し、すぐにセッション全体の状態をリカバリできます。
KILL SESSIONを指定すると、セッションに終了済のマークが付き、実行中のトランザクションがロールバックされ、すべてのセッション・ロックが解放され、セッション・リソースが一部リカバリされます。この句を使用する場合、インスタンスでデータベースをオープンする必要があります。integer3を指定しない場合は、自セッションおよび終了されるセッションは、同じインスタンスにある必要があります。次の値をV$SESSIONビューで確認して、このセッションを識別する必要があります。
integer1には、SID列の値を指定します。
integer2には、SERIAL#列の値を指定します。
integer3には、終了されるターゲット・セッションが存在するインスタンスのIDを指定します。GV$表を問い合せることによって、インスタンスIDを確認することができます。
リモート・データベースからの応答を待ったり、トランザクションをロールバックするなど、最後まで完了する必要があるアクティビティをセッションが実行している場合、Oracle Databaseはこのアクティビティが完了するまで待機し、セッションに終了済のマークを付け、その後、ユーザーに制御を戻します。待ち時間が1分以上続く場合は、終了されるセッションにマークが付けられ、マークが付けられたセッションが終了されることを示すメッセージとともにユーザーに制御が戻されます。アクティビティが完了すると、PMONバックグラウンド・プロセスは、セッションに終了済のマークを付けます。
セッションに実行中のトランザクションがあるかどうかにかかわらず、セッション・ユーザーがセッションに要求を発行してセッションが終了されたことを示すメッセージを受け取るまで、Oracle Databaseは、セッション全体の状態をリカバリしません。
IMMEDIATEを指定すると、実行中のトランザクションをロールバックしてすべてのセッション・ロックを解放し、セッション全体の状態をリカバリしてから、すぐにユーザーに制御を戻すようにOracle Databaseに指示できます。
DISTRIBUTED RECOVERY句を使用すると、分散リカバリを使用可能または使用禁止にできます。この句を使用する場合、インスタンスでデータベースをオープンする必要があります。
ENABLEを指定すると、分散リカバリを使用可能にできます。シングルプロセス環境では、分散リカバリを開始する場合にこの句を使用する必要があります。
トランザクションに関係があるリモート・ノードにアクセスできない場合、インダウト・トランザクションをリカバリするには、ENABLE DISTRIBUTED RECOVERY文を複数回発行する必要がある場合もあります。インダウト・トランザクションは、データ・ディクショナリ・ビューDBA_2PC_PENDINGに表示されます。
DISABLEを指定すると、分散リカバリを使用禁止にできます。
FLUSH SHARED_POOL句を指定すると、SGAの共有プール上のすべてのデータが消去されます。共有プールは次のものを格納します。
この文は、現在実行中の項目に対する共有SQL領域および共有PL/SQL領域を消去しません。インスタンスでデータベースがマウントされていてもディスマウントされていても、またはオープン状態でもクローズ状態でも、この句を使用できます。
FLUSH BUFFER_CACHE句を指定すると、システム・グローバル領域(SGA)のバッファ・キャッシュ上のすべてのデータを消去できます。
この句は、リライトされた問合せ、または同一の開始点からの一連の問合せのパフォーマンスを測定する必要がある場合に有効です。
SWITCH LOGFILE句を指定すると、現行のREDOログ・ファイル・グループのファイルが一杯であるかどうかにかかわらず、新しいREDOログ・ファイル・グループへの書込みを明示的かつ強制的に開始できます。ログ・スイッチを強制的に発生させると、チェックポイントが実行されますが、チェックポイントが完了する前に、すぐに制御が戻されます。この句を使用する場合、インスタンスでデータベースをオープンする必要があります。
SUSPEND句を指定すると、すべてのI/O(データ・ファイル、制御ファイルおよびファイル・ヘッダー)および問合せを停止し、すべてのインスタンスで実行中のトランザクションを処理せずにデータベースのコピーが作成可能になります。
SUSPENDとRESUMEには、次の制限事項があります。
ALTER SYSTEM SUSPEND文を発行したセッションは終了しないでください。システムが一時停止しているときに再接続しようとすると、SYSログイン中に実行される再帰的SQLが原因となって接続が失敗することがあります。
RESUME句を指定すると、問合せおよびI/Oに対して、再度、データベースが使用可能になります。
クラスタ化された自動ストレージ管理(ASM)環境内でこれらの句を使用すると、ASMクラスタまたはストレージにASMを使用するデータベース・クラスタの全体的な可用性に影響することなく、ノードを一度に1つずつ別のASMバージョンに移行できます。
ローリング・アップグレードを開始するときに、ASM_versionについて、次の5つの文字列を指定する必要があります。
<version_num>, <release_num>, <update_num>,<port_release_num>,<port_update_num>
ASM_versionは、11.1.0.0.0以上である必要があります。次に、自動ストレージ管理は、最初に、指定されたリリースへの移行について現在のリリースに互換性があることを確認し、制限された機能モードになります。自動ストレージ管理は、次に、クラスタ内で均衡の再調整処理が進行中かどうかを確認します。そのような操作がある場合、文は失敗し、均衡の再調整操作の完了後に文を再発行する必要があります。
ローリング・アップグレード・モードは、クラスタ全体でメモリー内に永続的に保持される状態です。クラスタは、少なくとも1つのASMインスタンスがクラスタ内で実行中になるまで、この状態であり続けます。クラスタに参加する新しいインスタンスは、起動時にすぐに移行モードに切り替わります。クラスタ内のすべてのインスタンスが終了すると、この後に自動ストレージ管理インスタンスを起動しても、この文を再発行して自動ストレージ管理インスタンスのローリング・アップグレードを再開するまでは、ローリング・アップグレード・モードにはなりません。
この句を使用すると、ローリング・アップグレードを停止して、クラスタを通常の操作に戻すことができます。クラスタ内のすべてのインスタンスが同じソフトウェア・バージョンに移行した後にのみ、この句を指定します。クラスタがローリング・アップグレード・モードではない場合、文は失敗します。
この句を指定すると、自動ストレージ管理インスタンスはクラスタのすべてのメンバーが同じソフトウェア・バージョンであることを検証し、インスタンスをローリング・アップグレード・モードから除外して、自動ストレージ管理クラスタの完全な機能に戻ります。ディスクがオフラインであるために均衡の再調整操作が保留中の場合、操作は再起動されます。ただし、そのような再起動によってASM_POWER_LIMITパラメータに違反することにならない場合にかぎります。
QUIESCE RESTRICTED句およびUNQUIESCE句を使用すると、データベースを静止状態にしたり、静止状態から戻すことができます。この状態では、データベース管理者は、トランザクション、問合せまたはPL/SQL操作が同時に存在する状態では安全に実行できない管理操作を実行することができます。
複数のQUIESCE RESTRICTED文またはUNQUIESCE文が異なるセッションまたはインスタンスで同時に発行された場合、1つを除いた他のすべてのセッションまたはインスタンスにエラーが戻されます。
QUIESCE RESTRICTEDを指定すると、データベースを静止状態にできます。この句は、データベースがオープン中のすべてのインスタンスに次の影響を与えます。
SYSおよびSYSTEM以外)をアクティブにしないように指示します。SYSおよびSYSTEM以外のユーザーは、新しいトランザクション、問合せ、フェッチまたはPL/SQL操作を開始できません。
SYSまたはSYSTEM以外のユーザーが開始した、すべてのインスタンスの既存のトランザクションが終了するまで(コミットまたは異常終了するまで)待機します。また、Oracle Databaseは、SYSまたはSYSTEM以外のユーザーが開始した、内部トランザクションにない、すべてのインスタンスで実行中のすべての問合せ、フェッチおよびPL/SQLプロシージャが終了するまで待機します。連続する複数のOracle Call Interface(OCI)のフェッチによって問合せが実行される場合、Oracle Databaseはすべてのフェッチが終了するまで待機しません。現行のフェッチが終了するまで待機しますが、次のフェッチは行われません。Oracle Databaseは、エンキューなどの共有リソースを保持するすべてのセッション(SYSおよびSYSTEM以外のセッション)がリソースを解放するまで待機します。すべての操作が完了した後、Oracle Databaseはデータベースを静止状態にし、QUIESCE RESTRICTED文の実行を終了します。
SYSまたはSYSTEM以外のユーザーがそのインスタンスにログインすることを阻止するようにデータベース・リソース・マネージャに指示します。非共有サーバー・モードでインスタンスを実行している場合、そのインスタンスへのユーザー・ログインに制限はありません。
静止状態中、すべてのインスタンスにおいてリソース・マネージャのプランは変更できません。
UNQUIESCEを指定すると、データベースを静止状態から戻すことができます。これによって、SYSまたはSYSTEM以外のユーザーによって開始された、トランザクション、問合せ、フェッチおよびPL/SQLプロシージャを再開できます。UNQUIESCE文は、QUIESCE RESTRICTED文を発行したセッションと同じセッションで起動する必要はありません。
alter_system_security_clausesを使用すると、インスタンスへのアクセスを制御できます。
RESTRICTED SESSION句を指定すると、Oracle Databaseにログインできるユーザーを制限できます。インスタンスでデータベースがマウントされていてもディスマウントされていても、またはオープン状態でもクローズ状態でも、この句を使用できます。
ENABLEを指定すると、RESTRICTED SESSIONシステム権限が付与されているユーザーのみがOracle Databaseにログインできます。既存のセッションは終了しません。この句は、現行のインスタンスのみに適用されます。そのため、Oracle RAC環境では、RESTRICTED SESSIONシステム権限を持たない認可済ユーザーも他のインスタンスでデータベースにアクセスできます。
DISABLEを指定すると、ENABLE RESTRICTED SESSION句の効果を無効にできます。つまり、CREATE SESSIONシステム権限が付与されているすべてのユーザーがOracle Databaseにログインできるようになります。これはデフォルトです。この句を使用すると、サーバー・ウォレット内の情報へのデータベース・アクセスを管理できます。この文は、キーワードALTERで始まりますが、ALTER SYSTEM SET ENCRYPTION WALLET文はDDL句ではありません。ただし、このような文はロールバックすることはできません。
この句を指定すると、データベースは指定されたパスワードを使用してサーバー・ウォレット内の情報をメモリーにロードし、インスタンスの存続期間中にデータベース・アクセスができるようになります。この句を使用すると、データベースは、SSOウォレットなしにサーバー・ウォレットからキーを取得できます。サーバー・ウォレットが使用できないか、すでに開いている場合は、データベースからエラーが戻ります。このコンテキストでは、パスワードを二重引用符で囲む必要があります。
この句を使用すると、メモリーからサーバー・ウォレットの情報が削除されます。
この句を使用すると、新しい暗号化キーを生成し、現行のデータの透過的暗号化のマスター鍵として設定できます。また、この句はサーバー・ウォレットのデータベース・アクセス情報をメモリーにロードします。certificate_idは、証明書を識別する整数です。これは、基本鍵を使用する場合は不要ですが、PKIベースの鍵を使用する場合は必要になります。この値は、V$WALLET動的パフォーマンス・ビューのCERT_ID列を問い合せて確認できます。passwordには、セキュリティ・モジュールへの接続に使用するパスワードを指定します。指定したcertificate_idまたはパスワードが無効な場合、データベースからエラーが戻ります。このコンテキストでは、パスワードを二重引用符で囲む必要があります。
ALTER SYSTEM SET KEY文はDDL文です。この文は、スキーマ内で保留中のトランザクションを自動的にコミットします。
データの透過的暗号化機能を使用するには、暗号化ウォレットと暗号化キーの両方を設定する必要があります。
|
参照:
|
SHUTDOWN句は、システムにOracle Databaseの共有サーバー・アーキテクチャを使用している場合のみ有効です。dispatcher_nameで識別されたディスパッチャを停止します。
dispatcher_nameは、'Dxxx'という形式の文字列である必要があります。xxxはディスパッチャの番号です。ディスパッチャ名のリストを取得するには、V$DISPATCHER動的パフォーマンス・ビューのNAME列を問い合せます。
IMMEDIATEを指定した場合、ディスパッチャは新しい接続の受入れをすぐに中止し、そのディスパッチャによる既存の接続はすべて終了されます。すべてのセッションがクリーンアップされてから、ディスパッチャ・プロセスは停止します。
IMMEDIATEを指定しない場合、ディスパッチャは新しい接続の受入れをすぐに中止しますが、すべてのユーザーが切断し、すべてのデータベース・リンクが終了されるのを待ちます。その後、ディスパッチャは停止されます。
REGISTERを指定すると、PMONバックグラウンド・プロセスによってリスナーにインスタンスがすぐに登録されます。この句を指定しない場合、PMONが次に検出ルーチンを実行するまでインスタンスの登録は行われません。その結果、クライアントは、リスナー起動後最大60秒間サービスにアクセスできない可能性があります。
従来のプレーン・テキストのパラメータ・ファイル(PFILE)を使用してデータベースを起動したか、サーバー・パラメータ・ファイル(SPFILE)を使用してデータベースを起動したかに応じて、現行のインスタンスの多くの初期化パラメータ値を変更できます。『Oracle Databaseリファレンス』では、各パラメータの説明で、これらのパラメータが「変更可能」というカテゴリに分類されています。PFILEを使用した場合、変更はインスタンスの存続期間中のみ保持されます。一方、SPFILEを使用してデータベースを起動した場合、SPFILE自体のパラメータの値を変更できるため、後続のインスタンスで新しい値が使用されます。
『Oracle Databaseリファレンス』には、すべての初期化パラメータが詳細に記載されています。パラメータは、次の3つのカテゴリに分類されます。
初期化パラメータ値を変更する権限は、従来のプレーン・テキストの初期化パラメータ・ファイル(pfile)を使用してデータベースを起動したか、サーバー・パラメータ・ファイル(spfile)を使用してデータベースを起動したかによって異なります。特定のパラメータ値を変更する権限を持っているかどうかを確認するには、V$PARAMETER動的パフォーマンス・ビューのISSYS_MODIFIABLE列を問い合せます。
パラメータ値を設定するときに、次の設定も行えます。
COMMENT句を使用すると、コメント文字列をパラメータ値の変更に対応付けることができます。SPFILEをあわせて指定すると、パラメータ・ファイルにコメントが表示され、そのパラメータに対する直前の変更がわかります。
DEFERREDキーワードを指定すると、データベースに接続するその後のセッションに対するパラメータの値を設定または変更できます。現行のセッションでは変更前の値が残ります。
このパラメータのV$PARAMETERのISSYS_MODIFIABLE列の値がDEFERREDの場合は、DEFERREDを指定する必要があります。この列の値がIMMEDIATEの場合、この句のDEFERREDキーワードはオプションです。この列の値がFALSEの場合、このALTER SYSTEM文ではDEFERREDを指定できません。
SCOPE句を使用すると、変更が有効になるタイミングを指定できます。有効範囲は、データベースの起動に使用したファイルが従来のプレーン・テキストのパラメータ・ファイル(pfile)か、サーバー・パラメータ・ファイル(spfile)かによって異なります。
MEMORYを指定すると、変更がメモリーで行われ、すぐに有効になり、データベースが停止するまで持続されます。パラメータ・ファイル(pfile)を使用してデータベースを起動した場合、この有効範囲のみを指定できます。
SPFILEを指定すると、変更がサーバー・パラメータ・ファイルで行われます。新しい設定は、データベースが次に停止し、再起動されたときに有効になります。『Oracle Databaseリファレンス』に変更不可能と示されている静的パラメータ値を変更する場合は、SPFILEを指定する必要があります。
BOTHを指定すると、変更がメモリーとサーバー・パラメータ・ファイルの両方で行われます。新しい設定はすぐに有効になり、データベースが停止し、再起動された後も持続します。
データベースの起動でサーバー・パラメータ・ファイルを使用した場合は、BOTHがデフォルトです。データベースの起動でパラメータ・ファイルを使用した場合は、MEMORYがデフォルトで、これ以外の有効範囲は指定できません。
SID句を使用すると、値を有効にするインスタンスのSIDを指定できます。
SID = '*'を指定します。
sidのインスタンスのみでパラメータ値を変更する場合、SID = 'sid'を指定します。この設定は、SID = '*'を指定する前後のALTER SYSTEM SET文より優先されます。
この句を指定しない場合は、次のようになります。
SID = '*'を指定したとみなされます。
現行のインスタンス以外のインスタンスを指定すると、そのインスタンスに、メモリーのパラメータ値の変更を通知するメッセージが送信されます。
USE_STORED_OUTLINESは、システム・パラメータであり、初期化パラメータではありません。pfileまたはspfile内に設定することはできませんが、ALTER SYSTEM文とともに設定できます。このパラメータは、オプティマイザが実行計画を生成するためにストアド・パブリック・アウトラインを使用するかどうかを指定します。
TRUEに設定すると、要求をコンパイルするときに、オプティマイザはDEFAULTカテゴリのストアド・アウトラインを使用します。
FALSEに設定すると、オプティマイザはストアド・アウトラインを使用しません。これはデフォルトです。
category_nameに設定すると、要求をコンパイルするときに、オプティマイザはcategory_nameカテゴリのストアド・アウトラインを使用します。
GLOBAL_TOPIC_ENABLEDは、システム・パラメータであり、初期化パラメータではありません。pfileまたはspfile内に設定することはできませんが、ALTER SYSTEM文とともに設定できます。このパラメータは、Oracle Streams AQで作成されたすべてのキューおよびトピックがLDAPサーバーに自動的に登録されるかどうかを指定します。GLOBAL_TOPIC_ENABLED = TRUEの場合、キュー表が作成、変更または削除されると、対応するLightweight Directory Access Protocol(LDAP)エントリも作成、変更または削除されます。
このパラメータは、Java Message Service(JMS)に対しても同様に機能します。LDAPを使用するようにデータベースが構成されており、GLOBAL_TOPIC_ENABLEDパラメータがTRUEに設定されている場合、すべてのJMSキューおよびトピックは作成時にLDAPサーバーに自動的に登録されます。管理者は、LDAPに登録されたキューおよびトピックの別名を作成することもできます。LDAPに登録されたキューおよびトピックは、JNDIを介してキューまたはトピックの名前または別名を使用してルックアップできます。
インスタンスを起動すると、Oracle DatabaseはSHARED_SERVERSおよびDISPATCHERS初期化パラメータの値に基づく共有サーバー・アーキテクチャの共有サーバー・プロセスおよびディスパッチャ・プロセスを作成します。ALTER SYSTEM文でSHARED_SERVERSおよびDISPATCHERSパラメータを設定し、インスタンスの実行中に次の操作のいずれかを実行できます。
MAX_DISPATCHERSによって指定される数まで作成できます。
この句によって、任意のインスタンスについて、インスタンスの起動に使用されたspfile内の初期化パラメータの設定を削除できます。SCOPE=MEMORYもSCOPE=BOTHも許可されません。SCOPE = SPFILE句は必須ではありませんが、構文を明確にするために含まれています。この句は単一インスタンス環境で使用できますが、pfileではなくspfileを使用してインスタンスが起動された場合のみです。
SID句を使用すると、指定したインスタンスのspfileパラメータ設定を削除できます。RAC環境以外では、インスタンスは1つのみであるため、この句を省略できます。RAC環境では、この句を省略すると、デフォルトのSID = '*'が使用されます。つまり、*.parameter = value形式のパラメータのすべての設定が削除されます。
|
参照:
|
次の文は、SCN 9356083のREDOログ・エントリを含むREDOログ・ファイル・グループを手動でアーカイブします。
ALTER SYSTEM ARCHIVE LOG CHANGE 9356083;
次の文は、メンバー'diskl:log6.log'を含むREDOログ・ファイル・グループを、'diska:[arch$]'という場所にあるアーカイブREDOログ・ファイルに手動でアーカイブします。
ALTER SYSTEM ARCHIVE LOG LOGFILE 'diskl:log6.log' TO 'diska:[arch$]';
次の文は、クエリー・リライトが明示的に使用禁止にされていないすべてのマテリアライズド・ビューに対するすべてのセッションで、クエリー・リライトを使用可能にします。
ALTER SYSTEM SET QUERY_REWRITE_ENABLED = TRUE;
たとえば、アプリケーションのメンテナンス中は、RESTRICTED SESSIONシステム権限が付与されているアプリケーション開発者のみがログインできるようにセッションを制限できます。このためには、次の文を発行します。
ALTER SYSTEM ENABLE RESTRICTED SESSION;
次に、ALTER SYSTEM文のKILL SESSION句を使用すると、既存のセッションをどれでも終了できます。
アプリケーションのメンテナンスが終了した後で、次の文を発行することによって、CREATE SESSIONシステム権限が付与されているユーザーもログインできるようになります。
ALTER SYSTEM DISABLE RESTRICTED SESSION;
次の文を使用すると、サーバー・ウォレットの情報をメモリーにロードして、データの透過的暗号化のマスター鍵を設定できます。
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "welcome1"; ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "welcome1";
これらの文では、セキュリティ・モジュールが初期化済で、パスワードwelcome1を使用してウォレットが作成済であることを前提としています。
共有プールを消去してから、パフォーマンス分析を開始します。共有プールを消去する場合、次の文を発行します。
ALTER SYSTEM FLUSH SHARED_POOL;
次の文は、チェックポイントを強制的に発生させます。
ALTER SYSTEM CHECKPOINT;
次のALTER SYSTEM文は、リソース制限を動的に使用可能にします。
ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;
次の文は、共有サーバー・プロセスの最小数を25に変更します。
ALTER SYSTEM SET SHARED_SERVERS = 25;
共有サーバー・プロセスの数が25より少ない場合は追加作成されます。共有サーバー・プロセスが25より多く、25あれば負荷を管理できる場合は、現行のコールによる処理が終了した時点で、25を超える分の共有サーバー・プロセスは終了します。
次の文は、TCP/IPプロトコルのディスパッチャ・プロセス数を5に、ipcプロトコルのディスパッチャ・プロセス数を10に動的に変更します。
ALTER SYSTEM SET DISPATCHERS = '(INDEX=0)(PROTOCOL=TCP)(DISPATCHERS=5)', '(INDEX=1)(PROTOCOL=ipc)(DISPATCHERS=10)';
TCPのディスパッチャ・プロセスの数が5より少ない場合、ディスパッチャ・プロセスが新しく作成されます。5より多い場合は、接続されているユーザーが接続を切断した後に、5を超える分のディスパッチャ・プロセスは終了します。
ipcのディスパッチャ・プロセスの数が10より少ない場合、ディスパッチャ・プロセスが新しく作成されます。10より多い場合は、接続されているユーザーが接続を切断した後に、10を超える分のディスパッチャ・プロセスは終了します。
これ以外のプロトコル用として既存ディスパッチャがある場合、この文は、そのディスパッチャの数に影響しません。
次の文は、インスタンスにおけるセッションの最大数を64に、セッションの警告しきい値を54に動的に変更します。
ALTER SYSTEM SET LICENSE_MAX_SESSIONS = 64 LICENSE_SESSIONS_WARNING = 54;
セッション数が54に達した場合、後続の各セッションのALERTファイルに警告メッセージが書き込まれます。RESTRICTED SESSIONシステム権限を持つユーザーも、後続セッションを開始する場合に、警告メッセージを受け取ります。
セッション数が64に達した場合、セッション数が再び64を下回るまでは、RESTRICTED SESSIONシステム権限を持つユーザー以外は新しいセッションを開始できません。
次の文は、インスタンスのセッションの最大数を動的に使用禁止にします。この文の実行後は、インスタンスのセッション数に制限がなくなります。
ALTER SYSTEM SET LICENSE_MAX_SESSIONS = 0;
次の文は、データベースのユーザー数の制限を200に動的に変更します。この文の実行後は、データベース・ユーザー数が200を超えることはありません。
ALTER SYSTEM SET LICENSE_MAX_USERS = 200;
書込み中のファイルの削除および名前の変更はできません。ただし、ログ・スイッチを強制的に発生させることによって、現行のREDOログ・ファイル・グループまたはそのメンバーの1つを削除したり、その名前を変更できます。強制的に発生したログ・スイッチは、インスタンスのREDOログ・スレッドのみに影響します。次の文は、ログ・スイッチを強制的に発生させます。
ALTER SYSTEM SWITCH LOGFILE;
次の文は、分散リカバリを使用可能にします。
ALTER SYSTEM ENABLE DISTRIBUTED RECOVERY;
デモンストレーションまたはテストの目的で、分散リカバリを使用禁止にする場合があります。次の文は、シングルプロセス・モードとマルチプロセス・モードの両方で分散リカバリを使用禁止にします。
ALTER SYSTEM DISABLE DISTRIBUTED RECOVERY;
デモンストレーションまたはテストが終了した場合、ALTER SYSTEM文にENABLE DISTRIBUTED RECOVERY句を指定して実行すると、分散リカバリを再び使用可能にできます。
あるユーザーのセッションで、他のユーザーが必要とするリソースを使用している場合、そのユーザーのセッションを終了させる場合があります。このユーザーは、セッションが終了したことを示すエラー・メッセージを受け取ります。このユーザーは、新しいセッションを開始しないかぎり、このデータベースをコールできません。次のV$SESSION動的パフォーマンス表のデータについて考えます。ここでは、ユーザーSYSとoeが両方ともセッションを開いているものとします。
SELECT sid, serial#, username FROM V$SESSION; SID SERIAL# USERNAME ---------- ---------- ------------------------------ 29 85 SYS 33 1 35 8 39 23 OE 40 1 . . .
次の文は、V$SESSIONのSID値とSERIAL#値を使用して、ユーザーscottのセッションを終了します。
ALTER SYSTEM KILL SESSION '39, 23';
次の文は、V$SESSIONのSIDとSERIAL#の値を使用して、ユーザーscottのセッションを切断します。
ALTER SYSTEM DISCONNECT SESSION '13, 8' POST_TRANSACTION;
|
![]() Copyright © 1996, 2008, Oracle Corporation. All Rights Reserved. |
|