ヘッダーをスキップ

Oracle Database SQLリファレンス
10g リリース2(10.2)

B19201-02
目次
目次
索引
索引

戻る 次へ

13 SQL文: ALTER TRIGGER〜COMMIT

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


ALTER TRIGGER

用途

ALTER TRIGGER文を使用すると、データベース・トリガーを使用可能化、使用禁止化またはコンパイルできます。


注意:

この文を使用して既存のトリガーの宣言や定義は変更できません。トリガーを再宣言または再定義する場合は、OR REPLACEキーワードを指定したCREATE TRIGGER文を使用します。 


参照:

  • トリガーの作成については、「CREATE TRIGGER」を参照してください。

  • トリガーの削除については、「DROP TRIGGER」を参照してください。

  • トリガーの概要は、『Oracle Database概要』を参照してください。

 

前提条件

トリガーが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER ANY TRIGGERシステム権限が必要です。

DATABASE上のトリガーを変更する場合は、ADMINISTERデータベース・イベント・システム権限が必要です。

参照:

DATABASEトリガーに基づいたトリガーの詳細は、「CREATE TRIGGER」を参照してください。 

構文

alter_trigger::=

画像の説明

compiler_parameters_clause::=

画像の説明

セマンティクス

schema

トリガーが含まれているスキーマを指定します。schemaを指定しない場合、トリガーは自分のスキーマ内に定義されているとみなされます。

trigger

変更するトリガーの名前を指定します。

ENABLE | DISABLE

ENABLEを指定すると、トリガーを使用可能にできます。また、ALTER TABLEENABLE ALL TRIGGERS句を使用することによって、表に対応付けられたすべてのトリガーを使用可能にできます。「ALTER TABLE」を参照してください。

DISABLEを指定すると、トリガーを使用禁止にできます。また、ALTER TABLEDISABLE ALL TRIGGERS句を使用することによって、表に対応付けられたすべてのトリガーを使用禁止にできます。

参照:

「トリガーを使用可能にする例:」および「トリガーを使用禁止にする例:」を参照してください。 

RENAME句

RENAME TO new_nameを指定すると、トリガーの名前を変更できます。トリガーの名前は変更され、名前が変更される前と同じ状態になります。

トリガーの名前を変更すると、USER_SOURCEALL_SOURCEおよびDBA_SOURCEデータ・ディクショナリ・ビューに記憶されているトリガーのソースが再構築されます。その結果、トリガー・ソースが変更されていなくても、これらのビューのTEXT列のコメントおよび書式設定が変更される場合があります。

COMPILE句

COMPILEを指定すると、トリガーが使用可能または使用禁止であるかにかかわらず、トリガーを明示的にコンパイルできます。明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、また、実行時のコンパイル・エラーとパフォーマンス上のオーバーヘッドもなくなります。

トリガーが依存するオブジェクトに無効なオブジェクトがある場合は、最初にそのオブジェクトが再コンパイルされます。トリガーの再コンパイルが正常に終了した場合、このトリガーは使用可能になります。

再コンパイル中、データベースはすべての永続コンパイラのスイッチ設定を削除し、セッションからそれらを再び取得してコンパイルの終了時に格納します。この手順を回避するには、REUSE SETTINGS句を指定します。

トリガーの再コンパイル時にエラーが発生した場合、エラーが戻り、そのトリガーは使用禁止のままです。SQL*PlusコマンドSHOW ERRORSを使用して、関連するコンパイラ・エラー・メッセージを表示できます。

DEBUG

DEBUGを指定すると、PL/SQLコンパイラに対して、PL/SQLデバッガ用のコードを生成および格納するように指示できます。この句を指定すると、compiler_parameters_clausePLSQL_DEBUG = TRUEを指定するのと同じ効果が得られます。

参照:

  • これらのプロシージャについては、『Oracle Databaseアプリケーション開発者ガイド-基礎編』を参照してください。

  • リモート・オブジェクトを含むスキーマ・オブジェクト間の依存性をOracleデータベースが管理する方法については、『Oracle Database概要』を参照してください。

 

compiler_parameters_clause

この句のトリガーに対する動作は、ファンクションに対する動作と同じです。詳細は、「ALTER FUNCTION」の「compiler_parameters_clause」を参照してください。

REUSE SETTINGS

この句のトリガーに対する動作は、ファンクションに対する動作と同じです。詳細は、「ALTER FUNCTION」のREUSE SETTINGS句を参照してください。

トリガーを使用禁止にする例:

サンプル・スキーマhrには、employees表で作成されたupdate_job_historyという名前のトリガーがあります。トリガーは、UPDATE文によって従業員のjob_idが変更されるたびに起動されます。トリガーは、job_history表に従業員ID、直前の職種の開始日と終了日、職種IDおよび部門を含む行を挿入します。

このトリガーは、作成時に自動的に使用可能になります。その後、次の文を指定して使用禁止にできます。

ALTER TRIGGER update_job_history DISABLE;
 

使用禁止になると、UPDATE文によって従業員のjob_idが変更されてもトリガーは起動されません。

トリガーを使用可能にする例:

トリガーを使用禁止にした後、次の文を使用してそのトリガーを再び使用可能にできます。

ALTER TRIGGER update_job_history ENABLE; 

再びトリガーを使用可能にした場合、UPDATE文によって従業員のjob_idが変更されるたびにトリガーが起動されます。トリガーが使用禁止の場合、従業員のjob_idが変更されても、他のトランザクションが再びjob_idを変更するまで、トリガーは自動的には起動されません。


ALTER TYPE

用途

ALTER TYPE文を使用すると、メンバー属性またはメソッドを追加または削除できます。オブジェクト型の既存のプロパティ(FINALまたはINSTANTIABLE)、または型のスカラー属性も変更できます。

この文を使用すると、新しいオブジェクト・メンバーのサブプログラム仕様を追加することによって、型の仕様部または本体を再コンパイルしたり、オブジェクト型の仕様を変更することができます。

前提条件

オブジェクト型が自分のスキーマ内にあり、CREATE TYPECREATE ANY TYPE権限を持っている必要があります。または、ALTER ANY TYPEシステム権限が必要です。

構文

alter_type::=

画像の説明

compile_type_clause::=replace_type_clause::=alter_method_spec::=alter_attribute_definition::=alter_collection_clauses::=dependent_handling_clause::=を参照)

compile_type_clause::=

画像の説明

compiler_parameters_clause::=

画像の説明

replace_type_clause::=

画像の説明

invoker_rights_clause::=

画像の説明

element_spec::=

画像の説明

inheritance_clauses::=subprogram_spec::=constructor_spec::=map_order_function_spec::=pragma_clause::=を参照)

inheritance_clauses::=

画像の説明

subprogram_spec::=

画像の説明

procedure_spec::=function_spec::=を参照)

procedure_spec::=

画像の説明

function_spec::=

画像の説明

constructor_spec::=

画像の説明

map_order_function_spec::=

画像の説明

function_spec::=を参照)

pragma_clause::=

画像の説明

alter_method_spec::=

画像の説明

map_order_function_spec::=subprogram_spec::=を参照)

alter_attribute_definition::=

画像の説明

alter_collection_clauses::=

画像の説明

dependent_handling_clause::=

画像の説明

exceptions_clause::=

画像の説明

セマンティクス

schema

型が含まれているスキーマを指定します。schemaを指定しない場合、この型は現行のスキーマ内にあるとみなされます。

type

オブジェクト型、ネストした表型またはVARRAY型の名前を指定します。

compile_type_clause

COMPILEを指定すると、オブジェクト型の仕様部および本体をコンパイルできます。SPECIFICATIONまたはBODYのいずれも指定していない場合、これはデフォルトです。

再コンパイル中、Oracleデータベースはすべての永続コンパイラのスイッチ設定を削除し、セッションからそれらを再び取得してコンパイルの終了時に格納します。この手順を回避するには、REUSE SETTINGS句を指定します。

型の再コンパイル時にエラーが発生した場合、エラーが戻り、その型は無効のままです。SQL*PlusコマンドSHOW ERRORSを使用して、関連するコンパイラ・エラー・メッセージを表示できます。

参照:

「型の再コンパイル例:」および「型仕様部の再コンパイル例:」を参照してください。 

DEBUG

DEBUGを指定すると、PL/SQLコンパイラに対して、PL/SQLデバッガ用のコードを生成および格納するように指示できます。この句を指定すると、compiler_parameters_clausePLSQL_DEBUG = TRUEを指定するのと同じ効果が得られます。

SPECIFICATION

SPECIFICATIONを指定すると、オブジェクト型の仕様部のみをコンパイルできます。

BODY

BODYを指定すると、オブジェクト型の本体のみをコンパイルできます。

compiler_parameters_clause

この句の型に対する動作は、ファンクションに対する動作と同じです。詳細は、「ALTER FUNCTION」の「compiler_parameters_clause」を参照してください。

REUSE SETTINGS

この句の型に対する動作は、ファンクションに対する動作と同じです。詳細は、「ALTER FUNCTION」の句REUSE SETTINGSを参照してください。

replace_type_clause

REPLACE句を使用すると、新しいメンバー・サブプログラム仕様を追加できます。この句はオブジェクト型のみに有効で、ネストした表またはVARRAYには無効です。

attribute

オブジェクトの属性名を指定します。属性とは、名前と型指定子を持つオブジェクト構造を形成するデータ項目です。

element_spec

再定義するオブジェクトの要素を指定します。

inheritance_clauses

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

subprogram_spec

MEMBER句およびSTATIC句を使用すると、属性として参照されるオブジェクト型に対するファンクション・サブプログラムまたはプロシージャ・サブプログラムを指定できます。

それぞれのプロシージャまたはファンクションの仕様部について、オブジェクト型本体に対応するメソッド本体を指定する必要があります。

参照:

  • メンバー・メソッドとスタティック・メソッドの違い、およびこれらの例については、「CREATE TYPE」を参照してください。

  • パッケージ内のサブプログラム名のオーバーロードについては、『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。

  • 「CREATE TYPE BODY」

 

procedure_spec

プロシージャ・サブプログラムの仕様部を指定します。

function_spec

ファンクション・サブプログラムの仕様部を指定します。

pragma_clause

pragma_clauseは、データベースの表またはパッケージ変数(あるいはその両方)に対するメンバー・ファンクションの読み書きアクセスを拒否し、副作用の発生を防止するコンパイラ・ディレクティブです。

アプリケーションの下位互換を保つ必要がない場合は、この句を使用しないことをお薦めします。この句は使用されなくなりました。実行時に純粋度チェックが行われます。ご使用のアプリケーションの下位互換用にこの句を使用する必要がある場合は、「CREATE TYPE」の「pragma_clause」を参照してください。

プラグマの制限事項:

pragma_clauseは、メソッドを削除すると無効になります。

参照:

『Oracle Databaseアプリケーション開発者ガイド-基礎編』 

map_order_function_spec

宣言するMEMBERまたはSTATICメソッドの数にかかわらず、MAPメソッドまたはORDERメソッドのいずれかを宣言できます。ただし、スーパータイプがNOT FINAL MAPメソッドを定義する場合、サブタイプはMAPメソッドを上書きできます。いずれかのメソッドを宣言すると、SQL内でオブジェクト・インスタンスを比較できます。

