loose_sql_trace_type が DEMAND に設定されている場合、dbms_sql.delete_trace は SQL トレースの追跡対象から SQL ステートメントを削除します。
構文
dbms_sql.delete_trace('<schema>', '<query>')パラメーター
| パラメーター | 説明 |
|---|---|
schema | スキーマの名前。 |
query | 実行される SQL ステートメント。 |
仕組み
dbms_sql.delete_trace を呼び出すと、次の操作が実行されます。
SQL ステートメント内のリテラル定数をワイルドカード (
?) に変換し、SQL テンプレートを生成します。mysql.sql_sharingテーブルから、そのテンプレートに一致するすべての行を削除します。そのテンプレートに一致する今後の SQL ステートメントが SQL トレースによって記録されないようにします。
注意事項
プライマリノードと読み取り専用ノード
このストアドプロシージャは、実行されるノードによって動作が異なります。
プライマリノード: 削除は永続的です。一致する行はプライマリノード上の
mysql.sql_sharingから削除され、その変更はすべての読み取り専用ノードに同期されます。読み取り専用ノード:削除は実行されたノードにのみ適用され、永続化されません。クラスターエンドポイント経由でデータベースにアクセスすると、テンプレート化された SQL ステートメントは自動的にプライマリノードにルーティングされます。
例
SQL トレースの追跡対象から SQL ステートメントを削除します。
CALL dbms_sql.delete_trace('test', 'select * from t where c1 > 1 and c1 < 10');呼び出しが成功した場合、出力は返されません。
このストアドプロシージャは、ステートメントから次のテンプレートを作成し、mysql.sql_sharing から一致するすべての行を削除します。
SELECT * FROM `t` WHERE `c1` > ? AND `c1` < ?