ヘッダーをスキップ

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

E05750-03
目次
目次
索引
索引

戻る 次へ

13 SQL文: ALTER TRIGGER〜COMMIT

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


ALTER TRIGGER

用途

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

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


注意:

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


参照:

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

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

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

 

前提条件

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

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

参照:

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

構文

alter_trigger::=

画像の説明

trigger_compile_clause: この句の構文の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。)

セマンティクス

schema

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

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列のコメントおよび書式設定が変更される場合があります。

trigger_compile_clause

この句の構文とセマンティクスの詳細およびトリガーの作成とコンパイルの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。


ALTER TYPE

用途

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

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

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

前提条件

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

構文

alter_type::=

画像の説明

alter_type_clauses: この句の構文の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。)

セマンティクス

schema

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

type

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

alter_type_clauses

この句の構文とセマンティクスの詳細およびオブジェクト型の作成とコンパイルの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。


ALTER USER

用途

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

前提条件

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

自動ストレージ管理インスタンス・パスワード・ファイルで自分以外のユーザーのパスワードを変更するには、AS SYSASMとして認証されている必要があります。

構文

alter_user::=

画像の説明

size_clause::=を参照)

proxy_clause::=

画像の説明

db_user_proxy::=

画像の説明

セマンティクス

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


注意:

ユーザー名およびパスワードは、ご使用のプラットフォームに応じて、ASCIIまたはEBCDIC文字のみでエンコードすることをお薦めします。 


参照:

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

IDENTIFIED句

BY password

BY passwordを指定すると、ユーザーの新しいパスワードを指定できます。パスワードは、大/小文字が区別されます。この後に、ユーザーをデータベースに接続するために使用されるCONNECT文字列は、このALTER USER文で使用されているものと同じ文字(大文字、小文字または混在)を使用してパスワードを指定する必要があります。パスワードには、データベース・キャラクタ・セットから、シングルバイト文字、マルチバイト文字または両方を含めることができます。


注意:

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


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

自動ストレージ管理クラスタで、この句を使用して、ユーザーのパスワードを、現行のノードの自動ストレージ管理インスタンスに対してローカルなパスワード・ファイルで変更できます。REPLACE old_password句を使用せずにIDENTIFIED BY passwordを指定するには、AS SYSASMとして認証されている必要があります。AS SYSASMとして認証されていない場合は、REPLACE old_passwordを指定して自分のパスワードのみを変更できます。

以前のパスワードをREPLACE句に指定した場合でも、自分以外の既存のパスワードを変更している場合は、以前のパスワードはチェックされません。

参照:

複雑なパスワードの検証機能については、『Oracle Databaseセキュリティ・ガイド』を参照してください。 

GLOBALLY

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

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

EXTERNALLY

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

参照:

グローバルまたは外部で識別されるユーザーの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。また、「ユーザー識別の変更例:」および「ユーザー認証の変更例:」も参照してください。 

DEFAULT TABLESPACE句

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

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

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

TEMPORARY TABLESPACE句

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

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

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

参照:

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

DEFAULT ROLE句

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

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

参照:

「CREATE ROLE」 

proxy_clause

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

GRANT | REVOKE

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

CONNECT THROUGH句

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

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セキュリティ概要』を参照してください。 

ユーザー識別の変更例:

次の文は、ユーザー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を使用して、制約のビューを定義、変更または削除することもできます。

この文を使用して既存のビュー定義を変更することはできません。また、ビューの実表に対するDDL変更によってビューが無効になる場合、この文を使用して無効なビューをコンパイルすることはできません。このような場合は、CREATE VIEWOR REPLACEキーワードを指定して使用し、ビューを再定義する必要があります。

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

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

参照:

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

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

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

 

前提条件

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

構文

alter_view::=

画像の説明

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

セマンティクス

schema

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

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::=

画像の説明

partition_extension_clause::=

画像の説明

validation_clauses::=

画像の説明

into_clause::=

画像の説明

セマンティクス

schema

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

TABLE table

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

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

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

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

表の分析の制限事項:

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

partition_extension_clause

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

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を指定すると、分析対象オブジェクトの構造を検証できます。この句で収集された統計情報はOracle Databaseオプティマイザでは使用されません。

参照:

「表の検証例:」 

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

INTO

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

CASCADE

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

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

ONLINE | OFFLINE

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


注意:

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


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パッケージを参照してください。

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

 

DELETE STATISTICS

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

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

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

参照:

「統計情報の削除例:」 

validation_clauses

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

参照:

表、索引、クラスタおよびマテリアライズド・ビューの検証の詳細は、『Oracle Database管理者ガイド』を参照してください。 

統計情報の削除例:

次の文は、サンプル表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
    ORDER BY owner_name, table_name, head_rowid, analyze_timestamp; 

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::=

画像の説明

storage_table_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は、ドメイン索引または索引タイプに指定できません。