どちらのメソッドも宣言しない場合、比較できるのはオブジェクト・インスタンスの等価性と非等価性のみです。同じ型定義のインスタンスは、それぞれの対応する属性の各組が等しい場合にのみ等しくなります。2つのオブジェクト型の等価性を判断するために比較方法を指定する必要はありません。

参照:

オブジェクト値の比較の詳細は、「オブジェクト値」を参照してください。 

invoker_rights_clause

invoker_rights_clauseを使用すると、オブジェクト型のメンバー・ファンクションおよびプロシージャが、そのオブジェクト型を所有するユーザーのスキーマで権限付きで実行されるか、またはCURRENT_USERのスキーマで権限付きで実行されるかを指定できます。この指定は、対応する型本体にも適用されます。

また、この句は、問合せ、DML操作、およびその型のメンバー・ファンクションおよびプロシージャ内の動的SQL文の外部名の変換方法も定義します。

実行者権限の制限事項:

この句はオブジェクト型のみに指定でき、ネストした表およびVARRAYには指定できません。

AUTHID CURRENT_USER句

CURRENT_USERを指定すると、オブジェクト型のメンバー・ファンクションおよびプロシージャをCURRENT_USERの権限で実行できます。この句によって実行者権限型が作成されます。

実行者権限を実行者権限状態で作成した場合、この句を指定し、この型への実行者権限を維持する必要があります。指定しないと、この状態は定義者権限に戻ります。

また、この句は、問合せ、DML操作、および動的SQL文の外部名をCURRENT_USERのスキーマで変換することも指定します。その他すべての文の外部名は、型が存在するスキーマ内で変換します。

AUTHID DEFINER句

DEFINERを指定すると、ファンクションおよびプロシージャが存在するスキーマの所有者権限で、オブジェクト型のメンバー・ファンクションおよびプロシージャを実行し、メンバー・ファンクションおよびプロシージャが存在するスキーマで外部名を変換できます。これはデフォルトです。

参照:

  • CURRENT_USERの判断方法については、『Oracle Database概要』および『Oracle Databaseアプリケーション開発者ガイド-基礎編』を参照してください。

  • 『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』

 

alter_method_spec

alter_method_specを使用すると、typeに対してメソッドを追加および削除できます。型に依存するすべてのファンクション索引が使用禁止になります。

1つのALTER TYPE文で複数のメソッドを追加または削除できますが、各メソッドを参照できるのは1回のみです。

ADD

メソッドを追加する場合は、型の階層内の既存の属性と競合しない名前にする必要があります。

参照:

「メンバー・ファンクションの追加例:」 

DROP

メソッドを削除すると、対象の型からメソッドが削除されます。

メソッドの削除の制限事項:

スーパータイプから継承されたメソッドを、サブタイプで削除できません。かわりに、スーパータイプでメソッドを削除します。

subprogram_spec

MEMBERおよびSTATIC句を使用すると、オブジェクト型に対してプロシージャ・サブプログラムを追加または削除できます。

サブプログラムの制限事項:

スーパータイプのメンバー・メソッドを再定義するサブタイプのスタティック・メソッドは定義できません。またその逆も同様です。詳細は、「CREATE TYPE」の「subprogram_spec」を参照してください。

map_order_function_spec

MAPORDERのいずれかのメソッドを宣言すると、SQL内でオブジェクト・インスタンスを比較できます。

MAPメソッドおよびORDERメソッドの制限事項:

サブタイプにORDERメソッドを追加できません。詳細は、「CREATE TYPE」の「constructor_spec」を参照してください。

alter_attribute_definition

alter_attribute_definition句を使用すると、オブジェクト型の属性を追加、削除または変更できます。1つのALTER TYPE文で複数のメンバー属性またはメソッドを追加、削除または変更できますが、各属性または各メソッドを参照できるのは1回のみです。

ADD ATTRIBUTE

新しい属性は、型の階層内にすでに存在する属性またはメソッドと競合しない名前にする必要があります。新しい属性は、ローカル定義の属性リストの終わりに追加されます。

スーパータイプに属性を追加すると、すべてのサブタイプに継承されます。サブタイプでは、継承された属性は、宣言した属性より常に優先されます。そのため、スーパータイプに属性を追加した後、暗黙的に変更されたサブタイプのマッピングの更新が必要な場合があります。

参照:

「コレクション属性の追加例:」 

DROP ATTRIBUTE

型から属性を削除すると、削除された属性に対応する列、索引、統計情報および削除する属性を参照する制約も削除されます。

削除する属性のデータ型を指定する必要はありません。

型属性の削除の制限事項:

型属性の削除には、次の制限事項があります。

MODIFY ATTRIBUTE

既存のスカラー属性のデータ型を変更できます。たとえば、VARCHAR2またはRAWの長さ、または数値属性の精度または位取りを増やすことができます。

属性の変更の制限事項:

ファンクション索引、ドメイン索引またはクラスタ・キーで参照される属性のサイズを拡張することはできません。

[NOT] FINAL

この句を使用すると、この型のサブタイプを以降で作成させるかどうかを指定できます。

FINALNOT FINALとの間でプロパティを変更する場合は、依存列および表のデータを変換するためにdependent_handling_clauseCASCADE句を指定する必要があります。

FINALの制限事項:

型にサブタイプがある場合、ユーザー定義型をNOT FINALからFINALに変更できません。

[NOT] INSTANTIABLE

この句を使用すると、この型のオブジェクト・インスタンスを構成させるかどうかを指定できます。

NOT INSTANTIABLEの制限事項:

型に依存表がある場合、ユーザー定義型をINSTANTIABLEからNOT INSTANTIABLEに変更できません。

alter_collection_clauses

この句はコレクション型にのみ有効です。

MODIFY LIMIT integer

この句を使用すると、VARRAYの要素の数を増やすことができます。この句は、ネストした表に対しては無効です。VARRAYの要素の現在の最大数より大きい整数を指定してください。

参照:

「コレクション型の要素数の増加例:」 

ELEMENT TYPE datatype

この句を使用すると、VARRAYまたはネストした表のスカラー・データ型の精度、サイズや長さを増やすことができます。この句は、オブジェクト型のコレクションに対しては無効です。

dependent_handling_clause

dependent_handling_clauseを使用すると、変更された型に依存するオブジェクトの処理方法をOracleデータベースに指示できます。この句を指定しないと、typeに依存する型または表がある場合にALTER TYPE文が異常終了します。

INVALIDATE句

INVALIDATEを指定すると、メカニズムの検証なしで、依存するすべてのオブジェクトが無効になります。


注意:

型の変更が検証されないため、この句の使用には注意が必要です。たとえば、パーティション化キーまたはクラスタ・キーの属性を削除すると、表に書込みができなくなります。 


CASCADE句

CASCADE句を指定すると、型の変更を依存する型および表まで広めることができます。依存する型または表でエラーが発生したときに、FORCEを指定していない場合は、文が異常終了します。

FINALNOT FINALとの間で型のプロパティを変更する場合は、依存列および表のデータを変換するためにこの句を指定する必要があります。詳細は、「[NOT] FINAL」を参照してください。

INCLUDING TABLE DATA

INCLUDING TABLE DATAを指定すると、すべてのユーザー定義列に格納されているデータを列の型の最新バージョンに変換できます。これはデフォルトです。


注意:

列データがOracle8リリース8.0のイメージ・フォーマットの場合、この句を指定する必要があります。この句は、FINALNOT FINALの間で型のプロパティを変更する場合にも必須です。 


INCLUDING TABLE DATAを指定する場合、表のデータを含むすべての表領域を読取り/書込みモードにする必要があります。

NOT INCLUDING TABLE DATAを指定すると、列のメタデータはアップグレードされ、変更は型に反映されますが、依存する列はスキャンされず、このALTER TYPE文の一部としてはデータが更新されません。ただし、依存する列データはアクセスすることができ、後続のデータの問合せの結果では、型の変更が反映されます。

参照:

型属性の変更時に表データを含まない実装の詳細は、『Oracle Databaseアプリケーション開発者ガイド-オブジェクト・リレーショナル機能』を参照してください。 

CONVERT TO SUBSTITUTABLE

この句を指定すると、FINALNOT FINALとの間で型を変更し、その型の代替可能な表および列を新しく作成して、既存の依存表および列に変更された型の新規のサブタイプ・インスタンスを格納できます。詳細は、「[NOT] FINAL」を参照してください。

exceptions_clause

FORCEを指定すると、依存表および索引のエラーを無視し、すべてのエラーを指定した例外表のログに記録できます。例外表は、DBMS_UTILITY.CREATE_ALTER_TYPE_ERROR_TABLEプロシージャの実行によって作成しておく必要があります。

メンバー・ファンクションの追加例:

次の例では、data_typ1オブジェクト型(「オブジェクト型の例:」で作成)を使用します。メソッドは、data_typ1に追加され、型の本体は対応するように変更されます。日付書式は、oe.ordersサンプル表のorder_date列と一致しています。

ALTER TYPE data_typ1 
   ADD MEMBER FUNCTION qtr(der_qtr DATE) 
   RETURN CHAR CASCADE;

CREATE OR REPLACE TYPE BODY data_typ1 IS 
  MEMBER FUNCTION prod (invent NUMBER) RETURN NUMBER IS 
  BEGIN 
  RETURN (year + invent); 
  END; 
     MEMBER FUNCTION qtr(der_qtr DATE) RETURN CHAR IS 
     BEGIN 
       IF (der_qtr < TO_DATE('01-APR', 'DD-MON')) THEN 
         RETURN 'FIRST'; 
       ELSIF (der_qtr < TO_DATE('01-JUL', 'DD-MON')) THEN 
         RETURN 'SECOND'; 
       ELSIF (der_qtr < TO_DATE('01-OCT', 'DD-MON')) THEN 
         RETURN 'THIRD'; 
       ELSE 
         RETURN 'FOURTH'; 
       END IF; 
     END; 
   END;
/
コレクション属性の追加例:

次の例では、text表のtextdoc_tabオブジェクト列に、author属性を追加します。この基礎となるtextdoc_typ型は、「名前付き表型の例:」で作成されたものです。

CREATE TABLE text (
   doc_id       NUMBER,
   description  textdoc_tab)
   NESTED TABLE description STORE AS text_store;

ALTER TYPE textdoc_typ 
   ADD ATTRIBUTE (author VARCHAR2) CASCADE;

textdoc_tabおよびtext表の両方がtextdoc_typ型に依存するため、CASCADEキーワードは必要です。

コレクション型の要素数の増加例:

次の例では、VARRAY phone_list_typ_demo「VARRAY型の例:」で作成)の最大要素数を増やします。

ALTER TYPE phone_list_typ_demo
  MODIFY LIMIT 10 CASCADE;
コレクション型の長さの増加例:

次の例では、VARRAY要素型phone_list_typの長さを増やします。

ALTER TYPE phone_list_typ
  MODIFY ELEMENT TYPE VARCHAR(64) CASCADE;
型の再コンパイル例:

次の例では、hrスキーマのcust_address_typ型を再コンパイルします。

ALTER TYPE cust_address_typ2 COMPILE;
型仕様部の再コンパイル例:

次の例では、link2の型本体をコンパイルします。

CREATE TYPE link1 AS OBJECT
  (a NUMBER); 
