Analyze table ...

Solo
13 de Abril del 2005
Buenas foro,

Estoy investigando la manera de hacer un analyze table sobre las tablas generadas por una consulta, pero solo veo la manera de ir llamandolas una a una. ¿Os habeis pegado alguno con esto?. ¿La unica solucion es usar pl/sql?
Gracias

fran
13 de Abril del 2005
pero que dices??

Solo
13 de Abril del 2005
eeeehhh....digo..... ¿esto es el foro de oracle,no?

pongamos la sentencia:

Analyze table <table_name> compute statistics;

Con ello actualizo el dba_tab_modifications de las vistas del diccionario de datos para poder monitorizar los cambios de dicha tabla.
Estaba buscando la manera de analizar mas de una tabla a la vez, y no tener que ejecutar esa sentencia 150.000 veces.

Quiza me expliqué mal en mi primer mensaje, y quiza sigo sin explicarme bien, pero tu respuesta me resulta simplemente fuera de lugar.

jc3000
13 de Abril del 2005
Create un script en el que saques el ANALYZE TABLE....... concatenado con el nombre de la tabla + COMPUTE STATISTICS.
Manda la salida a un spool y ejecutas ese spool, todo eso lo puedes hacer en el mismo script de tal manera que hagas un :
START C:ANALIZAR.SQL y te haga todo.
Te lo pondría yo, ya que utilizo un script muy similar para otra cosa, pero prefiero que te estrujes tu la cabeza en lugar de dartelo hecho ya que se trata de que aprendas.
Como tu dices, puedes utlizar tb un pl-sql usando un cursor sobre dba_tables , montar la cadena y hacer el execute inmediate.
Hazlo como te sea mas facil.
Si te lias lo dices y te monto yo el cursor ó la query, pero es bastante facil.
Bye

NOTA : Para tu próximo post procura poner los maximos datos posibles, así la peña entenderá a la primera tu problema.

Salu2

Solo
13 de Abril del 2005
Muchas gracias... si, releyendo mi primer mensaje me veo bastante abstraido...

Ya tengo el script hecho, era el siguiente paso a probar pero queria evitar hacer otro mas.

El motivo es que esta query va a ser ejecutada por otro script que va a llamar a mas querys a la vez, es decir, que queria no liar la madeja ni dejar todo dependiendo de scripts que se anidan.

Ahora dejare el tema... pero me quedara la duda de por donde inicialmente investigué, que era la sentencia analyze table. en un primer momento la logica de sql y mi falta de cafe por la mañana hizo que probase esto:

analyze table (select
table_name from dba_tables
where monitoring='yes') compute statistics;

Estaba buscando informacion mas por ese hilo....

P.D: A veces me gusta preguntar de mas sencillo a mas complejo. Hay gente que con sus respuestas, aunque no oriente, da ideas :D, quiero decir que me gusta dejar cosas ambiguas para recopilar todo que pueda.
Aunque esta vez pequé de ambiguo.

Muchas gracias

paquito
13 de Abril del 2005
échale un vistazo al paquete dbms_stats.gather...... verás que hay un mundo de posibilidades, incluso lanzándolas una vez ellas solas vuelven a lanzarse cuando varíen un tanto por ciento sus filas.....