dbms_sql.delete_trace elimina una instrucción SQL del seguimiento de SQL Trace cuando loose_sql_trace_type está establecido en DEMAND.
Sintaxis
dbms_sql.delete_trace('<schema>', '<query>')
Parámetros
|
Parámetro |
Descripción |
|
|
El nombre del esquema. |
|
|
La instrucción SQL que se está ejecutando. |
Funcionamiento
Cuando llama a dbms_sql.delete_trace, se ejecutan las siguientes acciones:
Convierte las constantes literales de la instrucción SQL en comodines (
?), lo que genera una plantilla de SQL.Elimina todas las filas de
mysql.sql_sharingque coinciden con la plantilla.Evita que SQL Trace registre cualquier instrucción SQL futura que coincida con la plantilla.
Notas de uso
Nodo primario frente a nodos de solo lectura
El procedimiento almacenado se comporta de manera distinta según el nodo donde se ejecute:
Nodo primario: la eliminación es permanente. Las filas coincidentes se eliminan de mysql.sql_sharing en el nodo primario y el cambio se sincroniza con todos los nodos de solo lectura.
Nodos de solo lectura: la eliminación solo aplica al nodo donde se ejecuta y no se conserva. Si accede a una base de datos mediante un endpoint de clúster, las instrucciones SQL basadas en plantillas se enrutan automáticamente al nodo primario.
Ejemplo
Elimine una instrucción SQL del seguimiento de SQL Trace:
CALL dbms_sql.delete_trace('test', 'select * from t where c1 > 1 and c1 < 10');
Si la llamada se completa correctamente, no se devuelve ninguna salida.
El procedimiento almacenado crea la siguiente plantilla a partir de la instrucción y elimina todas las filas coincidentes de mysql.sql_sharing:
SELECT * FROM `t` WHERE `c1` > ? AND `c1` < ?