/
CREATE TYPE link2 AS OBJECT
  (a NUMBER, 
   b link1, 
   MEMBER FUNCTION p(c1 NUMBER) RETURN NUMBER); 
/
CREATE TYPE BODY link2 AS
   MEMBER FUNCTION p(c1 NUMBER) RETURN NUMBER IS 
      BEGIN  
         dbms_output.put_line(c1);
         RETURN c1; 
      END; 
   END; 
/

次の例では、link2の属性であるlink1が変更されたため、link2の仕様部と本体の両方を無効にします。

ALTER TYPE link1 ADD ATTRIBUTE (b NUMBER) INVALIDATE;

別の文で仕様部と本体を再コンパイルすることによって、型を再コンパイルする必要があります。

ALTER TYPE link2 COMPILE SPECIFICATION;
         
ALTER TYPE link2 COMPILE BODY;
         

仕様部と本体の両方は同時にコンパイルできます。

ALTER TYPE link2 COMPILE;

ALTER USER

用途

ALTER USERを使用すると、次の操作を実行できます。

前提条件

ALTER USERシステム権限が必要です。ただし、ユーザー自身のパスワードはこの権限がない場合でも変更できます。

構文

alter_user::=

画像の説明

size_clause::=を参照)

proxy_clause::=

画像の説明

db_user_proxy::=

画像の説明

セマンティクス

この項で説明するキーワード、パラメータおよび句は、ALTER USER独自のものと、CREATE USERにもあるが、セマンティクスが異なるものがあります。その他のキーワード、パラメータおよび句には、CREATE USER文と同じ意味があります。


注意:

ユーザー名およびパスワードは、ご使用のプラットフォームに応じて、ASCIIまたはEBCDIC文字のみでエンコードすることをお薦めします。詳細は、『Oracle Database管理者ガイド』を参照してください。 


参照:

キーワードおよびパラメータについては、「CREATE USER」を参照してください。ユーザーにデータベース・リソースへの制限を割り当てる方法については、「CREATE PROFILE」を参照してください。 

IDENTIFIED句

BY password

BY passwordを指定すると、ユーザーの新しいパスワードを指定できます。


注意:

異なるタイムスタンプで特定のパスワードを再設定する必要があります。1秒以内に1つのパスワードを複数回再設定した場合(たとえば、スクリプトを使用して一連のパスワードの設定を繰り返した場合)、データベースはパスワードが再利用できないというエラー・メッセージを戻すことがあります。このため、パスワードの再設定には、スクリプトを使用しないことをお薦めします。 


自分のパスワードを初めて設定する場合、またはALTER USERシステム権限を持っていて、他のユーザーのパスワードを変更する場合は、REPLACE句を省略できます。ただし、ALTER USERシステム権限を持たないかぎり、複雑なパスワードの検証機能が使用可能な場合は、UTLPWDMG.SQLスクリプトを実行するか、またはユーザーに割り当てられたプロファイルのPASSWORD_VERIFY_FUNCTIONパラメータに検証機能を指定して、常にREPLACE句を指定する必要があります。

以前のパスワードをREPLACE句に指定した場合でも、自分以外の既存のパスワードを変更している場合は、以前のパスワードはチェックされません。そのようなチェックが必要な場合(たとえば、権限を持つユーザーが他のユーザーのパスワードを変更する場合)、複雑なパスワードの検証機能で、以前のパスワードがNULLのパスワードの変更を禁止するか、またはALTER USERのかわりにOCIPasswordChange()コールを使用します。詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。

参照:

複雑なパスワードの検証機能については、『Oracle Database管理者ガイド』を参照してください。 

GLOBALLY

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

ユーザー・アクセスの検証方法は、IDENTIFIED GLOBALLYからIDENTIFIED BY passwordまたはIDENTIFIED EXTERNALLYのいずれかに変更できます。ユーザーのアクセス検証方法を他のいずれかの検証方法からIDENTIFIED GLOBALLYに変更できるのは、ユーザーに明示的に付与されたすべての外部ロールが取り消された場合のみです。

EXTERNALLY

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

参照:

グローバルまたは外部で識別されるユーザーの詳細は、『Oracle Identity Management統合ガイド』を参照してください。また、「ユーザー識別の変更例:」および「ユーザー認証の変更例:」も参照してください。 

DEFAULT TABLESPACE句

この句を使用すると、ユーザーの永続セグメントの表領域の割当てまたは再割当てを行うことができます。この句は、データベース用に指定されているデフォルトの表領域を上書きします。

デフォルトの表領域の制限事項:

ローカル管理の一時表領域(UNDO表領域を含む)またはディクショナリ管理の一時表領域は、ユーザーのデフォルトの表領域として指定できません。

TEMPORARY TABLESPACE句

この句を使用すると、ユーザーの一時セグメントの表領域または表領域グループの割当てまたは再割当てを行うことができます。

ユーザーの一時表領域の制限事項:

ユーザーの一時表領域として割り当てる表領域、または再度割り当てる表領域は、標準的なブロック・サイズの一時表領域である必要があります。

参照:

「表領域グループの割当て例:」 

DEFAULT ROLE句

ログイン時にデフォルトによってユーザーに付与されるロールを指定します。この句では、GRANT文を使用してユーザーに直接付与されているロールのみ指定できます。DEFAULT ROLE句を使用して次のロールを使用可能にすることはできません。

Oracleデータベースでは、ユーザーがパスワードを指定したり、別の方法で認証を行わなくても、ログイン時にデフォルトのロールが使用可能になります。ユーザーにアプリケーション・ロールを付与している場合、DEFAULT ROLE ALL EXCEPT role句を使用して、認可済パッケージを使用するアプリケーションを除いて、そのユーザーの後続のログインで使用可能にならないようにするロールを指定する必要があります。

参照:

「CREATE ROLE」 

proxy_clause

proxy_clauseを使用すると、エンタープライズ・ユーザー(データベースの外側のユーザー)またはデータベース・プロキシ(別のデータベース・ユーザー)が、変更対象のデータベース・ユーザーとして、どのように接続できるようにするかを制御できます。

GRANT | REVOKE

GRANTを指定すると、接続を許可できます。REVOKEを指定すると、接続を禁止できます。

CONNECT THROUGH句

Oracleデータベースに接続するプロキシを識別します。AUTHENTICATED USING句を指定しない場合は、Oracleデータベースは、ユーザーの認証にプロキシを想定します。

WITH ROLE

WITH ROLE role_nameを使用すると、プロキシは指定したユーザーとして接続でき、role_nameで指定されたロールのみをアクティブにできます。

WITH ROLE ALL EXCEPT

WITH ROLE ALL EXCEPT role_nameを使用すると、プロキシは指定したユーザーとして接続でき、role_nameで指定されたロール以外の、このユーザーに対応付けられたすべてのロールをアクティブにできます。

WITH NO ROLES

WITH NO ROLESを使用すると、プロキシは指定したユーザーとして接続できますが、接続後にそのユーザーのロールを1つでもアクティブにすることは禁止されます。

WITH句を指定しない場合、指定したユーザーに付与されているすべてのロールが自動的にアクティブになります。

AUTHENTICATION REQUIRED句

AUTHENTICATION REQUIREDを指定すると、指定されたプロキシを介してユーザーが認証されるときに、ユーザーに認証の資格証明(パスワード)を要求できます。

AUTHENTICATED USING

この句は、必要なくなりました。現在は使用されません。コードで使用した場合は無視されます。proxy_clauseは、AUTHENTICATION REQUIRED句とともに指定するか、この句を含めずに指定してください。

参照:

  • データベース・セキュリティの概要は、『Oracleセキュリティ概要』を参照してください。

  • 中間層システムおよびプロキシ認証の詳細は、『Oracle Database管理者ガイド』および『Oracle Databaseアプリケーション開発者ガイド-基礎編』を参照してください。

 

ユーザー識別の変更例:

次の文は、ユーザーsidney「データベース・ユーザーの作成例:」で作成)のパスワードをsecond_2nd_pwdに、デフォルト表領域を表領域exampleに変更します。

ALTER USER sidney 
    IDENTIFIED BY second_2nd_pwd
    DEFAULT TABLESPACE example; 

次の文は、new_profileプロファイル(「プロファイルの作成例:」で作成)をサンプル・ユーザーshに割り当てます。

ALTER USER sh 
    PROFILE new_profile; 

後続のセッションでは、shnew_profileプロファイルの制限に従います。

次の文は、shに直接付与されているすべてのロール(dw_managerロールを除く)をデフォルト・ロールに設定します。

ALTER USER sh 
    DEFAULT ROLE ALL EXCEPT dw_manager; 

shの次のセッションの開始時には、dw_manager以外でshに直接付与されているすべてのロールが使用可能になります。

ユーザー認証の変更例:

次の文は、ユーザーapp_user1「データベース・ユーザーの作成例:」で作成)の認証メカニズムを変更します。

ALTER USER app_user1 IDENTIFIED GLOBALLY AS 'CN=tom,O=oracle,C=US';

次の文は、ユーザーsidneyのパスワードを期限切れにします。

ALTER USER sidney PASSWORD EXPIRE;

PASSWORD EXPIREを使用してデータベース・ユーザーのパスワードを期限切れにした場合、そのユーザー(またはDBA)は、期限切れの後でデータベースにログインする際、パスワードを変更する必要があります。ただし、SQL*Plusなどのツール製品を使用した場合、期限切れの後の最初のログイン時に、パスワードを変更できます。

表領域グループの割当て例:

次の文は、tbs_grp_01「表領域グループへの一時表領域の追加例:」で作成)を表領域グループとしてユーザーshに割り当てます。

ALTER USER sh
  TEMPORARY TABLESPACE tbs_grp_01;
プロキシ・ユーザー例:

次の文は、ユーザーapp_user1を変更します。例では、app_user1がプロキシ・ユーザーshを使用して接続できます。また、プロキシshを使用して接続したときに、app_user1warehouse_userロール(「ロールの作成例:」で作成)を使用可能にできます。

ALTER USER app_user1 
   GRANT CONNECT THROUGH sh
   WITH ROLE warehouse_user;

基本的な構文を示すため、サンプル・データベースSales Historyのユーザー(sh)をプロキシとして使用します。通常、プロキシ・ユーザーは、アプリケーション・サーバーまたは中間層のエンティティに存在します。アプリケーション・サーバーを経由して、アプリケーション・ユーザーとデータベースの間のインタフェースを作成する場合の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。

参照:

 

次の文は、ユーザーapp_user1がプロキシ・ユーザーshを使用して接続する権限を取り消します。

ALTER USER app_user1 REVOKE CONNECT THROUGH sh;

次の仮想例は、プロキシ認証の他の方法を示します。

ALTER USER sully GRANT CONNECT THROUGH OAS1
   AUTHENTICATED USING PASSWORD;

次の例では、ユーザーapp_user1をエンタープライズ・ユーザーがプロキシ使用できるように公開します。エンタープライズ・ユーザーは、Oracle Internet Directory管理者が適切な権限を付与するまでは、app_user1の代理として作業することがきません。

ALTER USER app_user1
   GRANT CONNECT THROUGH ENTERPRISE USERS;

ALTER VIEW

用途