参照:

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

storage_table_clause

この句は、INDEXTYPEの統計に対してのみ有効です。

統計情報の関連付け例:

次の文は、スタンドアロン・パッケージemp_mgmtへの関連性を作成します。このパッケージを作成する例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。

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_TRAILをデフォルトの設定であるNONE以外の値に設定して、監査を有効にする必要があります。監査オプションは、監査が使用可能であるかどうかにかかわらず指定できます。ただし、監査を有効にしないと、監査レコードは作成されません。

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


注意:

AUDIT ANYシステム権限によって、権限受領者は、SYSスキーマを除く任意のスキーマ内の任意のオブジェクトを監査できます。O7_DICTIONARY_ACCESSIBILITY初期化パラメータをTRUEに設定することによって、そのような権限受領者がSYSスキーマ内のオブジェクトを監査できるようにすることができます。セキュリティ上の理由のため、この設定の使用には注意が必要です。 


参照:

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

構文

audit::=

画像の説明

audit_operation_clause::=

画像の説明

auditing_by_clause::=

画像の説明

audit_schema_object_clause::=

画像の説明

auditing_on_clause::=

画像の説明

セマンティクス

audit_operation_clause

audit_operation_clauseを使用すると、操作の影響を受けるスキーマ・オブジェクトに関係なく、指定された操作を監査できます。

sql_statement_shortcut

ショートカットを指定すると、特定のSQL文の使用を監査できます。表13-1および表13-2に、ショートカットおよびそれらが監査するSQL文を示します。


注意:

SQL文ショートカットとシステム権限を混同しないでください。次に例を示します。

  • AUDIT USER文は、SQLのCREATE USERALTER USERおよびDROP USER文のすべてを監査するUSERショートカットを指定します。この場合の監査には、ユーザーがALTER USER文で自分のパスワードを変更する操作が含まれています。

  • AUDIT ALTER USER文は、そのシステム権限を使用するすべての操作を監査するALTER USERシステム権限を指定します。この場合の監査には、ユーザーが自分のパスワードを変更する操作は含まれません。これは、その操作には、ALTER USERシステム権限は必要ないためです。

 

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

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

参照:

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

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

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

 

system_privilege

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


注意:

ANYキーワードを含むシステム権限の使用の監査は、ANYキーワードを含まない同じ権限の使用の監査より限定的です。次に例を示します。

  • AUDIT CREATE PROCEDUREは、CREATE PROCEDUREまたはCREATE ANY PROCEDURE権限を使用して発行された文を監査します。

  • AUDIT CREATE ANY PROCEDUREは、CREATE ANY PROCEDURE権限を使用して発行された文のみを監査します。

 

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

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

ALL

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

ALL PRIVILEGES

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


注意:

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


参照:

 

auditing_by_clause

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

BY user

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

BY proxy

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

参照:

プロキシおよびデータベースの使用については、『Oracle Databaseセキュリティ・ガイド』を参照してください。 

audit_schema_object_clause

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

sql_operation

監査するSQL操作を指定します。表13-3に、監査できるオブジェクトのタイプ、およびオブジェクトごとに監査できるSQL文を示します。たとえば、ALTER操作を指定して表の監査を選択した場合、その表に対して発行されるALTER TABLE文がすべて監査されます。また、SELECT操作を指定して順序の監査を選択した場合、その順序の値を使用するすべての文が監査されます。

ALL

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

auditing_on_clause

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

参照:

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

schema

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

object

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

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

ON DEFAULT

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

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

参照:

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

ON DIRECTORY

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

ON MINING MODEL

ON MINING MODEL句を使用すると、監査するマイニング・モデル名を指定できます。

NETWORK

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

参照:

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

BY SESSION

以前のリリースでは、BY SESSIONを指定すると、データベースによって、同一セッションの同一スキーマ・オブジェクトで実行された同じ種類のすべてのSQL文または操作に対して1つのレコードが書き込まれました。このリリースのOracle Databaseからは、BY SESSIONおよびBY ACCESSを指定すると、監査された文および操作ごとに1つの監査レコードが書き込まれます。BY ACCESSと比較すると、BY SESSIONでは引き続き異なる値が監査証跡に移入されます。いずれの句も指定しない場合は、BY SESSIONがデフォルトとなります。


注意:

この変更は、データ定義言語(DDL)文ではなくSQL文を監査する文オプションおよびシステム権限にのみ適用されます。DDL文を監査するすべてのSQL文およびシステム権限は、BY ACCESSで常に監査されています。 


BY ACCESS

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


注意:

データ定義言語(DDL)文を監査するSQL文ショートカットまたはシステム権限を指定した場合は、常にアクセスごとに監査されます。それ以外のすべての場合、データベースはBY SESSIONまたはBY ACCESS指定に従います。 


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

WHENEVER [NOT] SUCCESSFUL

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

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

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

