tag:blogger.com,1999:blog-4063906708258638821.post7698628241114973502..comments2022-12-27T09:54:27.671-03:00Comments on El Blog de Leonardo Horikian: Necesitás ayuda sobre un tema en específico? Postealo AQUI !!!Leonardo Horikianhttp://www.blogger.com/profile/15192319884550377591noreply@blogger.comBlogger77125tag:blogger.com,1999:blog-4063906708258638821.post-11340270337292758822012-02-19T22:44:20.057-03:002012-02-19T22:44:20.057-03:00Hola leonardo por motivos de trabajo no he podido ...Hola leonardo por motivos de trabajo no he podido podido acceder a windows a dejar que siga ejecutandose el procedimiento.. a penas lo haga te cuento... <br /><br />Muchas gracias por tu ayuda..desdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-18959639328301378582012-02-16T19:15:45.196-03:002012-02-16T19:15:45.196-03:00Hola desdelau,
A diferencia del comando DELETE, e...Hola desdelau,<br /><br />A diferencia del comando DELETE, el TRUNCATE limpia la HWM (High Water Mark) de la tabla.<br /><br />Si queres podes ejecutar el comando DELETE en este caso para evitar el error que te esta mostrando.<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-76369547559217052862012-02-16T19:08:11.021-03:002012-02-16T19:08:11.021-03:00Hola leonardo me aparece este error...
TRUNCATE T...Hola leonardo me aparece este error...<br /><br />TRUNCATE TABLE ingresos<br /> *<br />ERROR en línea 1:<br />ORA-02266: claves únicas/primarias en la tabla referidas por claves ajenas<br />activadas.<br /><br />porque no eliminamos con delete ?desdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-54457099613829562572012-02-16T19:00:10.888-03:002012-02-16T19:00:10.888-03:00Hola desdelau,
Ejecuta el siguiente comando para ...Hola desdelau,<br /><br />Ejecuta el siguiente comando para borrar todos los registros de la tabla INGRESOS y luego vuelve a ejecutar el proceso.<br /><br />TRUNCATE TABLE ingresos;<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-83775002944642242422012-02-16T18:05:40.668-03:002012-02-16T18:05:40.668-03:00Hola Leonardo, una pregunta : elimino los datos de...Hola Leonardo, una pregunta : elimino los datos de la tabla ingresos para volver a ejecutar el procedimiento de llenado ? gracias...desdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-91546349454568181062012-02-16T17:05:37.693-03:002012-02-16T17:05:37.693-03:00Hola desdelau,
Por favor, ejecuta el proceso y me...Hola desdelau,<br /><br />Por favor, ejecuta el proceso y me comentas cómo te fue.<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-17790019526663669872012-02-16T17:02:49.640-03:002012-02-16T17:02:49.640-03:00pyHola leonardo, mira aca esta el reslultado de la...pyHola leonardo, mira aca esta el reslultado de la ejecución de las dos sentencias...<br /><br />http://www.mediafire.com/?r2wydg8y2nfy86a<br /><br />Gracias...desdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-80299411028484424932012-02-16T01:47:17.249-03:002012-02-16T01:47:17.249-03:00Hola desdelau,
Ejecuta las siguientes sentencias:...Hola desdelau,<br /><br />Ejecuta las siguientes sentencias:<br /><br />DROP INDEX USUARIOS_IDEN_ID_UQ;<br /><br />CREATE UNIQUE INDEX USUARIOS_ID_IDEN_UQ ON USUARIOS(ID, IDENTIFICACION);<br /><br />EXEC DBMS_STATS.GATHER_TABLE_STATS(UPPER('daniel'),'USUARIOS',cascade => true, estimate_percent => dbms_stats.auto_sample_size, no_invalidate => false);<br /><br />Abre una sesión de SQL*Plus, ejecuta las siguientes sentencias y enviame el resultado:<br /><br />select /*+ gather_plan_statistics */ identificacion from usuarios where id = 1;<br /><br />select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-38016151780292832722012-02-15T21:53:31.672-03:002012-02-15T21:53:31.672-03:00Hola Leonardo, que pena no se que paso ando un poc...Hola Leonardo, que pena no se que paso ando un poco loco jejeje mira aca esta http://www.mediafire.com/i/?p6b3si9842529bn gracias... <br /><br />Saludos :)desdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-64162768942981721862012-02-15T17:31:25.914-03:002012-02-15T17:31:25.914-03:00Hola desdelau,
No adjuntaste ningún archivo en tu...Hola desdelau,<br /><br />No adjuntaste ningún archivo en tu último post.<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-90435305127008873122012-02-15T16:39:24.970-03:002012-02-15T16:39:24.970-03:00Hola leonardo mira aca esta la ejecucion de las do...Hola leonardo mira aca esta la ejecucion de las dos sentencias... que pena y muchas gracias...desdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-49559079751808265282012-02-15T14:55:05.741-03:002012-02-15T14:55:05.741-03:00Hola desdelau,
El plan de ejecución que me envias...Hola desdelau,<br /><br />El plan de ejecución que me enviaste no es sobre la consulta de la tabla USUARIOS.<br /><br />Pregunta: Ejecutaste las dos sentencias que te envié una detras de la otra? <br />Podes volver a hacerlo?<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-80396479922261664662012-02-15T14:41:07.102-03:002012-02-15T14:41:07.102-03:00Hola leonardo que pena mira aca esta la imagen
ht...Hola leonardo que pena mira aca esta la imagen <br />http://www.mediafire.com/i/?8imypm2dmbo8y9pdesdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-82685485795183583302012-02-15T13:09:52.874-03:002012-02-15T13:09:52.874-03:00Hola desdelau,
No logro ver la imagen que enviast...Hola desdelau,<br /><br />No logro ver la imagen que enviaste.<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-38963193031128318242012-02-15T11:41:15.630-03:002012-02-15T11:41:15.630-03:00Bueno leonardo aqui los resultados...
La consulta...Bueno leonardo aqui los resultados...<br /><br />La consulta :<br />select /*+ gather_plan_statistics */ identificacion from usuarios where id = 1; <br />Dio como resultado lo siguiente :<br /><br />IDENTIFICACION<br />--------------<br /> 389190<br /><br />La segunda consulta :<br /><br />select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));<br /><br />Dio como resultado lo siguiente:<br /><br />http://www.subirimagenes.com/privadas-segundaimagenaenviar-1760307.htmldesdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-34961818722148100722012-02-15T11:28:39.335-03:002012-02-15T11:28:39.335-03:00Hola desdelau,
Por favor, abre una sesion de SQL*...Hola desdelau,<br /><br />Por favor, abre una sesion de SQL*Plus, ejecuta las siguientes sentencias y enviamos el resultado:<br /><br />select /*+ gather_plan_statistics */ identificacion from usuarios where id = v_id_a_buscar; <br /><br />Nota: reemplazar v_id_a_buscar por un valor que retorne datos.<br /><br />select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-85634855963900086302012-02-15T11:07:27.322-03:002012-02-15T11:07:27.322-03:00Hola leonardo lastimosamente apagaron mi pc, te cu...Hola leonardo lastimosamente apagaron mi pc, te cuento que durante las 8 horas que estuvo ejecutando el procedimiento alcanzo a ingresar 4260000 registros. No se que opinas, mi maquina no es muy potente que digamos..¿que hago lo dejo encendido hasta que termine ?... muchas graciasdesdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-5430211321213491732012-02-15T00:24:06.613-03:002012-02-15T00:24:06.613-03:00Hola leonardo ya puse a ejecutar el procedimiento ...Hola leonardo ya puse a ejecutar el procedimiento que me enviaste, muchas gracias y pues sera esperar a ver que sucede.Estaré informando y muchas gracias por tu tiempo...desdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-47511297415935264232012-02-15T00:10:01.512-03:002012-02-15T00:10:01.512-03:00Hola desdelau,
La sentencia que te envié te dió e...Hola desdelau,<br /><br />La sentencia que te envié te dió error porque había un paréntesis de más. Ejecuta nuevamente esta sentencia y me avisas si te anduvo bien...<br /><br />EXEC DBMS_STATS.GATHER_TABLE_STATS(UPPER('daniel'),'USUARIOS',cascade => true, estimate_percent => dbms_stats.auto_sample_size, no_invalidate => false);<br /><br />Si esta sentencia no dió error, entonces compila el procedimiento que te había enviado (el que tiene las colecciones de memoria) y luego ejecutalo.<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-31771127246644895462012-02-15T00:06:04.660-03:002012-02-15T00:06:04.660-03:00Hola leonardo ejecute lo siguiente y me aparece er...Hola leonardo ejecute lo siguiente y me aparece error en la parte donde dice cascade....<br />EXEC DBMS_STATS.GATHER_TABLE_STATS(UPPER('daniel'),'USUARIOS'),cascade => true, estimate_percent => dbms_stats.auto_sample_size, no_invalidate => false);<br /><br />Entonces ejecute esto no mas..<br />EXEC DBMS_STATS.GATHER_TABLE_STATS(UPPER('daniel'),'USUARIOS');<br /><br />y sale procedimiento ejecutado correctamente ahora no se como hacer para ejecutar lo otro q me dices... ya cree el indice q me dijiste.. gracias y de verdad q pena la molestia...desdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-77644423182667714022012-02-14T23:48:48.103-03:002012-02-14T23:48:48.103-03:00Hola desdelau,
Tenemos que crear un índice que co...Hola desdelau,<br /><br />Tenemos que crear un índice que contenga el campo ID debido a que en la consulta a la tabla USUARIOS se esta accediendo por este campo y si no tenes índice creado vamos a estar realizando un FULL SCAN sobre la tabla 10.000.000 de veces.<br /><br />Podes optar por dropear el índice que ya habias creado o crear el siguiente índice:<br /><br />CREATE UNIQUE INDEX USUARIOS_IDEN_ID_UQ ON USUARIOS(IDENTIFICACION, ID);<br /><br />EXEC DBMS_STATS.GATHER_TABLE_STATS(UPPER('colocar_el_esquema_de_la_tabla'), 'USUARIOS'), cascade => true, estimate_percent => dbms_stats.auto_sample_size, no_invalidate => false);<br /><br />Nota: Fijate que coloqué en la creación del índice el campo IDENTIFICACIONES en la primer posición ya que supongo que al ser un campo PK lo utilizas mucho para acceder a la tabla. <br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-8380305007968110822012-02-14T23:41:42.894-03:002012-02-14T23:41:42.894-03:00Hola leonardo, la tabla usuarios tiene un indice, ...Hola leonardo, la tabla usuarios tiene un indice, CREATE UNIQUE INDEX USUARIOS_PK ON USUARIOS<br />(IDENTIFICACION) pero solo toma la identificación osea q debo eliminarlo y poner el indice q tu me dices ?desdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-30765882795857410102012-02-14T23:24:05.110-03:002012-02-14T23:24:05.110-03:00Hola desdelau,
Por lo que veo en los archivos que...Hola desdelau,<br /><br />Por lo que veo en los archivos que me adjuntaste, la tabla USUARIOS no tiene índice en el campo ID.<br />Comencemos por crear un índice único compuesto por los campos ID e IDENTIFICACION...<br /><br />CREATE UNIQUE INDEX USUARIOS_IDEN_ID_UQ ON USUARIOS(ID, IDENTIFICACION);<br /><br />Luego, te pido que obtengas estadísticas sobre la tabla USUARIOS con sus respectivos índices...<br /><br />EXEC DBMS_STATS.GATHER_TABLE_STATS(UPPER('colocar_el_esquema_de_la_tabla'), 'USUARIOS'), cascade => true, estimate_percent => dbms_stats.auto_sample_size, no_invalidate => false);<br /><br />Por último, reescribí el código que me enviaste para realizar un Bulk Insert cada 10,000 utilizando colecciones en memoria.<br />Volvé a ejecutar el proceso y comentame si logramos una mejoría en el tiempo de respuesta de la ejecución del mismo.<br />Nota: El código que reescribí no pude compilarlo. A lo mejor compila con error y tendremos que revisarlo.<br /><br />procedure llenado_ingresos2 <br />is<br /><br />v_id_a_buscar number;<br />v_identificacion number;<br /><br />type t_array_number is table of number index by binary_integer;<br />type t_array_date is table of date index by binary_integer;<br /><br />t_usuario t_array_number;<br />t_fecha t_array_date;<br />t_hora t_array_date;<br />t_id_session t_array_number;<br /><br />begin<br /> for v_numero in 1 .. 10000000 loop<br /> v_id_a_buscar := aleatorio(1,100000);<br /><br /> select identificacion into v_identificacion from usuarios where id = v_id_a_buscar;<br /><br /> t_usuario(v_numero) := v_identificacion;<br /> t_fecha(v_numero) := sysdate-aleatorio(1,1820);<br /> t_hora(v_numero) := sysdate+numtodsinterval(aleatorio(1,86400),'SECOND');<br /> t_id_session(v_numero) := v_numero;<br /><br /> if (t_usuario.count = 10000) then<br /> forall x in t_usuario.first .. t_usuario.last<br /> insert into ingresos (USUARIO, FECHA, HORA, ID_SESION)<br /> values (t_usuario(x), t_fecha(x), t_hora(x), t_id_session(x));<br /> commit;<br /> <br /> t_usuario.delete;<br /> t_fecha.delete;<br /> t_hora.delete;<br /> t_id_session.delete;<br /> end if;<br /><br /> end loop;<br /><br /> forall x in t_usuario.first .. t_usuario.last<br /> insert into ingresos (USUARIO, FECHA, HORA, ID_SESION)<br /> values (t_usuario(x), t_fecha(x), t_hora(x), t_id_session(x));<br /> commit;<br /><br /> t_usuario.delete;<br /> t_fecha.delete;<br /> t_hora.delete;<br /> t_id_session.delete;<br />end llenado_ingresos2;<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-39851680812544942602012-02-14T22:35:06.784-03:002012-02-14T22:35:06.784-03:00Hola Leonardo no se si sea permitido pero adjunte ...Hola Leonardo no se si sea permitido pero adjunte lo necesario para que entiendas mejor mi problema... espero me puedas ayudar y muchas gracias por tu respuesta http://www.mediafire.com/?z718prue5xq7wpudesdelauhttps://www.blogger.com/profile/07868114343462811870noreply@blogger.comtag:blogger.com,1999:blog-4063906708258638821.post-19615830873335356702012-02-14T13:02:17.692-03:002012-02-14T13:02:17.692-03:00Hola desdelau,
Hay varias cosas que se pueden mod...Hola desdelau,<br /><br />Hay varias cosas que se pueden modificar en el procedimiento que enviaste para mejorar la performance.<br /><br />Te hago algunas preguntas para poder ayudarte mejor:<br />1) El campo ID de la tabla USUARIOS tiene un índice único creado? Podrías enviarme el plan de ejecución de esa consulta?<br />2) No entiendo cual es el propósito de la función ALEATORIO ya que por lo que veo la utilizas en todo; para el cálculo de la fecha, hora, etc.<br />El llamado a esa función genera mucha recursividad por lo cual quiero entender bien el motivo por el cual la utilizas tanto en el procedimiento.<br /><br />SaludosLeonardo Horikianhttps://www.blogger.com/profile/15192319884550377591noreply@blogger.com