ALTER VIEWを使用すると、無効なビューを明示的に再コンパイルしたり、ビューの制約を変更することができます。明示的に再コンパイルすると、実行前にコンパイル・エラーを検査できます。再コンパイルは、ビューの実表を変更した後で、その変更がビューまたはそのビューに依存するオブジェクトに影響していないかどうかを確認するときに便利です。

ALTER VIEWを使用して、制約のビューを定義、変更または削除することもできます。

この文を使用して既存のビュー定義を変更することはできません。ビューを再定義する場合、OR REPLACEキーワードを指定したCREATE VIEWを使用する必要があります。

ALTER VIEW文を発行した場合、指定したビューは有効か無効かにかかわらず再コンパイルされます。また、そのビューに依存するすべてのローカル・オブジェクトが無効になります。

1つ以上のマテリアライズド・ビューが参照しているビューを変更した場合、これらのマテリアライズド・ビューは無効になります。無効なマテリアライズド・ビューは、クエリー・リライトによって使用できません。また、リフレッシュすることもできません。

参照:

  • ビューの再定義の詳細は、「CREATE VIEW」を参照してください。無効なマテリアライズド・ビューの再検証の詳細は、「ALTER MATERIALIZED VIEW」を参照してください。

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

  • スキーマ・オブジェクト間の依存性については、『Oracle Database概要』を参照してください。

 

前提条件

ビューが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER ANY TABLEシステム権限が必要です。

構文

alter_view::=

画像の説明

constraint::=構文の項にあるout_of_line_constraint::=を参照)

セマンティクス

schema

ビューが含まれているスキーマを指定します。schemaを指定しない場合、ビューは自分のスキーマ内に定義されているとみなされます。

view

再コンパイルするビューの名前を指定します。

ADD句

ADD句を使用すると、viewに制約を追加できます。制約のビューおよび制限事項については、「constraint」を参照してください。

MODIFY CONSTRAINT句

MODIFY CONSTRAINT句を使用すると、既存の制約のビューのRELYまたはNORELY設定を変更できます。この設定の使用方法の詳細については、「RELY句」を、ビュー制約の概要については、「ビュー制約の注意事項:」を参照してください。

制約の変更の制限事項:

一意制約または主キー制約が参照整合性制約の一部である場合、外部キーの削除またはviewの設定にあわせた変更をせずに、設定を変更することはできません。

DROP句

DROPを使用すると、既存のビューの制約を削除できます。

制約の削除の制限事項:

一意制約または主キー制約がビューの参照整合性制約の一部である場合は削除できません。

COMPILE

COMPILEキーワードを指定すると、ビューを再コンパイルできます。

ビューの変更例:

次の文は、ビューcustomer_ro「読取り専用ビューの作成例:」で作成)を再コンパイルします。

ALTER VIEW customer_ro
    COMPILE; 

customer_roの再コンパイル時にエラーが発生しなければ、customer_roは有効になります。再コンパイル・エラーが発生した場合はエラーが戻り、customer_roは無効のままとなります。

依存するオブジェクトもすべて無効になります。依存オブジェクトとは、customer_roを参照する、プロシージャ、ファンクション、パッケージ本体、ビューなどです。その後、明示的に再コンパイルせずに、これらのオブジェクトを参照した場合、データベースは実行時にそれらを暗黙的に再コンパイルします。


ANALYZE

用途

ANALYZE文を使用すると、統計情報を収集して、次のような操作を実行できます。

前提条件

分析するスキーマ・オブジェクトがローカルである必要があります。自分のスキーマ内にない場合は、ANALYZE ANYシステム権限が必要です。

表またはクラスタの連鎖行をリスト表へ入れる場合、このリスト表が自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、そのリスト表のINSERT権限またはINSERT ANY TABLEシステム権限が必要です。

パーティション表の妥当性チェックを行う場合は、分析したROWIDを入れる表に対するINSERTオブジェクト権限またはINSERT ANY TABLEシステム権限が必要です。

構文

analyze::=

画像の説明

validation_clauses::=

画像の説明

for_clause::=

画像の説明

into_clause::=

画像の説明

compute_statistics_clause::=

画像の説明

estimate_statistics_clause::=

画像の説明

セマンティクス

schema

表、索引またはクラスタが含まれているスキーマを指定します。schemaを指定しない場合、表、索引またはクラスタは自分のスキーマ内にあるとみなされます。

TABLE table

分析する表を指定します。表の統計情報を収集すると、for_clausesを指定していないかぎり、各表の従来索引およびドメイン索引の統計情報も自動的に収集されます。

表を分析すると、すべてのファンクション索引に発生する式について統計情報が収集されます。したがって、表を分析する前に、必ずファンクション索引を作成してください。ファンクション索引の詳細は、「CREATE INDEX」を参照してください。

表を分析すると、LOADINGまたはFAILEDのマークが付いたドメイン索引はすべてスキップされます。

索引構成表の場合、マッピング表が分析され、そのPCT_ACCESSS_DIRECT統計情報も計算されます。これらの統計情報は、マッピング表のローカルROWIDの一部として格納されたと推測されるデータ・ブロック・アドレスの精度を評価します。

表については、次の統計情報が収集されます。アスタリスクが付いた統計情報は、常に厳密に計算されます。表の統計情報(ドメイン索引の状態を含む)は、データ・ディクショナリ・ビューUSER_TABLESALL_TABLESおよびDBA_TABLESのカッコで示す列に表示されます。

表の分析の制限事項:

表の分析には、次の制限事項があります。

PARTITION | SUBPARTITION

統計情報を収集するパーティションまたはサブパーティションを指定します。クラスタの分析時にこの句は使用できません。

tableがコンポジット・パーティションのときにPARTITIONを指定した場合、指定したパーティション内ですべてのサブパーティションが分析されます。

INDEX index

分析する索引を指定します。

索引については、次の統計情報が収集されます。アスタリスクが付いた統計情報は、常に厳密に計算されます。従来索引について統計情報を計算または推定する場合、統計情報は、データ・ディクショナリ・ビューUSER_INDEXESALL_INDEXESおよびDBA_INDEXESのカッコで示す列に表示されます。

ドメイン索引の場合、索引に関連付けられた統計タイプで指定したユーザー定義統計収集ファンクションが、この文によって起動されます(「ASSOCIATE STATISTICS」を参照)。ドメイン索引に関連付けられた統計タイプがない場合、その索引タイプに関連付けられた統計タイプが使用されます。索引またはその索引タイプの統計タイプがない場合、ユーザー定義統計情報は収集されません。ユーザー定義索引統計情報は、データ・ディクショナリ・ビューUSER_USTATSALL_USTATSおよびDBA_USTATSSTATISTICS列に表示されます。


注意:

多数の行が削除されている索引を分析する場合、統計情報操作としてESTIMATEを要求しても、COMPUTE統計情報操作が実行され、全表スキャンが行われることがあります。このような操作は、非常に時間がかかる場合があります。 


索引の分析の制限事項:

IN_PROGRESSまたはFAILEDのマークが付いたドメイン索引は分析できません。

参照:

  • ドメイン索引の詳細は、「CREATE INDEX」を参照してください。

  • データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

  • 「索引の分析例:」

 

CLUSTER cluster

分析するクラスタを指定します。クラスタの統計情報を収集すると、すべてのクラスタ表、およびクラスタ索引を含むすべての索引の統計情報も自動的に収集されます。

索引クラスタとハッシュ・クラスタには、単一クラスタ・キー(AVG_BLOCKS_PER_KEY)が使用するデータ・ブロックの平均数が収集されます。これらの統計情報は、データ・ディクショナリ・ビューALL_CLUSTERSUSER_CLUSTERSおよびDBA_CLUSTERSに表示されます。

参照:

データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』および「クラスタの分析例:」を参照してください。 

VALIDATE REF UPDATE句

VALIDATE REF UPDATEを指定すると、指定された表のREF値の妥当性チェックを行い、各REF内のROWID部分をチェックして、それを真のROWIDと比較できます。誤りがある場合はそれを修正します。この句は、表を分析する場合にのみ使用できます。

表の所有者が参照先オブジェクトに対するSELECTオブジェクト権限を持っていない場合、このオブジェクトは無効とみなされ、NULLに設定されます。その結果、オブジェクトに対して適切な権限を持つユーザーによって発行された問合せであっても、問合せでこれらのREF値を使用することはできません。

SET DANGLING TO NULL

SET DANGLING TO NULLを指定すると、指定した表内のREF値が(範囲が限定されるかどうかにかかわらず)無効なオブジェクトまたは存在しないオブジェクトを指している場合に、REF値がNULLに設定されます。

VALIDATE STRUCTURE

VALIDATE STRUCTUREを指定すると、分析対象オブジェクトの構造を検証できます。COMPUTE STATISTICS句およびESTIMATE STATISTICS句で収集された統計情報はOracleデータベース・オプティマイザで使用されますが、この句で収集された統計情報はOracleデータベース・オプティマイザでは使用されません。

参照:

「表の検証例:」 

オブジェクトの構造に障害がある場合は、エラー・メッセージが戻ります。この場合、オブジェクトを削除して作成しなおす必要があります。

INTO

VALIDATE STRUCTUREINTO句は、パーティション表のみに有効です。正しく照合されなかった行を持つパーティションのROWIDを格納するリスト表を指定します。schemaを指定しない場合、リストは自分のスキーマ内にあるとみなされます。この句自体を指定しない場合、表の名前はINVALID_ROWSになります。この表を作成するために使用するSQLスクリプトはUTLVALID.SQLです。

CASCADE

CASCADEを指定すると、表またはクラスタに関連付けられた索引の構造を検証できます。表を検証するときにこの句を指定すると、その表に定義された索引も検証されます。クラスタを検証するときにこの句を指定した場合、クラスタ表のすべての索引(クラスタ索引を含む)が検証されます。

この句を使用して使用可能な(以前は使用禁止であった)ファンクション索引を検証すると、検証エラーになる場合があります。この場合は、索引を再構築する必要があります。

ONLINE | OFFLINE

ONLINEを指定すると、OracleデータベースがオブジェクトのDML操作中に検証を実行できるようになります。データベースは、並行して操作が行える程度に、実行する検証の量を減らします。


注意:

OFFLINE指定でオブジェクトの構造を検証する場合と同様に、ONLINE指定でオブジェクトの構造を検証する場合、Oracleデータベースは統計情報を収集しません。 


OFFLINEを指定すると、実行する検証の量が最大になります。この設定は、検証中にINSERTUPDATEおよびDELETE文がオブジェクトに平行してアクセスすることを防ぎますが、問合せは許可されます。これはデフォルトです。

ONLINEの制限事項:

ONLINEは、クラスタまたは索引を分析する場合には指定できません。

LIST CHAINED ROWS

LIST CHAINED ROWSを指定すると、分析した表またはクラスタの移行行および連鎖行を識別できます。索引の分析時にこのオプションは使用できません。

INTO句には、移行行および連鎖行をリストする表を指定します。schemaを指定しない場合、連鎖行表は自分のスキーマ内にあるとみなされます。この句自体を指定しない場合、表の名前はCHAINED_ROWSになります。連鎖行表は、ローカル・データベース内にある必要があります。

次のいずれかのスクリプトを使用して、CHAINED_ROWS表を作成できます。