監査オプションの表

表13-1    監査のSQL文ショートカット 
SQL文ショートカット  監査済の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文 

OUTLINE 

CREATE OUTLINE

ALTER OUTLINE

DROP OUTLINE 

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

注意:

  • AUDIT USERは、これら3つのSQL文を監査します。AUDIT ALTER USERを使用すると、ALTER USERシステム権限を必要とする文を監査できます。

  • AUDIT ALTER USER文は、自分のパスワードを変更するユーザーを監査しません。これは、このアクティビティにはALTER USERシステム権限は必要ではないためです。

 

VIEW 

CREATE VIEW

DROP VIEW 


注意:

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


表13-2    監査のその他のSQL文ショートカット 
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    スキーマ・オブジェクト監査オプション 
オブジェクト  SQL操作 

 

ALTERAUDITCOMMENTDELETEFLASHBACK(注意3)GRANTINDEXINSERTLOCKRENAMESELECTUPDATE 

ビュー 

AUDITCOMMENTDELETEFLASHBACK(注意3)GRANTINSERTLOCKRENAMESELECTUPDATE 

順序 

ALTERAUDITGRANTSELECT 

プロシージャ、ファンクション、パッケージ(注意1) 

AUDITEXECUTEGRANT 

マテリアライズド・ビュー(注意2) 

ALTERAUDITCOMMENTDELETEINDEXINSERTLOCKSELECTUPDATE 

マイニング・モデル 

AUDITCOMMENTGRANTRENAMESELECT 

ディレクトリ 

AUDITGRANTREAD 

ライブラリ 

EXECUTEGRANT 

オブジェクト型 

ALTERAUDITGRANT 

コンテキスト 

AUDITGRANT 

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

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

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

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

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

AUDIT ROLE; 

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

AUDIT ROLE
    WHENEVER SUCCESSFUL; 

次の文は、Oracle Databaseエラーが発生した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 Databaseエラーが発生した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を、位置表記法、名前表記法および混合表記法で表記できます。たとえば、次の表記はすべて正しい表記です。

CALL my_procedure(arg1 => 3, arg2 => 4) 

CALL my_procedure(3, 4) 

CALL my_procedure(3, arg2 => 4) 
ルーチンへの引数の適用の制限事項:

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

INTO :host_variable

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

:indicator_variable

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

参照:

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

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

次の文は、remove_deptプロシージャを使用して、娯楽部門(「順序値の挿入例:」で作成)を削除します。このプロシージャを作成する例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。

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を問い合せることによって、特定のマテリアライズド・ビューに関するコメントを表示できます。

MINING MODEL

コメントするマイニング・モデルの名前を指定します。この句を指定するには、COMMENT ANY MINING MODELシステム権限が必要です。

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 Databaseが1つの単位として扱う一連のSQL文です。また、この文によって、トランザクション内のセーブポイントがすべて消去され、トランザクション・ロックが解除されます。

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

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

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

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

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

参照:

  • トランザクションの詳細は、『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句

この句は、下位互換性を保つためにのみサポートされています。コミット・コメントのかわりに名前付きトランザクションを使用することをお薦めします。

参照:

名前付きトランザクションの詳細は、「SET TRANSACTION」および『Oracle Database概要』を参照してください。 

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

参照:

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

WRITE句

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

WAIT | NOWAITおよびIMMEDIATE | BATCH句を任意の順序で指定できます。


注意:

この句を省略したときのコミット操作はCOMMIT_WRITE初期化パラメータで制御されます(パラメータが設定されている場合)。パラメータのデフォルト値は、この句のデフォルトと同じです。したがって、パラメータが設定されていないときにこの句を省略すると、コミット・レコードがディスクに書き込まれてから制御がユーザーに戻ります。 


WAIT | NOWAIT

この句を使用すると、制御をいつユーザーに戻すかを指定できます。

この句を指定しない場合、トランザクションはWAITの動作でコミットされます。

IMMEDIATE | BATCH

この句を使用すると、REDOをいつログに書き込むかを指定できます。

この句を指定しない場合、トランザクションはIMMEDIATEの動作でコミットされます。

参照:

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

FORCE句

この句を使用すると、インダウト分散トランザクションまたは破損トランザクションを手動でコミットできます。

挿入のコミット例:

次の文は、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とともにデータ・ディクショナリにコメントが格納されます。そのコメントには、障害が発生したアプリケーション部分が示されており、トランザクションがコミットされたデータベースの管理者に連絡する情報が提供されています。

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

次の文は、不確定なインダウト分散トランザクションを手動でコミットします。V$CORRUPT_XID_LISTデータ・ディクショナリ・ビューを問い合せて、破損トランザクションのトランザクションIDを検索します。V$CORRUPT_XID_LISTを表示し、この文を発行するには、DBA権限が必要です。

COMMIT FORCE '22.57.53'; 

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

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