説明
このステートメントは、既存のアウトラインに新しいバインディングルール(実行計画のバインディングやレート制限ルールを含む)を追加するために使用します。SQL_TEXTで作成されたアウトラインの変更のみをサポートしています。
構文
ALTER OUTLINE outline_name ADD stmt [ TO target_stmt ]
パラメータの説明
パラメータ |
説明 |
|---|---|
| outline_name | 変更対象のアウトライン名を指定します。 |
| stmt | 一般的には、ヒントと元のパラメータを含むDMLステートメントです。 |
| TO target_stmt | TO target_stmt を指定しない場合、データベースが受け付けるSQLがパラメータ化された後、stmt からヒントのパラメータ化テキストを除いたものと同じであれば、そのSQLを stmt のヒントでバインドして実行計画を生成します。ヒントを含むステートメントに対して固定計画を適用したい場合は、元のSQLを指定するために TO target_stmt が必要です。 注意 target_stmt を使用する場合、stmt と target_stmt はヒントを除去した後、完全に一致している必要があります。 |
例
ALTER OUTLINEを使用してレート制限ルールを追加します。obclient> ALTER OUTLINE ol_1 ADD SELECT /*+max_concurrent(1)*/ * FROM t1 WHERE c1 = 1 and c2 = ?; obclient> ALTER OUTLINE ol_1 ADD SELECT /*+max_concurrent(1)*/ * FROM t1 WHERE c1 = ? and c2 = 1;ALTER OUTLINEを使用して実行計画を追加します。obclient> CREATE OUTLINE ol_2 ON SELECT /*+max_concurrent(1)*/ * FROM t1,t2 WHERE t1.c1 = 1; obclient> ALTER OUTLINE ol_2 ADD SELECT /*+use_nl(t2)*/ * FROM t1,t2 WHERE t1.c1 = 1;
注意事項
同一の
outline_nameに対して、実行計画は1つのみ指定できます。CREATE OUTLINEステートメントで実行計画を指定した場合、後からALTER OUTLINEを実行して追加することはできません。CREATE OUTLINEと同様に、ALTER OUTLINEの際にもレート制限ルールと実行計画を同時に指定することはできません。