独自の連鎖行表を作成する場合、この2つのスクリプトのいずれかで規定されるフォーマットに従う必要があります。

ユニバーサルROWIDではなく、主キーに基づく索引構成表を分析する場合、索引構成表ごとに別の連鎖行表を作成し、主キー記憶域を確保する必要があります。まず、SQLスクリプトのDBMSIOTC.SQLおよびPRVTIOTC.PLBを使用して、BUILD_CHAIN_ROWS_TABLEプロシージャを定義します。次に、このプロシージャを実行して、索引構成表のIOT_CHAINED_ROWS表を作成します。

参照:

  • これらのスクリプトを使用する場合の互換性については、『Oracle Databaseアップグレード・ガイド』を参照してください。

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

  • 移行行および連鎖行の削除については、『Oracle Database管理者ガイド』を参照してください。

  • 「連鎖行のリスト例:」

 

DELETE STATISTICS

DELETE STATISTICSを指定すると、現在データ・ディクショナリに格納されている、分析したオブジェクトの統計情報を削除できます。Oracleデータベースに統計情報を使用させないようにする場合、この文を使用します。

表を指定してこの句を使用した場合、指定した表に定義されたすべての索引の統計情報も自動的に削除されます。クラスタを指定してこの句を使用した場合、指定したクラスタのすべての表、およびこれらの表のすべての索引(クラスタ索引を含む)の統計情報も自動的に削除されます。

ユーザー定義統計情報ではなく、システム統計情報のみを削除する場合は、SYSTEMを指定します。SYSTEMを指定しないと、オブジェクトのユーザー定義列または索引統計情報が収集された場合、データベースは、統計情報を収集するために使用された情報タイプに指定されている統計削除ファンクションを起動して、ユーザー定義統計情報も削除します。

参照:

「統計情報の削除例:」 

compute_statistics_clause

この句は、下位互換性のためにのみサポートされています。「用途」の「注意」を参照してください。

COMPUTE STATISTICSを指定すると、分析対象のオブジェクトの正確な統計情報を計算してデータ・ディクショナリに格納できます。表を分析した場合、表および列の統計情報が収集されます。

計算された統計情報および推定された統計情報は、分析したオブジェクトにアクセスするSQL文の実行計画を選択するために、Oracleデータベース・オプティマイザによって使用されます。また、これらの統計情報はSQL文を記述するアプリケーション開発者にも役立ちます。

ユーザー定義統計情報ではなく、システム統計情報のみを計算する場合は、SYSTEMを指定します。SYSTEMを指定しないと、システムが生成した統計情報と統計タイプで宣言した収集ファンクションによって生成された統計情報の両方が収集されます。

参照:

  • 統計収集ファンクションの作成の詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。

  • これらの統計情報の使用方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

 

for_clause

for_clauseを使用すると、表または索引全体を分析するか、または特定の列のみを分析するかを指定できます。次に示す句は、この文のANALYZE TABLEにのみ使用できます。

FOR TABLE

FOR TABLEを指定すると、表および列の統計情報ではなく、表のみの統計情報が収集されるように制限できます。

FOR COLUMNS

FOR COLUMNSを指定すると、すべての列および属性の列統計情報ではなく、指定した列およびスカラー・オブジェクト属性のみの列統計情報が収集されるように制限できます。attributeには、オブジェクト内の項目の修飾した列名を指定します。

FOR ALL COLUMNS

FOR ALL COLUMNSを指定すると、すべての列およびスカラー・オブジェクト属性の列統計情報を収集できます。

FOR ALL INDEXED COLUMNS

FOR ALL INDEXED COLUMNSを指定すると、表にあるすべての索引付きの列の列統計情報を収集できます。列の統計情報を収集する場合、列全体に基づいた情報を収集するか、SIZEを指定してヒストグラムを使用します。

Oracleデータベースは、次の列統計情報を収集します。

列の統計情報は、データ・ディクショナリ・ビューUSER_TAB_COLUMNSALL_TAB_COLUMNSおよびDBA_TAB_COLUMNSに表示されます。ヒストグラムは、データ・ディクショナリ・ビューUSER_TAB_HISTOGRAMSDBA_TAB_HISTOGRAMSALL_TAB_HISTOGRAMSUSER_PART_HISTOGRAMSDBA_PART_HISTOGRAMSALL_PART_HISTOGRAMSUSER_SUBPART_HISTOGRAMSDBA_SUBPART_HISTOGRAMSおよびALL_SUBPART_HISTOGRAMSに表示されます。


注意:

USER_TAB_COLUMNSDBA_TAB_COLUMNSおよびALL_TAB_COLUMNSMAXVALUEおよびMINVALUE列は、長さが32バイトです。32バイトより長い列を分析する場合、および列に先行空白が埋め込まれている場合、Oracleデータベースは、先行空白のみを考慮し、予期しない統計情報を戻します。 


ユーザー定義型が列に関連付けられている場合、for_clauseは、その統計タイプを使用してユーザー定義統計情報を収集します。列に関連付けられた統計タイプがない場合、列の型に関連付けられた統計タイプがあるかがチェックされ、ある場合は、その統計タイプが使用されます。列またはそのユーザー定義型に関連付けられた統計タイプがない場合、ユーザー定義統計情報は収集されません。ユーザー定義列統計情報は、データ・ディクショナリ・ビューUSER_USTATSALL_USTATSおよびDBA_USTATSSTATISTICS列に表示されます。

表全体および1つ以上の列の両方の統計情報を収集する場合、まず、表の統計情報を作成してから、次に、列の統計情報を作成してください。このようにしないと、表のみのANALYZEが列ANALYZEで作成されたヒストグラムを上書きしてしまいます。次の文はこの手順の例です。

ANALYZE TABLE emp ESTIMATE STATISTICS;
ANALYZE TABLE emp ESTIMATE STATISTICS 
   FOR ALL COLUMNS;
FOR ALL INDEXES

FOR ALL INDEXESを指定すると、表に関連付けられたすべての索引を分析できます。

FOR ALL LOCAL INDEXES

FOR ALL LOCAL INDEXESを指定すると、すべてのローカル索引パーティションを分析できます。PARTITION句およびINDEXが指定されている場合、キーワードLOCALを指定する必要があります。

SIZE

ヒストグラムのバケットの最大数を指定します。デフォルト値は75で、最小値は1、最大値は254です。

サンプルの行数を超えるバケットを含むヒストグラムは作成されません。また、サンプルに繰返しが非常に多い値が含まれる場合、指定された数のバケットは作成されますが、ALL_TAB_COLUMNSDBA_TAB_COLUMNSおよびUSER_TAB_COLUMNSビューのNUM_BUCKETS列で指定した値は、内部圧縮アルゴリズムのために小さくなる場合があります。

estimate_statistics_clause

この句は、下位互換性のためにのみサポートされています。「用途」の「注意」を参照してください。

ESTIMATE STATISTICSを指定すると、分析対象オブジェクトの統計情報を概算してデータ・ディクショナリに格納できます。

計算された統計情報および推定された統計情報は、分析したオブジェクトにアクセスするSQL文の実行計画を選択するために、Oracleデータベース・オプティマイザによって使用されます。また、これらの統計情報はSQL文を記述するアプリケーション開発者にも役立ちます。

ユーザー定義統計情報ではなく、システム統計情報のみを推定する場合は、SYSTEMを指定します。SYSTEMを指定しないと、システムが生成した統計情報と統計タイプで宣言した収集ファンクションによって生成された統計情報の両方が推定されます。

参照:

統計収集ファンクションの作成の詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。 

for_clause

詳細は、「compute_statistics_clause」の「for_clause」を参照してください。

SAMPLE

統計情報を推定するために、分析対象のオブジェクトからサンプルとして抽出されるデータ量を指定します。このパラメータを指定しない場合、サンプルとして1064行が抽出されます。

サンプルのデフォルト値は、数千行までが表に対して適切な値です。表が大きい場合、より大きい値をSAMPLEに指定します。データの半分以上を指定した場合、すべてのデータが読み取られ、統計情報が計算されます。

多数の行が削除されている索引を分析する場合、統計情報操作としてESTIMATEを要求しても、COMPUTE統計情報操作が実行され、全表スキャンが行われることがあります。このような操作は、非常に時間がかかる場合があります。

validation_clauses

validation_clausesを使用すると、REF値および分析したオブジェクトの構造を検証できます。

統計情報の削除例:

次の文は、サンプル表oe.ordersとデータ・ディクショナリにあるそのすべての索引の統計情報を削除します。

ANALYZE TABLE orders DELETE STATISTICS; 
索引の分析例:

次の文は、サンプル索引oe.inv_product_ixの構造を検証します。

ANALYZE INDEX inv_product_ix VALIDATE STRUCTURE; 
表の検証例:

次の文は、サンプル表hr.employeesおよびそのすべての索引を分析します。

ANALYZE TABLE employees VALIDATE STRUCTURE CASCADE; 

表に対するVALIDATE REF UPDATE句は、指定した表のREF値を検証します。また、それぞれのREFのROWID部分をチェックし、それを真のROWIDと比較します。その結果、ROWIDが誤っていると判断されると、ROWID部分が正しくなるようにREFが更新されます。

次の文は、サンプル表oe.customersREF値を検証します。

ANALYZE TABLE customers VALIDATE REF UPDATE;

次の文は、DML操作を同時に実行することを許可して、サンプル表oe.customersの構造を検証します。

ANALYZE TABLE customers VALIDATE STRUCTURE ONLINE;
クラスタの分析例:

次の文は、personnelクラスタ(「クラスタの作成例:」で作成)、そのすべての表、クラスタ索引を含むすべての索引を分析します。

ANALYZE CLUSTER personnel
    VALIDATE STRUCTURE CASCADE; 
連鎖行のリスト例:

次の文は、orders表のすべての連鎖行についての情報を収集します。

ANALYZE TABLE orders
   LIST CHAINED ROWS INTO chained_rows; 

前述の文では、情報は表chained_rowsに格納されます。次の問合せでその行を検証できます(表に連鎖行が含まれない場合は、行は戻されません)。

SELECT owner_name, table_name, head_rowid, analyze_timestamp 
    FROM chained_rows; 

OWNER_NAME  TABLE_NAME  HEAD_ROWID         ANALYZE_TIMESTAMP
----------  ----------  ------------------ -----------------
OE          ORDERS      AAAAZzAABAAABrXAAA 25-SEP-2000 

ASSOCIATE STATISTICS

用途

ASSOCIATE STATISTICS文を使用すると、統計収集、選択性またはコストに関するファンクションが含まれた統計タイプ(またはデフォルトの統計)を、1つ以上の列、スタンドアロン・ファンクション、パッケージ、型、ドメイン索引または索引タイプに関連付けることができます。

現在のすべての統計タイプの関連付けのリストについては、USER_ASSOCIATIONSデータ・ディクショナリ・ビューを問い合せます。統計情報に関連付けるオブジェクトを分析する場合、USER_USTATSビューでその関連性を問い合せることができます。

参照:

ANALYZEが関連性で使用する優先順位については、「ANALYZE」を参照してください。 

前提条件

