trabajo con el servidor sql, pero debo migrar a una aplicación con Oracle DB. para rastrear mis consultas de aplicaciones, en el servidor Sql uso la maravillosa herramienta Profiler. ¿Hay algo equivalente para Oracle?Oracle: ¿hay alguna herramienta para rastrear consultas, como Profiler para el servidor sql?
Respuesta
Oracle, junto con otras bases de datos, analiza una consulta determinada para crear un plan de ejecución. Este plan es la forma más eficiente de recuperar los datos.
Oracle proporciona la instrucción 'explain plan
' que analiza la consulta pero no la ejecuta, en su lugar rellena una tabla especial que puede consultar (la tabla de plan).
La sintaxis (versión simple, hay otras opciones, tales como para marcar las filas de la tabla plan con un ID especial, o utilizar una tabla de plan diferente) es:
explain plan for <sql query>
El análisis de los datos queda para otra pregunta, o su investigación adicional.
Este es un documento de Oracle explica cómo rastrear las consultas SQL, incluyendo un par de herramientas (Traza de SQL y TKPROF)
Puede utilizar el Oracle Enterprise Manager para supervisar las sesiones activas, con la consulta que se está ejecutando, su plan de ejecución, bloqueos, algunas estadísticas e incluso una barra de progreso para las tareas más largas.
Ver: http://download.oracle.com/docs/cd/B10501_01/em.920/a96674/db_admin.htm#1013955
Ir a -> Instancia sesiones y ver la ficha SQL de cada sesión.
Hay otras formas. encargado de la empresa sólo pone con colores bonitos lo que ya está disponible en vistas especiales, como las documentadas aquí: http://www.oracle.com/pls/db92/db92.catalog_views?remark=homepage
Y, por supuesto, también puede utilizar Explicar PLAN, herramienta de rastreo y un montón de otras formas de instrumentalización. Hay algunos informes en el administrador de la empresa para las consultas SQL más costosas. También puede buscar consultas recientes guardadas en el caché.
probar esto (que también es gratis): http://www.aboves.com/Statement_Tracer_for_Oracle.exe
Traté de usar este software pero no vi forma de configurar la cadena de conexión. ¿Alguien puede ayudar? –
¡Impresionante! Funciona de maravilla ... pero hasta donde puedo decir solo en el localhost de la base de datos. – vmassuchetto
Este es un enlace a un ejecutable, ¡mucho, no, no! –
Trate PL/SQL Developer cuenta con una interfaz GUI fácil de usuario agradable para el generador de perfiles. Es muy bueno probar la prueba. Juro por esta herramienta cuando trabajo en bases de datos Oracle.
http://www.allroundautomations.com/plsqldev.html?gclid=CM6pz8e04p0CFQjyDAodNXqPDw
En vista de que he acaba de votar una pregunta reciente como duplicado y apunta en esta dirección. . .
Un par más - en SQL * Plus - SET AUTOTRACE ON - proporcionará un plan de explicación y estadísticas para cada instrucción ejecutada.
TOAD también permite el perfil del lado del cliente.
La desventaja de ambos es que solo le informan el plan de ejecución de la declaración, pero no cómo llegó el optimizador a ese plan, para eso necesitará un rastreo del servidor de nivel inferior.
Otra información importante para comprender son las instantáneas de Statspack: son una buena forma de ver el rendimiento de la base de datos en general. El plan de explicación, etc., es bueno para encontrar sentencias SQL individuales que son cuellos de botella. Statspack es bueno para identificar el hecho de que su problema es que una declaración simple con un buen plan de ejecución se llama 1 millón de veces en un minuto.
hay una herramienta comercial FlexTracer que se puede utilizar para rastrear Oracle consultas SQL
la captura es capturar todas ejecutar SQL entre dos puntos en el tiempo. Al igual que la forma en que SQL Server también lo hace.
Existen situaciones en las que es útil capturar el SQL que un usuario en particular está ejecutando en la base de datos. Por lo general, usted simplemente habilitaría el rastreo de sesión para ese usuario, pero hay dos problemas potenciales con ese enfoque.
- La primera es que muchas aplicaciones basadas en web mantienen un conjunto de conexiones de bases de datos persistentes que se comparten entre varios usuarios.
- La segunda es que algunas aplicaciones se conectan, ejecutan SQL y se desconectan muy rápido, dificultando el rastreo de sesión (por supuesto, podría utilizar un desencadenador de inicio de sesión para habilitar el rastreo de sesión en este caso).
Una solución rápida y sucia al problema es capturar todas las sentencias SQL que se ejecutan entre dos puntos en el tiempo.
El siguiente procedimiento creará dos tablas, cada una con una instantánea de la base de datos en un punto particular. Las tablas se consultarán para generar una lista de todos los SQL ejecutados durante ese período.
Si es posible, debe hacerlo en un sistema de desarrollo silencioso; de lo contrario, corre el riesgo de recuperar demasiados datos.
Tome la primera instantánea Ejecutar el siguiente código SQL para crear la primera instantánea:
create table sql_exec_before as select executions,hash_value from v$sqlarea /
conseguir que el usuario realice su tarea dentro de la aplicación.
Tome la segunda instantánea.
create table sql_exec_after as select executions, hash_value from v$sqlarea /
Comprobar los resultados Ahora que ha capturado el SQL es el momento para consultar los resultados.
Esta primera consulta mostrará una lista de todos los valores hash de consulta que se han ejecutado:
select aft.hash_value
from sql_exec_after aft
left outer join sql_exec_before bef
on aft.hash_value = bef.hash_value
where aft.executions > bef.executions
or bef.executions is null;
/
Ésta se mostrará el hash y el propio SQL: páginas conjunto 999 líneas 100 de quiebre en hash_value
select hash_value, sql_text
from v$sqltext
where hash_value in (
select aft.hash_value
from sql_exec_after aft
left outer join sql_exec_before bef
on aft.hash_value = bef.hash_value
where aft.executions > bef.executions
or bef.executions is null;
)
order by
hash_value, piece
/
5.Poner en orden No se olvide de eliminar las tablas de instantánea una vez que haya terminado:
drop table sql_exec_before
/
drop table sql_exec_after
/
Gracias por los scripts completos que demuestran la técnica. –
alter system set timed_statistics=true
--o
alter session set timed_statistics=true --if want to trace your own session
- debe ser lo suficientemente grande:
select value from v$parameter p
where name='max_dump_file_size'
- Descubra el número de serie y el número de serie de la sesión que le interesan:
select sid, serial# from v$session
where ...your_search_params...
--usted puede iniciar el seguimiento con 10.046 evento, el cuarto parámetro establece el nivel de rastreo (12 es el mayor):
begin
sys.dbms_system.set_ev(sid, serial#, 10046, 12, '');
end;
--turn de rastreo con la configuración de nivel cero:
begin
sys.dbms_system.set_ev(sid, serial#, 10046, 0, '');
end;
/* niveles posibles: 0 - apagado 1 - nivel mínimo. Al igual conjunto SQL_TRACE = true 4 - se añaden los valores de las variables se unen al archivo 8 rastrear - esperas se añaden 12 - se unen ambos valores de las variables y esperar acontecimientos se añaden */
--same si desea realizar un seguimiento su propia sesión con el nivel más grande:
alter session set events '10046 trace name context forever, level 12';
--turn apagado:
alter session set events '10046 trace name context off';
--file con información de rastreo en bruto se ubicarán: 01
(*. TRC)select value from v$parameter p
where name='user_dump_dest'
--name del archivo contendrá SPID:
select p.spid from v$session s, v$process p
where s.paddr=p.addr
and ...your_search_params...
--también se puede establecer el nombre por sí mismo:
alter session set tracefile_identifier='UniqueString';
--finally, TKPROF
utilizar para hacer más legible archivo de seguimiento:
C:\ORACLE\admin\databaseSID\udump>
C:\ORACLE\admin\databaseSID\udump>tkprof my_trace_file.trc output=my_file.prf
TKPROF: Release 9.2.0.1.0 - Production on Wed Sep 22 18:05:00 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
C:\ORACLE\admin\databaseSID\udump>
--a estado de vista de tra ce archivo de uso:
set serveroutput on size 30000;
declare
ALevel binary_integer;
begin
SYS.DBMS_SYSTEM.Read_Ev(10046, ALevel);
if ALevel = 0 then
DBMS_OUTPUT.Put_Line('sql_trace is off');
else
DBMS_OUTPUT.Put_Line('sql_trace is on');
end if;
end;
/
sólo tipo de traducirse http://www.sql.ru/faq/faq_topic.aspx?fid=389 original es más completa, pero de todos modos esto es mejor que lo que otros publican en mi humilde opinión
¡Mucho más útil que las otras respuestas! – Andomar
He encontrado una solución fácil
Paso 1. conectarse a DB con un usuario administrador usando PLSQL o sqldeveloper o cualquier otra interfaz de consulta
Paso2. ejecutar el script a continuación; en la S.sql_text columna, verá las consultas ejecutadas
SELECT
S.LAST_ACTIVE_TIME,
S.MODULE,
S.SQL_FULLTEXT,
S.SQL_PROFILE,
S.EXECUTIONS,
S.LAST_LOAD_TIME,
S.PARSING_USER_ID,
S.SERVICE
FROM
SYS.V_$SQL S,
SYS.ALL_USERS U
WHERE
S.PARSING_USER_ID=U.USER_ID
AND UPPER(U.USERNAME) IN ('oracle user name here')
ORDER BY TO_DATE(S.LAST_LOAD_TIME, 'YYYY-MM-DD/HH24:MI:SS') desc;
El único problema con esto es que no puedo encontrar una manera de mostrar los valores de los parámetros de entrada (para llamadas de función), pero al menos podemos ver lo que es ejecutó Oracle y el orden sin usar una herramienta específica.
Puede agregar S.SQL_FULLTEXT si el texto de la consulta tiene más de 1000 caracteres, ya que SQL_TEXT se corta en ese punto. – Tridus
No debe realizar su pedido antes del LAST_ACTIVE_TIME porque es VARCHAR2 (19). Use esto en su lugar: ORDER BY TO_DATE (S.LAST_LOAD_TIME, 'YYYY-MM-DD/HH24: MI: SS') desc –
Es un Herramientas para Oracle para capturar las consultas ejecutadas similares al Analizador de SQL Server. Herramienta indispensable para el mantenimiento de aplicaciones que utilizan este servidor de base de datos.
se puede descargar desde el sitio oficial iacosoft.com
Hola, ¿necesita una licencia especial de ORACLE para usar este software? Sé que Oracle le permite interconectar ciertas tablas/vistas, y si lo hace y no tiene una licencia, le cobran extra. – sergiu
Hola, tienes que pagar para consultar v $ sqlarea? Puedo ingresar al enlace que dice ¿qué? – pio
excelente gracias hombre !!! Me ahorras mucho trabajo –
Al parecer no hay pequeña utilidad simple barato que ayudaría a realizar esta tarea. Sin embargo, hay 101 maneras de hacerlo de una manera complicada e inconveniente.
El artículo siguiente describe varios. Probablemente haya docenas más ... http://www.petefinnigan.com/ramblings/how_to_set_trace.htm
- 1. ¿hay alguna herramienta de optimización de consultas para SQL Server?
- 2. ¿Cómo rastrear todas las consultas enviadas a Oracle DB desde el servidor de la aplicación?
- 3. ¿Hay alguna herramienta como mecanizar para Android?
- 4. ¿Hay alguna herramienta como doxygen para XSLT?
- 5. ¿Hay alguna herramienta para ver las consultas ejecutadas en la base de datos?
- 6. ¿Tiene pycharm alguna herramienta para rastrear el tiempo?
- 7. Profiler para Sql CE
- 8. ¿Hay un SQL Server Profiler para SQL Server Express?
- 9. Herramienta para rastrear #include dependencias
- 10. Herramienta de comparación SQL para Oracle?
- 11. ¿Hay alguna herramienta de desarrollador como FireBug para IE?
- 12. ¿Hay alguna herramienta como Reflector para bibliotecas COM?
- 13. ¿Hay alguna manera de obtener trazas de pila .net en Sql Profiler, o una herramienta similar?
- 14. ¿Hay alguna forma de filtrar un rastreo de SQL Profiler?
- 15. ¿Hay alguna herramienta para actualizar Javadoc automáticamente?
- 16. ¿Hay alguna herramienta para el perfil de las consultas de sqlite?
- 17. Android: ¿hay alguna herramienta para crear un código nativo?
- 18. ¿Hay alguna herramienta estándar para estimar el requisito de espacio en disco para SQL Server?
- 19. ¿Hay alguna biblioteca para representar consultas SQL como objetos en código Java?
- 20. ¿Hay alguna buena herramienta para examinar Makefiles?
- 21. ¿Hay alguna herramienta ORM para Haskell?
- 22. ¿Herramienta para ejecutar consultas JPQL?
- 23. ¿Hay alguna herramienta para inspeccionar/depurar los contenidos de las cachés de Oracle Coherence?
- 24. ¿Hay un equivalente de Profiler para MySql?
- 25. ¿Hay alguna herramienta para comentar el código de JavaScript?
- 26. ¿Hay alguna herramienta para reformatear el código de C#?
- 27. ¿Hay alguna herramienta para ordenar automáticamente el código F #
- 28. Cualquier herramienta para exportar el Oracle DB completo como scripts SQL
- 29. ¿Hay alguna biblioteca ActiveResource como para Java?
- 30. ¿Hay alguna herramienta para convertir VML heredado a SVG?
¿Por qué aceptaste una respuesta incorrecta? Explicar el plan NO hace lo que hace el generador de perfiles. No tiene ninguna relación. – Jasmine
¿Encontró la mejor herramienta como 'sql server profiler'? ¿Qué estás usando ahora? –
He escrito un libro sobre el rastreo de aplicaciones Oracle. Está disponible en formato PDF en http://method-r.com. –