この文を発行する場合は、ベース・オブジェクト(表、ファンクション、パッケージ、型、ドメイン索引または索引タイプ)を変更する適切な権限が必要です。さらに、デフォルト統計情報のみを関連付けていないかぎり、統計タイプに対する実行権限が必要です。統計タイプは、すでに定義されている必要があります。

参照:

型の定義の詳細は、「CREATE TYPE」を参照してください。 

構文

associate_statistics::=

画像の説明

column_association::=

画像の説明

function_association::=

画像の説明

using_statistics_type::=

画像の説明

default_cost_clause::=

画像の説明

default_selectivity_clause::=

画像の説明

セマンティクス

column_association

1つ以上の表の列を指定します。schemaを指定しない場合、表は自分のスキーマ内にあるとみなされます。

function_association

1つ以上のスタンドアロン・ファンクション、パッケージ、ユーザー定義データ型、ドメイン索引または索引タイプを指定します。schemaを指定しない場合、オブジェクトは自分のスキーマ内にあるとみなされます。

function_associationの制限事項:

すでに関連性を定義してあるオブジェクトには指定できません。まず、このオブジェクトと統計情報の関連性を取り消す必要があります。

参照:

DISASSOCIATE STATISTICS「統計情報の関連付け例:」 

using_statistics_type

列、ファンクション、パッケージ、型、ドメイン索引または索引タイプと関連付ける統計タイプ(または型のシノニム)を指定します。statistics_typeは作成済である必要があります。

NULLキーワードは、統計情報を列または索引に関連付ける場合のみに有効です。統計タイプをオブジェクト型に関連付ける場合は、そのオブジェクト型の列は、統計タイプを継承します。同様に、統計タイプを索引タイプに関連付ける場合は、索引タイプの索引インスタンスは統計タイプを継承します。列または索引に別の統計タイプを関連付けると、この継承を上書きできます。または、列または索引に統計タイプを関連付けない場合は、using_statistics_type句でNULLを指定します。

統計タイプの指定の制限事項:

ファンクション、パッケージ、型または索引タイプにはNULLを指定できません。

参照:

統計収集ファンクションの作成の詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。 

default_cost_clause

スタンドアロン・ファンクション、パッケージ、型、ドメイン索引または索引タイプのデフォルトのコストを指定します。この句を指定する場合、CPUコスト、I/Oコスト、ネットワーク・コストの順でそれぞれに対して1つの数を指定する必要があります。それぞれのコストは、ファンクションまたはメソッドを1度実行した場合、またはドメイン索引へ1度アクセスした場合の値です。指定できる値は0(ゼロ)以上の整数です。

default_selectivity_clause

スタンドアロン・ファンクション、型、パッケージまたはユーザー定義演算子が指定された述語に対するデフォルトの選択性をパーセントで指定します。default_selectivity_clauseは、0〜100の数値である必要があります。範囲外のものは無視されます。

default_selectivity_clause句の制限事項:

DEFAULT SELECTIVITYは、ドメイン索引または索引タイプに指定できません。

参照:

「デフォルト・コストの指定例:」 

統計情報の関連付け例:

次の文は、スタンドアロン・パッケージemp_mgmt「パッケージの作成例:」で作成)への関連性を作成します。

ASSOCIATE STATISTICS WITH PACKAGES emp_mgmt DEFAULT SELECTIVITY 10;
デフォルト・コストの指定例:

次の文は、ドメイン索引salary_index「拡張索引作成機能の使用方法」で作成)を使用して任意の述語を実装した場合、常にCPUコストは100、I/Oコストは5、およびネットワーク・コストは0になるように指定します。

ASSOCIATE STATISTICS WITH INDEXES salary_index DEFAULT COST (100,5,0);

オプティマイザは、コスト・ファンクションをコールするかわりに、これらのデフォルト・コストを使用します。


AUDIT

用途

AUDIT文を使用すると、次の操作を実行できます。

前提条件

SQL文の実行を監査するには、AUDIT SYSTEMシステム権限が必要です。

スキーマ・オブジェクト操作を監査するためには、監査対象のオブジェクトが自分のスキーマにある必要があります。自分のスキーマにない場合は、AUDIT ANYシステム権限が必要です。また、監査の対象とするオブジェクトがディレクトリ・オブジェクトの場合は、それが自分で作成したものであっても、AUDIT ANYシステム権限が必要です。

監査結果を収集するには、初期化パラメータAUDIT_TRAILDBに設定する必要があります。監査オプションは、監査が使用可能であるかどうかにかかわらず指定できます。ただし、監査を有効にしないと、監査レコードは作成されません。

参照:

AUDIT_TRAILパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 

構文

audit::=

画像の説明

sql_statement_clause::=

画像の説明

auditing_by_clause::=

画像の説明

schema_object_clause::=

画像の説明

auditing_on_clause::=

画像の説明

セマンティクス

sql_statement_clause

sql_statement_clauseを使用すると、SQL文を監査できます。

statement_option

文オプションを指定すると、特定のSQL文を監査できます。

監査されるたびに、次の情報を持つ監査レコードが生成されます。

監査レコードは、監査証跡に書き込まれます。監査証跡とは、監査レコードが入っているデータベースの表です。データ・ディクショナリ・ビューを問い合せて監査証跡を調べることによって、データベース・アクティビティを再検討できます。

参照:

  • 文オプションおよびそれによって監査されるSQL文のリストは、表13-1および表13-2を参照してください。

  • 監査証跡データ・ディクショナリ・ビューのリストの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

  • 「ロールに関連するSQL文の監査例:」

 

system_privilege

システム権限を指定すると、特定のシステム権限を与えられたSQL文を監査できます。

多くの個々のシステム権限を指定するのではなく、ロールCONNECTRESOURCEおよびDBAを指定できます。これは、そのロールに付与されているすべてのシステム権限を監査することと同じです。

Oracleデータベースには、システム権限と文オプションをまとめて指定するための、次の2つのショートカットが用意されています。

ALL

ALLを指定すると、表13-1のすべての文オプションを監査できます。ただし、表13-2の追加文オプションは監査しません。

ALL PRIVILEGES

ALL PRIVILEGESを指定すると、システム権限を監査できます。


注意:

ロールまたはショートカットでなく、監査に個々のシステム権限および文オプションを指定することをお薦めします。ロールおよびショートカットに含まれるシステム権限および文オプションは、リリースごとに異なり、Oracleデータベースの今後のバージョンでサポートされない場合があります。 


参照:

 

auditing_by_clause

auditing_by_clauseを指定すると、特定のユーザーが発行するSQL文のみを監査できます。この句を指定しない場合、すべてのユーザー文が監査されます。

BY user

この句を使用すると、特定のユーザーによって発行されたSQL文のみを監査するように制限できます。

BY proxy

この句を使用すると、特定のプロキシによって発行されたSQL文のみを監査するように制限できます。

参照:

プロキシおよびデータベースの使用については、『Oracle Database概要』を参照してください。 

schema_object_clause

schema_object_clauseを使用すると、スキーマ・オブジェクトの操作を監査できます。

object_option

監査の対象とする操作を指定します。表13-3に、各オブジェクト・オプションとそれが適用されるオプションのタイプを示します。それぞれのオブジェクト・オプションには、監査の対象となるSQL文を指定します。たとえば、ALTERオプションを指定して表の監査を選択した場合、その表に対して発行されるALTER TABLE文がすべて監査されます。また、SELECTオプションを指定して順序の監査を選択した場合、その順序の値を使用するすべての文が監査されます。

ALL

ALLをショートカットに指定することは、オブジェクト・タイプに適用できるオプションをすべて指定することと同じです。

auditing_on_clause

auditing_on_clauseを使用すると、監査する特定のスキーマ・オブジェクトを指定できます。

参照:

「表の問合せの監査例:」「表の挿入および更新の監査例:」、および「順序の操作の監査例:」を参照してください。 

schema

監査の対象として選択されたオブジェクトが定義されているスキーマを指定します。schemaを指定しない場合、オブジェクトは自分のスキーマ内に定義されているものとみなされます。

object

監査するオブジェクトの名前を指定します。オブジェクトは、表、ビュー、順序、ストアド・プロシージャ、ストアド・ファンクション、ストアド・パッケージ、マテリアライズド・ビューまたはライブラリのいずれかである必要があります。

表、ビュー、順序、プロシージャ、ストアド・ファンクション、パッケージ、マテリアライズド・ビューまたはユーザー定義型については、それぞれシノニムも指定できます。

ON DEFAULT

ON DEFAULTを指定すると、それ以降に作成したオブジェクトのデフォルト・オブジェクト・オプションとして使用する、指定のオブジェクト・オプションを作成できます。デフォルトの監査オプションが確立されると、その後作成されるオブジェクトに対して、これらのオプションが自動的に適用され、監査が行われます。ビューに対するデフォルト監査オプションは、常に、そのビューの実表に対する監査オプションの論理和となります。ALL_DEF_AUDIT_OPTSデータ・ディクショナリ・ビューを問い合せることによって、現在のデフォルト監査オプションを表示できます。

デフォルト監査オプションを変更した場合でも、以前作成したオブジェクトの監査オプションはそのまま残ります。AUDIT文のON句にオブジェクトを指定した場合のみ、既存のオブジェクトの監査オプションを変更できます。

参照:

「デフォルト監査オプションの設定例:」 

ON DIRECTORY directory_name

ON DIRECTORY句を使用すると、監査するディレクトリ名を指定できます。

NETWORK

この句を使用すると、ネットワーク・レイヤーの内部的な障害を検出できます。

参照:

ネットワーク監査の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 

BY SESSION

BY SESSIONを指定すると、同一セッションの同一スキーマ・オブジェクトで発行された同じ種類のSQL文すべて、および実行された同じ種類の操作について、1つのレコードを書き込むことができます。

Oracleデータベースは、オペレーティング・システム監査ファイルに書き込むことはできますが、そのファイルを読み込んで、すでに特定の操作のエントリが書き込まれたかどうかを検出することはできません。したがって、監査証跡にオペレーティング・システム・ファイルを使用している場合(AUDIT_FILE_DEST初期化パラメータをOSに設定してある場合)、BY SESSIONを指定しても、データベースは複数のレコードを監査証跡ファイルに書き込む場合があります。

BY ACCESS

BY ACCESSを指定すると、監査された各文および操作について、1つのレコードを書き込むことができます。

データ定義言語(DDL)文を監査する文オプションまたはシステム権限を指定した場合、BY SESSION句とBY ACCESS句のどちらを指定しても、データベースは、自動的に監査を行います。

DDL文以外のSQL文を監査する文オプションとシステム権限には、BY SESSIONBY ACCESSのどちらでも指定できます。デフォルトはBY SESSIONです。

WHENEVER [NOT] SUCCESSFUL

WHENEVER SUCCESSFULを指定すると、正常に実行されたSQL文および操作のみを監査できます。

失敗またはエラーが発生したSQL文および操作のみを監査する場合は、WHENEVER NOT SUCCESSFULを指定します。

この句を指定しない場合、処理結果にかかわらず監査が行われます。

監査オプションの表

表13-1    データベース・オブジェクトの文監査オプション 
文オプション  SQL文と操作 

ALTER SYSTEM  

ALTER SYSTEM  

CLUSTER 

CREATE CLUSTER

ALTER CLUSTER

DROP CLUSTER

TRUNCATE CLUSTER 

CONTEXT 

CREATE CONTEXT

DROP CONTEXT 

DATABASE LINK 

CREATE DATABASE LINK

DROP DATABASE LINK 

DIMENSION 

CREATE DIMENSION

ALTER DIMENSION

DROP DIMENSION 

DIRECTORY 

CREATE DIRECTORY

DROP DIRECTORY 

INDEX 

CREATE INDEX

ALTER INDEX

ANALYZE INDEX

DROP INDEX 

MATERIALIZED VIEW  

CREATE MATERIALIZED VIEW

ALTER MATERIALIZED VIEW

DROP MATERIALIZED VIEW 

NOT EXISTS 

指定したオブジェクトが存在しない場合に失敗するすべてのSQL文 

PROCEDURE(表の後の「注意」を参照) 

CREATE FUNCTION

CREATE LIBRARY

CREATE PACKAGE

CREATE PACKAGE BODY

CREATE PROCEDURE

DROP FUNCTION

DROP LIBRARY

DROP PACKAGE

DROP PROCEDURE 

PROFILE 

CREATE PROFILE

ALTER PROFILE

DROP PROFILE 

PUBLIC DATABASE LINK 

CREATE PUBLIC DATABASE LINK

DROP PUBLIC DATABASE LINK 

PUBLIC SYNONYM 

CREATE PUBLIC SYNONYM

DROP PUBLIC SYNONYM 

ROLE 

CREATE ROLE

ALTER ROLE

DROP ROLE

SET ROLE 

ROLLBACK SEGMENT 

CREATE ROLLBACK SEGMENT

ALTER ROLLBACK SEGMENT

DROP ROLLBACK SEGMENT 

SEQUENCE 

CREATE SEQUENCE

DROP SEQUENCE 

SESSION 

Logons 

SYNONYM 

CREATE SYNONYM

DROP SYNONYM 

SYSTEM AUDIT 

AUDIT sql_statements

NOAUDIT sql_statements 

SYSTEM GRANT 

GRANT system_privileges_and_roles

REVOKE system_privileges_and_roles 

TABLE 

CREATE TABLE

DROP TABLE

TRUNCATE TABLE 

TABLESPACE 

CREATE TABLESPACE

ALTER TABLESPACE

DROP TABLESPACE 

TRIGGER 

CREATE TRIGGER

ALTER TRIGGER

   ENABLEおよびDISABLE句付き

DROP TRIGGER

ALTER TABLE

   ENABLE ALL TRIGGERS句付き

   DISABLE ALL TRIGGERS 句付き 

TYPE 

CREATE TYPE

CREATE TYPE BODY

ALTER TYPE

DROP TYPE

DROP TYPE BODY 

USER 

CREATE USER

ALTER USER

DROP USER 

VIEW 

CREATE VIEW

DROP VIEW 


注意:

Javaスキーマ・オブジェクト(ソース、クラスおよびリソース)は、SQL文の監査ではプロシージャと同じであるとみなされます。 


表13-2    SQL文のその他の文監査オプション 
文オプション  SQL文と操作 

ALTER SEQUENCE 

ALTER SEQUENCE 

ALTER TABLE 

ALTER TABLE 

COMMENT TABLE 

COMMENT ON TABLE table, view, materialized view

COMMENT ON COLUMN table.column, view.column, materialized view.column 

DELETE TABLE 

DELETE FROM table, view 

EXECUTE PROCEDURE 

CALL

プロシージャやファンクションの実行、またはパッケージ内の変数、ライブラリまたはカーソルへのアクセス。 

GRANT DIRECTORY 

GRANT privilege ON directory

REVOKE privilege ON directory 

GRANT PROCEDURE 

GRANT privilege ON procedure, function, package

REVOKE privilege ON procedure, function, package 

GRANT SEQUENCE 

GRANT privilege ON sequence

REVOKE privilege ON sequence 

GRANT TABLE 

GRANT privilege ON table, view, materialized view

REVOKE privilege ON table, view, materialized view 

GRANT TYPE 

GRANT privilege ON TYPE

REVOKE privilege ON TYPE 

INSERT TABLE 

INSERT INTO table, view 

LOCK TABLE 

LOCK TABLE table, view 

SELECT SEQUENCE 

sequence.CURRVALまたはsequence.NEXTVALを含む文 

SELECT TABLE 

SELECT FROM table, view, materialized view 

UPDATE TABLE 

UPDATE table, view 

表13-3    オブジェクト監査オプション 
オブジェクト・オプション    ビュー  順序  プロシージャ、ファンクション、パッケージ (注意1)  マテリアライズド・ビュー (注意2)  ディレクトリ  ライブラリ  オブジェクト型  コンテキスト 

ALTER  

-- 

-- 

-- 

-- 

-- 

AUDIT  

-- 

COMMENT  

-- 

-- 

-- 

-- 

-- 

-- 

DELETE  

-- 

-- 

-- 

-- 

-- 

-- 

EXECUTE  

-- 

-- 

-- 

-- 

-- 

-- 

-- 

FLASHBACK
(注意3) 

-- 

-- 

-- 

-- 

-- 

-- 

-- 

GRANT  

-- 

INDEX  

-- 

-- 

-- 

-- 

-- 

-- 

-- 

INSERT  

-- 

-- 

-- 

-- 

-- 

-- 

LOCK  

-- 

-- 

-- 

-- 

-- 

-- 

READ  

-- 

-- 

-- 

-- 

-- 

-- 

-- 

-- 

RENAME  

-- 

 

-- 

-- 

-- 

-- 

-- 

SELECT  

-- 

-- 

-- 

-- 

-- 

UPDATE  

-- 

-- 

-- 

-- 

-- 

-- 

注意1: Javaスキーマ・オブジェクト(ソース、クラスおよびリソース)は、監査オプションではプロシージャ、ファンクションおよびパッケージと同じであるとみなされます。

注意2: INSERTUPDATEおよびDELETE操作の監査は、更新可能なマテリアライズド・ビューに対してのみ可能です。

注意3: FLASHBACK監査オブジェクト・オプションは、フラッシュバック問合せに対してのみ適用されます。

ロールに関連するSQL文の監査例:

次の文は、ロールの作成、変更、削除または設定を行う各SQL文が正常に終了したかどうかにかかわらず、それらの文について監査を行います。

AUDIT ROLE; 

次の文は、ロールの作成、変更、削除または設定を行う、正常に終了した各SQL文ごとに監査を行います。

AUDIT ROLE
    WHENEVER SUCCESSFUL; 

次の文は、Oracleデータベース・エラーが発生したCREATE ROLE文、ALTER ROLE文、DROP ROLE文またはSET ROLE文について監査を行います。

AUDIT ROLE
    WHENEVER NOT SUCCESSFUL; 
問合せおよび更新を行うSQL文の監査例:

次の文は、表の問合せまたは更新を実行する文について監査を行います。

AUDIT SELECT TABLE, UPDATE TABLE; 

次の文は、ユーザーhrおよびoeが発行する、表やビューの問合せまたは更新を実行する文について監査を行います。

AUDIT SELECT TABLE, UPDATE TABLE
    BY hr, oe; 
削除の監査例:

次の文は、DELETE ANY TABLEシステム権限で発行された文について監査を行います。

AUDIT DELETE ANY TABLE; 
ディレクトリに関連する文の監査例:

次の文は、CREATE ANY DIRECTORYシステム権限で発行された文について監査を行います。

AUDIT CREATE ANY DIRECTORY;

CREATE ANY DIRECTORYシステム権限を使用しないCREATE DIRECTORY(およびDROP DIRECTORY)文を監査する場合は、次の文を発行します。

AUDIT DIRECTORY;

次の文は、bfile_dirディレクトリからファイルを読み込む各文について監査を行います。

AUDIT READ ON DIRECTORY bfile_dir;
表の問合せの監査例:

次の文は、スキーマhr内のemployees表を問い合せる各SQL文について監査を行います。

AUDIT SELECT
    ON hr.employees; 

次の文は、スキーマhr内のemployees表を問い合せて正常に終了した各文について監査を行います。

AUDIT SELECT 
    ON hr.employees
    WHENEVER SUCCESSFUL; 

次の文は、スキーマhr内のemployees表を問い合せてOracleデータベース・エラーが発生したSQL文について監査を行います。

AUDIT SELECT 
    ON hr.employees
    WHENEVER NOT SUCCESSFUL; 
表の挿入および更新の監査例:

次の文は、スキーマoe内のcustomers表に対して行を挿入または更新するそれぞれの文について監査を行います。

AUDIT INSERT, UPDATE
    ON oe.customers; 
順序の操作の監査例:

次の文は、スキーマhr内のemployees_seq順序に対する操作を行うすべての文について監査を行います。

AUDIT ALL
    ON hr.employees_seq; 

この文では、順序に対して操作を行う次の文について監査を行うため、ALLショートカットを使用しています。

デフォルト監査オプションの設定例:

次の文は、以降に作成されるオブジェクトのデフォルト監査オプションを指定します。

AUDIT ALTER, GRANT, INSERT, UPDATE, DELETE
    ON DEFAULT; 

以降に作成されるオブジェクトについては、監査機能が使用可能な場合、指定したオプションによって自動的に次の監査が行われます。


CALL

用途

CALL文を使用すると、SQL内からルーチン(スタンドアロン・プロシージャ、スタンドアロン・ファンクション、あるいは型またはパッケージ内で定義されたプロシージャまたはファンクション)を実行できます。


注意:

「ファンクション式」に指定されているユーザー定義ファンクション式の制限は、CALL文にも適用されます。 


参照:

これらのルーチンの作成の詳細は、『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。 

前提条件

スタンドアロン・ルーチン、またはルーチンが定義されている型またはパッケージに対するEXECUTE権限が必要です。

構文

call::=

画像の説明

routine_clause::=

画像の説明

object_access_expression::=

画像の説明

セマンティクス

ルーチンは2つの方法で実行できます。routine_clauseを使用してルーチン自体を名前でコールするか、またはobject_access_expressionを使用して式の型の中でルーチンをコールします。

schema

スタンドアロン・ルーチン(または、ルーチンが含まれている型またはパッケージ)が存在するスキーマを指定します。schemaを指定しない場合、ルーチンは自分のスキーマ内にあるとみなされます。

typeまたはpackage

ルーチンが定義されている型またはパッケージを指定します。

routine_clause

コールするファンクション名またはプロシージャ名、またはファンクションまたはプロシージャに変換されるシノニムを指定します。

型のメンバー・ファンクションまたはメンバー・プロシージャをコールする場合、最初の引数(SELF)がNULLのIN OUTの場合は、エラーが戻されます。SELFがNULLのINの場合には、NULLが戻されます。どちらの場合も、ファンクションまたはプロシージャはコールされません。

ファンクションの制限事項:

ルーチンがファンクションの場合、INTO句は必須です。

@dblink

分散データベース・システムで、スタンドアロン・ルーチンが含まれているデータベース、またはルーチンが含まれているパッケージまたはファンクションの名前を指定します。dblinkを指定しない場合、ローカル・データベースを指定したとみなされます。

参照:

直接ルーチンをコールする例については、「プロシージャのコール例:」を参照してください。 

object_access_expression

型コンストラクタ、バインド変数などのオブジェクト型の式を使用している場合は、この形式の式を使用して、型内で定義されたルーチンをコールできます。このコンテキストでは、object_access_expressionはメソッドのコールに制限されます。

参照:

この形式の式の構文およびセマンティクスについては、「オブジェクト・アクセス式」を参照してください。オブジェクト型の式を使用してルーチンをコールする例については、「オブジェクト型の式を使用したプロシージャのコール例:」を参照してください。 

argument

ルーチンに引数が必要な場合に、ルーチンの1つ以上の引数を指定します。

ルーチンへの引数の適用の制限事項:

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

INTO :host_variable

INTO句は、ファンクションのコールにのみ適用されます。ファンクションの戻り値を格納するホスト変数を指定します。

:indicator_variable

ホスト変数の値または状態を指定します。

参照:

ホスト変数および標識変数の詳細は、『Pro*C/C++プログラマーズ・ガイド』を参照してください。 

プロシージャのコール例:

次の文は、remove_deptプロシージャ(「パッケージ本体の作成例:」で作成)を使用して、娯楽部門(「順序値の挿入例:」で作成)を削除します。

CALL emp_mgmt.remove_dept(162); 
オブジェクト型の式を使用したプロシージャのコール例:

次の例では、CALL文のオブジェクト型の式を使用したプロシージャのコール方法を示します。この例では、サンプルの注文入力スキーマOEwarehouse_typオブジェクト型を使用しています。

ALTER TYPE warehouse_typ
      ADD MEMBER FUNCTION ret_name
      RETURN VARCHAR2
      CASCADE;

CREATE OR REPLACE TYPE BODY warehouse_typ
      AS MEMBER FUNCTION ret_name
      RETURN VARCHAR2
      IS
         BEGIN
            RETURN self.warehouse_name;
         END;
      END;
/
VARIABLE x VARCHAR2(25);

CALL warehouse_typ(456, 'Warehouse 456', 2236).ret_name()
   INTO :x;

PRINT x;
X
--------------------------------
Warehouse 456

次の例では、外部ファンクションを使用したプロシージャのコール方法を示します。

CREATE OR REPLACE FUNCTION ret_warehouse_typ(x warehouse_typ) 
  RETURN warehouse_typ
  IS
    BEGIN
      RETURN x;
    END;
/
CALL ret_warehouse_typ(warehouse_typ(234, 'Warehouse 234',
   2235)).ret_name()
   INTO :x;

PRINT x;

X
--------------------------------
Warehouse 234

COMMENT

用途

COMMENTを使用すると、表、ビュー、マテリアライズド・ビューまたは列に関するコメントを、データ・ディクショナリに追加できます。

データベースからコメントを削除する場合、空の文字列' 'を設定します。

参照:

  • SQL文およびスキーマ・オブジェクトへのコメントの関連付けの詳細は、「コメント」を参照してください。

  • コメントを表示するデータ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

 

前提条件

コメントを追加するオブジェクトが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、次の条件を満たす必要があります。

構文

comment::=

画像の説明

セマンティクス

TABLE句

コメントする表またはマテリアライズド・ビューの名前とスキーマを指定します。schemaを指定しない場合、この表およびマテリアライズド・ビューは自分のスキーマ内にあるとみなされます。


注意:

以前のリリースでは、この句を使用してマテリアライズド・ビューにコメントを作成できました。今回のリリースでは、マテリアライズド・ビューに、COMMENT ON MATERIALIZED VIEW句を使用する必要があります。 


COLUMN句

コメントする表、ビューまたはマテリアライズド・ビューの列の名前を指定します。schemaを指定しない場合、この表、ビューおよびマテリアライズド・ビューは自分のスキーマ内にあるとみなされます。

データ・ディクショナリ・ビューUSER_TAB_COMMENTSDBA_TAB_COMMENTSALL_TAB_COMMENTSUSER_COL_COMMENTSDBA_COL_COMMENTSまたはALL_COL_COMMENTSを問い合せることによって、特定の表または列に関するコメントを表示できます。

OPERATOR句

コメントする演算子の名前を指定します。schemaを指定しない場合、その演算子は自分のスキーマ内にあるとみなされます。

データ・ディクショナリ・ビューUSER_OPERATOR_COMMENTSDBA_OPERATOR_COMMENTSまたはALL_OPERATOR_COMMENTSを問い合せることによって、特定の演算子に関するコメントを表示できます。

INDEXTYPE句

コメントする索引タイプの名前を指定します。schemaを指定しない場合、この索引タイプは自分のスキーマ内にあるとみなされます。

データ・ディクショナリ・ビューUSER_INDEXTYPE_COMMENTSDBA_INDEXTYPE_COMMENTSまたはALL_INDEXTYPE_COMMENTSを問い合せることによって、特定の索引タイプに関するコメントを表示できます。

MATERIALIZED VIEW句

コメントするマテリアライズド・ビューの名前を指定します。schemaを指定しない場合、このマテリアライズド・ビューは自分のスキーマ内にあるとみなされます。

データ・ディクショナリ・ビューUSER_MVIEW_COMMENTSDBA_MVIEW_COMMENTSまたはALL_MVIEW_COMMENTSを問い合せることによって、特定のマテリアライズド・ビューに関するコメントを表示できます。

IS 'string'

コメントのテキストを指定します。'string'の構文の詳細は、「テキスト・リテラル」を参照してください。

コメントの作成例:

次の文は、employees表のjob_id列にコメントを挿入します。

COMMENT ON COLUMN employees.job_id 
   IS 'abbreviated job title';

次の文は、データベースからこのコメントを削除します。

COMMENT ON COLUMN employees.job_id IS ' '; 

COMMIT

用途

COMMIT文を使用すると、現行のトランザクションを終了し、トランザクションで実行したすべての変更を確定できます。トランザクションとは、Oracleデータベースが1つの単位として扱う一連のSQL文です。また、この文によって、トランザクション内のセーブポイントがすべて消去され、トランザクション・ロックが解除されます。

トランザクションをコミットするまでは、次の操作が可能です。

Oracleデータベースでは、データ定義言語(DDL)文の前後で暗黙的にCOMMITが発行されます。

この文を使用して、次の操作を実行することもできます。

Oracleデータベースとの接続を切断する前に、最新のトランザクションを含むアプリケーション・プログラムのすべてのトランザクションを、COMMIT文またはROLLBACK文を使用して明示的に終了することをお薦めします。トランザクションを明示的にコミットしなかった場合にプログラムが異常終了すると、コミットされていない最後のトランザクションは、自動的にロールバックされます。

OracleユーティリティおよびOracleのツール製品が正常に終了すると、現行のトランザクションがコミットされます。Oracleプリコンパイラ・プログラムが正常に終了した場合は、トランザクションはコミットされず、現行のトランザクションがOracleデータベースによってロールバックされます。

参照:

  • トランザクションの詳細は、『Oracle Database概要』を参照してください。

  • トランザクションの特性の指定の詳細は、「SET TRANSACTION」を参照してください。

 

前提条件

現行のトランザクションをコミットするために、必要な権限は特にありません。

自分がコミットしたインダウト分散トランザクションを手動でコミットする場合は、FORCE TRANSACTIONシステム権限が必要です。別のユーザーがコミットしたインダウト分散トランザクションを手動でコミットする場合は、FORCE ANY TRANSACTIONシステム権限が必要です。

構文

commit::=

画像の説明

セマンティクス

COMMIT

COMMITキーワードに続く句は、すべてオプションです。COMMITのみを指定した場合、デフォルトはCOMMIT WORK WRITE IMMEDIATE WAITです。

WORK

標準SQLに準拠するために、WORKキーワードがサポートされています。COMMIT文とCOMMIT WORK文は同じです。

COMMENT句

現行のトランザクションに関するコメントを指定します。'text'は引用符で囲まれた最大255バイトのリテラルで、分散トランザクションの状態が不明(インダウト)になった場合に、そのトランザクションIDとともに、データ・ディクショナリ・ビューDBA_2PC_PENDINGに格納されます。このコメントは、分散トランザクションの障害を診断するときに役立ちます。

参照:

SQL文へのコメントの追加の詳細は、「COMMENT」を参照してください。 

WRITE句

この句を使用すると、コミット操作で生成されるREDO情報をREDOログに書き込む優先度を指定できます。この句によって、待機時間を減らしREDOログへのI/Oを待機しないようにすることで、パフォーマンスを向上させることができます。この句は、レスポンス時間に対する要件が厳しい次のような環境下でのレスポンス時間を改善するために使用します。

IMMEDIATE

IMMEDIATEパラメータを指定すると、I/Oが開始され、その結果、LGWRプロセスにメッセージが送られて、トランザクションをコミットするためのREDOがすぐに書き込まれます。IMMEDIATEBATCHも指定しない場合、IMMEDIATEがデフォルトになります。

BATCH

BATCHパラメータを指定すると、REDOがREDOログにバッファされます。I/Oは開始されません。

WAIT

WAITパラメータを指定すると、対応するREDOがオンラインREDOログで永続的になるまでコミットが戻りません。WAITNOWAITも指定しない場合、WAITがデフォルトになります。

NOWAIT

NOWAITパラメータを指定すると、REDOがREDOログ内で永続的になる前にコミットが戻ります。

参照:

非同期のコミットの詳細は、『Oracle Databaseアプリケーション開発者ガイド-基礎編』を参照してください。 

FORCE句

分散データベース・システムでは、FORCE句によって手動でインダウト分散トランザクションをコミットできます。このトランザクションは、ローカル・トランザクションIDまたはグローバル・トランザクションIDを含む'string'で識別されます。このトランザクションのIDを確認する場合、データ・ディクショナリ・ビューDBA_2PC_PENDINGを問い合せます。また、integerを指定することによって、このトランザクションにシステム変更番号(SCN)を具体的に割り当てることもできます。integerを指定しない場合、このトランザクションは現行のSCNを使用してコミットされます。


注意:

FORCE句を指定してCOMMIT文を発行した場合、指定したトランザクションのみがコミットされます。この文は、現行のトランザクションには影響しません。 


参照:

前述の項目の詳細は、『Oracle Database Heterogeneous Connectivity管理者ガイド』を参照してください。 

挿入のコミット例:

次の文は、hr.regions表に行を挿入してこの変更をコミットします。

INSERT INTO regions VALUES (5, 'Antarctica'); 

COMMIT WORK;
 

同じ挿入操作をコミットし、データベースに対して、ディスクI/Oを開始せずに変更をREDOログにバッファするよう指示するには、次のCOMMIT文を使用します。

COMMIT WRITE BATCH;
COMMITのコメント例:

次の文は、現行のトランザクションをコミットして、コメントを関連付けます。

COMMIT 
    COMMENT 'In-doubt transaction Code 36, Call (415) 555-2637'; 

ネットワーク障害またはマシン障害によって分散トランザクションを適切にコミットできない場合、トランザクションIDとともにデータ・ディクショナリにコメントが格納されます。そのコメントには、障害が発生したアプリケーション部分が示されており、トランザクションがコミットされたデータベースの管理者に連絡する情報が提供されています。

強制インダウト・トランザクションの例:

次の文は、インダウト分散トランザクションを手動でコミットします。

COMMIT FORCE '22.57.53'; 

戻る 次へ
Oracle
Copyright © 2006 Oracle Corporation.

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