[pgsql-es-ayuda] datos no coinciden entre master y hot standby
buen día Comunidad Implemente con la version de 9.0 un servidor Master y en otro equipo un una replica Hot StandBy, realice el proceso de sinconizacion tal como se indica en el wiki (http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial) y al finalizar el proceso y consultas sobre la cantidad de registros ambos presentan la misma cantidad, osea perfecto.. La base de datos master es una base con muchas inserciones y actualizaciones.. al finanlizar el dia realice una nueva consulta verificando la cantidad de registros en ambas bases y presentan diferencias.. revise los logs y no presentan error... que puede ser? que hace falta configurar?? Muchas gracias -- Cordialmente, Ing. Hellmuth I. Vargas S. Bogota-Colombia
Re: [pgsql-es-ayuda] datos no coinciden entre master y hot standby
Hola Jaime Muchas gracias por su respuesta, pero hace tiempo tengo una duda la cual he tratado de publicar en el lista pero no la coloca, el texto es el siguiente: Estoy implementando un servidor Hot Standby que descongestione una base de datos con alto nivel de updates e insert y permita realizar consultas jasper sobre la replicada. Para esto me guie del siguiente documento http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial en el apartado 5 Minutes to Simple Replication En este no configura ni menciona nada sobre configurar archivelog, segui las instrucciones y esta funcionando bien, pero leyendo mas adelante en el apartado How to Replicate ya menciona la configuración de archivelog y en varios sitios configuran hot standby y replicacion con archivelog. Mi pregunta es: es necesario configurar ambos (hot standby y replicacion con archivelog)? en que casos o situaciones hay que hacerlo? 2011/7/23 Hellmuth Vargas hiv...@gmail.com: buen día Comunidad Implemente con la version de 9.0 un servidor Master y en otro equipo un una replica Hot StandBy, realice el proceso de sinconizacion tal como se indica en el wiki (http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial) y al finalizar el proceso y consultas sobre la cantidad de registros ambos presentan la misma cantidad, osea perfecto.. La base de datos master es una base con muchas inserciones y actualizaciones.. al finanlizar el dia realice una nueva consulta verificando la cantidad de registros en ambas bases y presentan diferencias.. revise los logs y no presentan error... que puede ser? que hace falta configurar?? Muchas gracias Quiza nada, la replicación en 9.0 no es sincrónica por lo que es posible que aun este procesando los registros de WAL en el esclavo. Lamentablemente 9.0 no ayuda mucho a saber eso... puedes ejecutar en el esclavo estas funciones: select pg_last_xlog_receive_location() select pg_last_xlog_replay_location() para ver si la replica esta avanzando, sabes que estan iguales cuando pg_last_xlog_receive_location() es igual al valor que devuelve el maestro al ejecutar: select pg_current_xlog_location() o te complicas menos si usas repmgr (http://repmgr.org) que hace estas cosas por ti y te provee de una vista mas facil de entender -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte 24x7 y capacitación
Re: [pgsql-es-ayuda] datos no coinciden entre master y hot standby
Hola Jaime Muchas gracias por su respuesta, pero hace tiempo tengo una duda la cual he tratado de publicar en el lista pero no la coloca, el texto es el siguiente: Estoy implementando un servidor Hot Standby que descongestione una base de datos con alto nivel de updates e insert y permita realizar consultas jasper sobre la replicada. Para esto me guie del siguiente documento http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial en el apartado 5 Minutes to Simple Replication En este no configura ni menciona nada sobre configurar archivelog, segui las instrucciones y esta funcionando bien, pero leyendo mas adelante en el apartado How to Replicate ya menciona la configuración de archivelog y en varios sitios configuran hot standby y replicacion con archivelog. Mi pregunta es: es necesario configurar ambos (hot standby y replicacion con archivelog)? en que casos o situaciones hay que hacerlo? 2011/7/23 Jaime Casanova ja...@2ndquadrant.com 2011/7/23 Hellmuth Vargas hiv...@gmail.com: buen día Comunidad Implemente con la version de 9.0 un servidor Master y en otro equipo un una replica Hot StandBy, realice el proceso de sinconizacion tal como se indica en el wiki (http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial) y al finalizar el proceso y consultas sobre la cantidad de registros ambos presentan la misma cantidad, osea perfecto.. La base de datos master es una base con muchas inserciones y actualizaciones.. al finanlizar el dia realice una nueva consulta verificando la cantidad de registros en ambas bases y presentan diferencias.. revise los logs y no presentan error... que puede ser? que hace falta configurar?? Muchas gracias Quiza nada, la replicación en 9.0 no es sincrónica por lo que es posible que aun este procesando los registros de WAL en el esclavo. Lamentablemente 9.0 no ayuda mucho a saber eso... puedes ejecutar en el esclavo estas funciones: select pg_last_xlog_receive_location() select pg_last_xlog_replay_location() para ver si la replica esta avanzando, sabes que estan iguales cuando pg_last_xlog_receive_location() es igual al valor que devuelve el maestro al ejecutar: select pg_current_xlog_location() o te complicas menos si usas repmgr (http://repmgr.org) que hace estas cosas por ti y te provee de una vista mas facil de entender -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte 24x7 y capacitación - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] datos no coinciden entre master y hot standby
Hola Jaime Entonces solo con la configuración hot standby y wal_keep_segment en el maestro seria suficiente para disponer de una replica de solo lectura para mi base de datos principal!. En un momento dado, si mi base de datos maestro se cae, el hot standby puede entrar a sustituirlo durante la operación (estableciendo el parámetro hot_standby = off y retirando el archivo recovery.conf) y en tiempos muertos, sincronizar el maestro con la carpeta data del esclavo y volviendo a colocar nuevamente todo como en el principio? Le agradezco mucho su repuesta y tiempo. 2011/7/24 Jaime Casanova ja...@2ndquadrant.com: 2011/7/23 Hellmuth Vargas hiv...@gmail.com: Mi pregunta es: es necesario configurar ambos (hot standby y replicacion con archivelog)? en que casos o situaciones hay que hacerlo? de hecho estas confundiendo terminos: hot standby es tener el servidor de replica configurado para que pueda contestar consultas de solo lectura y para tenerlo activado debes estar replicando de algun modo... las dos técnicas de replicación integrada que se usan en postgres son: log shipping (lo que tu llamaste archivelog) y streaming replication. ambos son independientes y puedes usar uno sin el otro... la ventaja de usar ambos juntos es que si apagas el esclavo el maestro seguira enviando la informacion pendiente hasta que este vuelva a estar activo, y lo intentara hasta que el segmento de wal sea reutilizado por postgres (lo cual es algo que no puedes controlar), si tienes wal_keep_segment garantizas un poco mas de tiempo para que vuelva a la vida el esclavo a costa de espacio de disco en el servidor... si tienes log shipping configurado entonces puedes encender tu servidor cuando desees y te aseguras que la replica buscara ahi los wal que necesita antes de volver a conectar el streaming desde el maestro espero que se entienda -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte 24x7 y capacitación -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Agrupar por año
Suponiendo que la tabla se llama persona_aporte, seria algo asi: SELECT ano,count(*) AS total_aportantes FROM persona_aporte GROUP BY ano; 2011/8/5 Giorgio giorgio.pg...@gmail.com: Amigos tengo una tabla similar a este ejemplo: ¦¦-¦--- ¦ aportante ¦ año ¦ aporte ¦¦-¦--- ¦ JUAN ¦2011 ¦ 8 ¦ CARLOS ¦2011 ¦ 8 ¦ JOSE ¦2011 ¦ 8 ¦ JERY ¦2011 ¦ 8 ¦ JORGE ¦2011 ¦ 8 ¦ JEAN ¦2011 ¦ 8 Cantidad de aportantes que aportaron 8 aportes 6, quiero un resultado igual a: ¦-¦-¦ ¦ año ¦ total_aportantes ¦-¦-¦ ¦2011 ¦ 6 Muchas gracias -- Cordialmente, Ing. Hellmuth I. Vargas S. Bogota-Colombia - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] Equivalencias entre mysql y postgresql
Hola tal vez este documento le pueda ayudar http://en.wikibooks.org/wiki/Converting_MySQL_to_PostgreSQL 2011/8/18 José Francisco Luis Medina josefranciscoluismed...@gmail.com: Hola buenos días, me encuentro en proceso de migración de una de mis bases de datos de mysql 5.1.49 a postgresql 8.4.8, en debian squeezy, he buscado algún proceso que me facilite la migración pero no he encontrado algo que me sea de mucha ayuda, debido a esto bueno voy a intentar editar mis .sql para levantarlos en postgresql cambiando las ordenes del manejador anterior (mysql) para esto me he estado buscando alguna especie de tabla comparativa entre las sentencias de cada uno de los manejadores pero he conseguido pocas, quisiera saber si alguno de ustedes conoce una buena documentación que diferencie dichas sentencias, agradeciendo de antemano cualquier ayuda me despido... - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Bogota, Colombia - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] separar datos de un campo
Hola según veo en la documentación, para acceder a los componentes x,y de un datos point seria similar al de los arreglos por lo tanto para x seria campo[0] y para y campo[1] osea que un select tentativo seria SELECT campo_punto[0] AS x, campo_punto[1] AS y FROM tabla http://www.postgresql.org/docs/8.4/static/functions-geometry.html It is possible to access the two component numbers of a point as though the point were an array with indexes 0 and 1. For example, if t.p is a point column then SELECT p[0] FROM t retrieves the X coordinate and UPDATE t SET p[1] = ... changes the Y coordinate. In the same way, a value of type box or lseg can be treated as an array of two point values. 2011/8/19 Miguel Angel Hernandez Moreno miguel.hdz@gmail.com: Saludos lista Tengo un campo tipo point en una tabla, el cual contiene la latitud ( coordenada posotiva)y longitud (coordenada negativa) (-100.298390507273,25.6720346672794) lo que deseo es hacer un select a este registro pero manejarlo de tal forma que me regrese por separado las coordenadas, pense manejarlo con expresiones regulares en uan funcion de postgres y evaluar el registro pero no se si podria hacer mejor solo en un select -- ISC Miguel Angel Hernandez Moreno -- Cordialmente, Ing. Hellmuth I. Vargas S. - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] separar datos de un campo
Hola según veo en la documentación, para acceder a los componentes x,y de un datos point seria similar al de los arreglos por lo tanto para x seria campo[0] y para y campo[1] osea que un select tentativo seria SELECT campo_punto[0] AS x, campo_punto[1] AS y FROM tabla http://www.postgresql.org/docs/8.4/static/functions-geometry.html y pues debería aprovecharse las funciones nativas que tiene estos tipos de datos, y en generar para las que implementan para cada tipo. 2011/8/22 Alvaro Herrera alvhe...@alvh.no-ip.org: Excerpts from Miguel Angel Hernandez Moreno's message of vie ago 19 12:14:47 -0400 2011: Saludos lista Tengo un campo tipo point en una tabla, el cual contiene la latitud ( coordenada posotiva)y longitud (coordenada negativa) (-100.298390507273,25.6720346672794) lo que deseo es hacer un select a este registro pero manejarlo de tal forma que me regrese por separado las coordenadas, pense manejarlo con expresiones regulares en uan funcion de postgres y evaluar el registro Hmm, lo que yo haría sería tomar la diferencia con cada uno de los orígenes (0,0), o algo de ese estilo, evitando la manipulación de texto lo más posible (leeento) -- Álvaro Herrera alvhe...@alvh.no-ip.org - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] Recuperar datos borrados en Postgres
buen día He seguido los correo y es muy interesante el asunto, en otros motores (al menos en Oracle) existe un tablespace especial llamado UNDO en el cual sobre las tablas que uno defina se amacena los datos borrados hasta que uno le haga un PURGE o se requiera espacio, podría implementarse un mecanismo similar e PostgreSQL.? 2011/8/31 Jonathan Finlay jmfinl...@gmail.com El 31 de agosto de 2011 01:25, Jaime Casanova ja...@2ndquadrant.comescribió: no olvides recompilar eliminando el cambio que hiciste... No va ha ser necesaria la recompilación pues fue una instalación personalizada en un directorio personal y solo para este ejercicio, el servidor original no fue tocado ni detenido durante la operación... por cierto, te gustaria hablar de esa experiencia en el PGDay? quiza algo breve Por supuesto, estoy pensando que se puede ejecutar el servidor modificado usando un puerto diferente en caliente y ver las diferencias de los datos entre ambos servidores el normal vs. el modificado para poder recuperar datos (seguro no estoy) -- Jonathan. -- Cordialmente, Ing. Hellmuth I. Vargas S. Bogota, Colombia
Re: [pgsql-es-ayuda] Recuperar datos borrados en Postgres
Hola Jaime No hay planes de implementacion sobre esta particular en el Proyecto principal de PostgreSQL? es muy intrincado el desarrollo de alguna funcionalidad? que debería uno saber? depronto me estoy apartando un poco del tema principal pero suena interesante la funcionalidad, mucho muchos aveces borramos sin querer y si existiera una opción undo seria formidable! gracias por su tiempo 2011/8/31 Jaime Casanova ja...@2ndquadrant.com 2011/8/31 Hellmuth Vargas hiv...@gmail.com: buen día He seguido los correo y es muy interesante el asunto, en otros motores (al menos en Oracle) existe un tablespace especial llamado UNDO en el cual sobre las tablas que uno defina se amacena los datos borrados hasta que uno le haga un PURGE o se requiera espacio, podría implementarse un mecanismo similar e PostgreSQL.? si estas dispuesto a financiar eso de seguro que se puede y muy pronto, sino habra que esperar a ver si alguien trae un diseño implementable -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte 24x7 y capacitación -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] porque max_connections debe ser igual entre el master y el hot standby
Muchas Gracias Alvaro por su repuesta Pues la verdad el Master es un equipo que tiene gran cantidad de transacciones de insert y update de muchos clientes concurrentes por eso tienen configurado con tal cantidad el parámetro max_connections, una opción que había explorado era emplear pool para postgres y así poder disminuir este parámetro, pero los usuarios se autentican con LDAP. De todas maneras muchas Gracias 2011/9/15 Alvaro Herrera alvhe...@alvh.no-ip.org Excerpts from Hellmuth Vargas's message of mié sep 14 23:37:44 -0300 2011: Hola Comunidad Tengo implementado un servidor PostgreSQL 9.0 con un esclavo Hot Standby 9.0 con la replicación nativa que implementa postgres 9.0, el esclavo lo empleo para consultas y reporte y la cantidad de clientes no es muy grande pero si de consultas grandes, intente bajar el parámetro max_connections para poder aumentar otros como work_mem y temp_buffer pero el servidor esclavo no levanta si no tiene el mismo valor de max_connections que el master... porque esto? Gracias Es por necesidades internas del código. Jaime podría explicarlo mejor, pero básicamente el standby necesita poder almacenar cierta información del maestro, y lo hace en arrays que tienen el mismo tamaño que los del maestro. Creo que la alternativa habría sido agregar en postgresql.conf un parámetro adicional master_max_connections o algo por el estilo, pero esa idea fue rechazada por ser como Betty (no Boop, sino la otra). Si requieres disminuir max_connections para asegurar que no pasarás de cierta cantidad de conexiones y así poder subir tranquilamente temp_buffers o work_mem, lo que podrías hacer es establecer límites de cantidad de conexiones por usuario. -- Álvaro Herrera alvhe...@alvh.no-ip.org -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
[pgsql-es-ayuda] parámetros de postgres y linux en maquinas virtuales
buen dia a partir de los siguientes artículos publicados en la primera edicion de PostgreSQL Magazine (http://pgmag.org/00/read) (Performance Tunning PostgreSQL y Tuning linux for PostgreSQL) me dispuse a implementar los mismo en mi servidor de Postgres pero cuento con la siguiente arquitectura SAN VMWare CentOS 6-64bits PostgreSQL 9-64bits Tengo virtualizada la maquina para atender otros servicios, entonces mi pregunta es.. los parámetros y consideraciones que establecen en el articulo son aplicables al esquema visualizado especialmente en cuanto a la configuración del Linux? les agradezco de antemano su opinión -- Cordialmente, Ing. Hellmuth I. Vargas S. Bogotá, Colombia
[pgsql-es-ayuda] conocer el tamaño (en bytes) del resultado de una consulta
buen día Lista Dentro de los reportes que se generan en la compania, existen unos semanales que traen muchísimos registros, estos repoprtes naturalmente se demoran y atribuyen el asunto a lentitud de la base, he realizado mis pruebas y obvio al hacer la consulta SELECT count(*) FROM ( consulta con muchos registros) AS a esta se ejecuta en pocos millisegundos. El punto que quiero presentar a la personas de reportes que no están considerando el tiempo que demora enviar estos datos al servidor de correo y su tamaño, para ello quería obtener el tamaño en bytes de la consulta que estaban generando pero no encontré el modo, se que se puede de una tabla por medio de pg_size_pretty(pg_total_relation_size('big_table')) o pg_size_pretty(pg_relation_size('big_table')) pero no tengo espacio para generar el volcado de la consulta en una tabla temporal. Les agradezco su atención y ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] conocer el tamaño (en bytes) del resultado de una consulta
Hola Alvaro Muchas Gracias por la pronta respuesta, tuve que ajustarle y reescribirlo así pero la esencia es la misma. Nuevamente gracias SELECT pg_size_pretty(SUM(tamanos)) FROM ( SELECT pg_column_size(row(b.*)) as tamanos FROM (la gran consulta) as b ) AS c; 2011/11/15 Alvaro Herrera alvhe...@alvh.no-ip.org Excerpts from Hellmuth Vargas's message of mar nov 15 12:27:15 -0300 2011: buen día Lista Dentro de los reportes que se generan en la compania, existen unos semanales que traen muchísimos registros, estos repoprtes naturalmente se demoran y atribuyen el asunto a lentitud de la base, he realizado mis pruebas y obvio al hacer la consulta SELECT count(*) FROM ( consulta con muchos registros) AS a esta se ejecuta en pocos millisegundos. El punto que quiero presentar a la personas de reportes que no están considerando el tiempo que demora enviar estos datos al servidor de correo y su tamaño, para ello quería obtener el tamaño en bytes de la consulta que estaban generando pero no encontré el modo, se que se puede de una tabla por medio de pg_size_pretty(pg_total_relation_size('big_table')) o pg_size_pretty(pg_relation_size('big_table')) pero no tengo espacio para generar el volcado de la consulta en una tabla temporal. Les agradezco su atención y ayuda select pg_size_pretty(sum(pg_column_size(*))) FROM (la gran consulta) AS f -- Álvaro Herrera alvhe...@alvh.no-ip.org
[pgsql-es-ayuda] problema con colision de identificadores de lob al restaurar
buenas noches lista resulta que tengo una serie de cluster de postgres que queremos unificar en un unico cluster. Todos los cluster tiene una base de datos con nombres de schemas diferentes entre si por lo tanto en principio podria crearse una unica base donde podrian convivir todos los schemas y no deberia tene problema, generamos tanto un dump como archivo de sentencia SQL, empezamos a restaurar los archivos y en principio no molesta con el primero y segundo pero con el tercero y cuarto al momento que va a restaurar los lob genera el siguiente error: pg_restore: *** aborted because of error pg_restore: [archiver] could not create large object 21709: ERROR: duplicate key value violates unique constraint pg_largeobject_metadata_oid_indexDETAIL: Key (oid)=(21709) already exists.pg_restore: *** aborted because of error segun creo es un problema del diccionario de datos al registrar los lob...Que puedo hacer? les agradezco sus comentarios y tiempo -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] uptime
Hola Lista Tiempo sin participar...recientemente he leído y desmenuzado el libro PostgreSQL 9 Administration Cookbook (muy recomendado) y entre las cosas que tiene, presenta este método para obtener el uptime del servidor.. espero le sirva: SELECT date_trunc('second',current_timestamp - pg_postmaster_start_time()) as uptime; PostgreSQL 9 Administration Cookbook- pag 33 2012/1/27 Miguel Beltran R. yourpa...@gmail.com Parece que no, pero puesdes saber su tiempo en linux con ps http://singztechmusings.wordpress.com/2011/06/15/how-to-check-the-uptime-of-a-process-or-an-application-running-in-linux-machine-using-shell-script/ Ejemplo # Get ActiveMQ PID activemq_pid=`ps ax | grep apache-activemq | grep -v grep | awk ‘{print $1}’` echo $activemq_pid # Get ActiveMQ Uptime activemq_uptime=`ps -p Otra que se me acaba de ocurrir es más tosca, que es con grep revisar el log de postgres mostrando solo las lines con marca el inicio de postgres, tienes que ver cual es el texto. El 25 de enero de 2012 14:38, Fede . elcoto...@gmail.com escribió: hola, existe algun comando como uptime de linux para postgres ? gracias federico - Enviado a la lista de correo pgsql-es-ayuda ( pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- Cordialmente, Ing. Hellmuth I. Vargas S. Colombia
[pgsql-es-ayuda] tamano del blocksize
Hola Lista Estaba teniendo problemas con una base destinada a bodega de datos, estuve configurando la misma apelando tanto a las pautas que se dan para configuracion del sistema operativo (linux-64bits) como propias de postgres (9.1) y diseno fisico de la base de la bodega (modelo dimensional,particion de tablas, indices cluster, etc, etc). Como tal la bodega no tiene muchos datos inicialmente (17 millones de registros). Hoy el tema de desempeno estaba muy penalizado y me dio por revisar el I/O y probar con tamano de bloque mas grande para postgres (16Kb) claro hubo necesidad de compilar y migrar y oh sorpresa: mejoro muchisimo!!! bueno la pregunta es: el tema de los 8Kb es un limite por compatibilidad? seria conveniente considerarlo siempre al realizar una instalacion en servidores relativamente nuevos? muchas gracias lista -- Cordialmente, Ing. Hellmuth I. Vargas S.
Re: [pgsql-es-ayuda] tamano del blocksize
Hola Lista No claro!! modifique tanto el blocksize como el wal-blocksize. (/configure --with-blocksize=16 --with-wal-blocksize=16) Ademas una vez terminada la migración ejecute un vacuum full analyze sobre toda la base. Pero el hecho es que el desempeño si se ha visto muy favorecido: antes, un indice sobre la fact table de 17 millones de registros demoraba aproximadamente 1:15 min, ahora la creación del mismo indice demoro 25 min.. igual las pruebas continuan... . 2012/2/15 Eduardo Morras nec...@retena.com At 04:46 15/02/2012, Jaime Casanova wrote: 2012/2/14 Hellmuth Vargas hiv...@gmail.com: Hoy el tema de desempeno estaba muy penalizado y me dio por revisar el I/O y probar con tamano de bloque mas grande para postgres (16Kb) claro hubo necesidad de compilar y migrar y oh sorpresa: mejoro muchisimo!!! bueno la pregunta es: el tema de los 8Kb es un limite por compatibilidad? seria conveniente considerarlo siempre al realizar una instalacion en servidores relativamente nuevos? muchas gracias lista Honestamente nunca se me hubiera ocurrido esa solucion... en cuanto a tu pregunta, quiza solo es inercia y falta las pruebas de rendimiento apropiadas. sin embargo, aun si fuera asi supongo que solo se recomendaria para que el que quiera lo haga. PostgreSQL soporta sistemas muy viejos y probablemente en algunos de ellos sea contraproducente hacer eso... pero como no tengo datos en los cuales basarme solo estoy asumiendo Ten cuidado al hacer eso. Para empezar si quieres usar wal archive o pitr o similares, ambos postgres deben tener el mismo tamaño de bloque, si no, puede desde indicarte que no funciona a corromper los datos en el postgres de destino. Si intentas actualizar el postgres debes recompilarlo con esta opcion antes de lanzarlo, si no puede corromper los datos que tengas. Por supuesto, el puede corromper puede fallar y demas es un casi seguro que lo va a hacer. HTH - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org **) Para cambiar tu suscripción: http://www.postgresql.org/**mailpref/pgsql-es-ayudahttp://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] tamano del blocksize
Hola Eduardo y lista Si claro, digamos que la administración y actualización debe ponersele mucho mas cuidado pero vale la pena el cambio. Pero mi comentario va un poco mas alla: sera que es necesario reevaluar algunos parámetros que mantiene PostgreSQL (algunos de los cuales requiere recompilar) para que aproveche mucho mejor el actual hardware y software? Gracias Lista 2012/2/15 Eduardo Morras nec...@retena.com At 13:58 15/02/2012, Hellmuth Vargas wrote: Hola Lista No claro!! modifique tanto el blocksize como el wal-blocksize. (/configure --with-blocksize=16 --with-wal-blocksize=16) Ademas una vez terminada la migración ejecute un vacuum full analyze sobre toda la base. Pero el hecho es que el desempeño si se ha visto muy favorecido: antes, un indice sobre la fact table de 17 millones de registros demoraba aproximadamente 1:15 min, ahora la creación del mismo indice demoro 25 min.. igual las pruebas continuan... No me referia al uso de ese postgresql en concreto, la mejora de rendimiento es considerable al terminar en la tercera parte de tiempo. Me referia a que si ese postgres lo vas a usar en un entorno de maestro esclavo como maestro, el postgresql esclavo debe estar compilado con estos mismos parametros. Ademas, si actualizas el postgresql de ese servidor, acuerdate antes de lanzar la version actualizada de recompilarla, si no los directorios de datos se veran comprometidos. Era mas un aviso para que lo tengas en cuenta antes de que te quedes sin los datos. Igual si postgres pone el tamaño del bloque como parte de su configuracion en vez de su compilacion seria mas sencillo hacer pruebas. Sqlite por ejemplo te permite cambiar el tamaño de los bloques/paginas mediante un pragma y haciendo un vacuum. . 2012/2/15 Eduardo Morras mailto:nec...@retena.comnec**5...@retena.comnec...@retena.com At 04:46 15/02/2012, Jaime Casanova wrote: 2012/2/14 Hellmuth Vargas mailto:hiv...@gmail.comhivs**7...@gmail.comhiv...@gmail.com : Hoy el tema de desempeno estaba muy penalizado y me dio por revisar el I/O y probar con tamano de bloque mas grande para postgres (16Kb) claro hubo necesidad de compilar y migrar y oh sorpresa: mejoro muchisimo!!! bueno la pregunta es: el tema de los 8Kb es un limite por compatibilidad? seria conveniente considerarlo siempre al realizar una instalacion en servidores relativamente nuevos? muchas gracias lista Honestamente nunca se me hubiera ocurrido esa solucion... en cuanto a tu pregunta, quiza solo es inercia y falta las pruebas de rendimiento apropiadas. sin embargo, aun si fuera asi supongo que solo se recomendaria para que el que quiera lo haga. PostgreSQL soporta sistemas muy viejos y probablemente en algunos de ellos sea contraproducente hacer eso... pero como no tengo datos en los cuales basarme solo estoy asumiendo Ten cuidado al hacer eso. Para empezar si quieres usar wal archive o pitr o similares, ambos postgres deben tener el mismo tamaño de bloque, si no, puede desde indicarte que no funciona a corromper los datos en el postgres de destino. Si intentas actualizar el postgres debes recompilarlo con esta opcion antes de lanzarlo, si no puede corromper los datos que tengas. Por supuesto, el puede corromper puede fallar y demas es un casi seguro que lo va a hacer. HTH - Enviado a la lista de correo pgsql-es-ayuda (mailto:pgsql-es-ayuda@** postgresql.org pgsql-es-ayuda@postgresql.orgpgsql-es-ayuda@** postgresql.org pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/**mailpref/pgsql-es-ayudahttp://www.postgresql.org/mailpref/pgsql-es-ayuda http:/**/www.postgresql.org/mailpref/**pgsql-es-ayudahttp://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org **) Para cambiar tu suscripción: http://www.postgresql.org/**mailpref/pgsql-es-ayudahttp://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] tamano del blocksize
Hola Jaime y lista En el postgresql.conf tenia maintenance_work_mem = 128MB y antes de iniciar la creación del indice lo establecí en 512MB. en la nueva versión a 16bits esta en los mismos 128MB del postgresql.conf y ni siquiera lo establece para crear el indice...la maquina solo tiene 4GB de memoria RAM 2012/2/15 Jaime Casanova ja...@2ndquadrant.com 2012/2/15 Hellmuth Vargas hiv...@gmail.com: antes, un indice sobre la fact table de 17 millones de registros demoraba aproximadamente 1:15 min, ahora la creación del mismo indice demoro 25 min.. igual las pruebas continuan... crear un indice en una tabla de 17 millones demoraba 1h 15min? que valor tienes asignado a maintenance_work_mem? me parece muy malo el rendimiento independientemente de que tamaño tengan los bloques probablemente te hubiera servido primero optimizar tu configuración y luego pensar en lo que hiciste -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte 24x7 y capacitación -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] Duda sobre JOIN
2012/4/25 Lazaro Ruben Garcia Martinez lgarc...@uci.cu Hola a todos en la lista. Les escribo, porque tengo una duda sobre el orden (si es que importa) en que se colocan las tablas en una operación de unión (JOIN). Básicamente quiero saber si la tabla que más tuplas tiene, debe ir a la izquierda o la derecha, o si el planificador se encarga por si solo de esto. Saludos y muchas gracias a todos por su tiempo. http://www.uci.cu/ Hola En lo que he podido evaluar: si importa pero con asterisco: se ve afectado por indices, filtros aplicados, etc, etc. Según este articulo es una cosa que hay que tener presente http://www.neilconway.org/talks/optimizer/optimizer.pdf en la pagina 7 In general, plan nodes are asymmetric: left and right inputs treated differently -- Cordialmente, Ing. Hellmuth I. Vargas S.
Re: [pgsql-es-ayuda] Implementacion de (+)
hola Lista Incluso es mas aconsejable emplear LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN que el operador (+) en el mismo Oracle pues es un estándar ANSI que permite portar mas fácilmente una sentencia SQL y el desempeño es igual 2012/5/14 Jaime Casanova ja...@2ndquadrant.com El 14/05/2012 18:13, Alejandro Carrillo faster...@yahoo.es escribió: Hola, En Oracle existe el operador (+) el cual se le coloca a un lado de cada expresión del where para hacer outer joins. ¿Conocen una forma de hacer este operador en postgresql o una implementación ya hecha? LEFT JOIN? -- Jaime Casanova 2ndQuadrant: Your PostgreSQL's partner -- Cordialmente, Ing. Hellmuth I. Vargas S. Colombia
Re: [pgsql-es-ayuda] Implementacion de (+)
Hola Lista No solo estoy de acuerdo con las razones técnicas que expuso Alvaro, sino ademas - El operador (+) es propio (por no decir propietario) de Oracle para el caso de los JOINs - Para este tipo de situaciones, ANSI definió una sintaxis clara basada en los operadores [LEFT | RIGHT | FULL OUTER| INNER] JOIN la cual es deseable que todos los motores implementen y/o soporte, entonces de alguna manera, el operador (+) es obsoleto e incluso el mismo Oracle en sus cursos de certificación desaconseja su uso en pro de la sintaxis ANSI - Lo deseable es que para implementar sentencias SQL uno emplee el estándar ANSI, en la medida de lo posible y esto es regla para cualquier motor. (claro esto no es 100% por 100% posible) 2012/5/15 Alvaro Herrera alvhe...@alvh.no-ip.org Excerpts from Alejandro Carrillo's message of mar may 15 10:32:30 -0400 2012: Es decir, el operador tal cual Entiendo que estás preguntando si es posible modificar Postgres de alguna manera para que entienda una consulta que lleva el (+). La respuesta es no, eso no se puede. Requeriría una modificación del parser, y eso no puedes hacerlo desde una extensión o módulo externo. -- Álvaro Herrera alvhe...@alvh.no-ip.org - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
[pgsql-es-ayuda] consulta para ver las tablas, indices,etc que están involucrados en un lock
Hola Lista tiempo sin escribir!!! En múltiples oportunidades se presentan transacciones que pueden demorar mucho tiempo y uno desea indagar que tablas o en general objetos están involucradas en el mismos para determinar problemas de indices, mantenimiento, etc. He probado y ajustado consultas disponible en varias fuentes (la principal http://wiki.postgresql.org/wiki/Lock_Monitoring) pero ninguna logra sacar el nombre y/o tipo de todos los objetos involucrados en un bloqueo esta es la ultima consulta que estoy manejando para aquellos bloqueos de mas de 2 minutos select pg_stat_activity.procpid,pg_class.relname,pg_locks.transactionid, pg_locks.mode from pg_stat_activity,pg_locks left outer join pg_class on (pg_locks.relation = pg_class.oid) where pg_locks.pid=pg_stat_activity.procpid and pg_stat_activity.current_query'IDLE' and current_timestamp-xact_startinterval '2 minutes' order by query_start Alguien tendría una consulta mejor? les agradezco de antemano su aporte!! -- Cordialmente, Ing. Hellmuth I. Vargas S.
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] consulta para ver las tablas, indices,etc que están involucrados en un lock
Hola Alvaro voy a revisar el material, Muchas gracias! 2012/8/29 Alvaro Herrera alvhe...@2ndquadrant.com Excerpts from Hellmuth Vargas's message of mié ago 29 17:33:40 -0400 2012: Hola Lista tiempo sin escribir!!! En múltiples oportunidades se presentan transacciones que pueden demorar mucho tiempo y uno desea indagar que tablas o en general objetos están involucradas en el mismos para determinar problemas de indices, mantenimiento, etc. He probado y ajustado consultas disponible en varias fuentes (la principal http://wiki.postgresql.org/wiki/Lock_Monitoring) pero ninguna logra sacar el nombre y/o tipo de todos los objetos involucrados en un bloqueo esta es la ultima consulta que estoy manejando para aquellos bloqueos de mas de 2 minutos select pg_stat_activity.procpid,pg_class.relname,pg_locks.transactionid, pg_locks.mode from pg_stat_activity,pg_locks left outer join pg_class on (pg_locks.relation = pg_class.oid) where pg_locks.pid=pg_stat_activity.procpid and pg_stat_activity.current_query'IDLE' and current_timestamp-xact_startinterval '2 minutes' order by query_start Alguien tendría una consulta mejor? les agradezco de antemano su aporte!! Normalmente cuando tienes bloqueos sin explicación puede deberse a llaves foráneas. En ese caso hay candados granted=true con locktype=tuple en pg_locks que están tomados por transacciones que además tienen un candado granted=false asociados a otra transacción. Lo que esto significa es que esa otra transacción tiene bloqueado la tupla en cuestión, pero esto no queda representado en pg_locks. Se supone que esto está parcialmente explicado en esta presentación: http://lanyrd.com/2011/pgbr/skdgz/ .. pero vaya, veo que no están las láminas. Ah, aquí: http://pgbr.postgresql.org.br/2011/slides/65.pdf Quizás te sirva de algo. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] Problema con ORDER BY
buenas Lista realice la siguiente consulta donde ordeno por el primer carácter: order by substring(a.nombre,1,1) select * from (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian')) as a(codigo, nombre) order by substring(a.nombre,1,1) y genera la siguiente salida: codigo, nombre 400,_JOSE 500,_adrian 300,ARMANDO 100,JUAN 200,LUCHO para organizarlo en el mismo orden del ejemplo iniciar: order by case when substring(a.nombre,1,1)'_' then substring(a.nombre,2,1) else 'z' end select * from (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian')) as a(codigo, nombre) order by case when substring(a.nombre,1,1)'_' then substring(a.nombre,2,1) else 'z' end y genera la siguiente salida: codigo, nombre 300,ARMANDO 100,JUAN 200,LUCHO 400,_JOSE 500,_adrian 2012/9/11 CarloS Sing Ramos carloss...@gmail.com intenta poniendo ASC o DESC El día 5 de septiembre de 2012 19:08, Jose Ayala Pineda jose...@gmail.com escribió: Holas, haber si alguien me puede ayudar, esto tratando de sacar un listado ordenandolo por descripcion con ORDER BY , pero me he dado cuenta que el ORDER BY no reconoce mis caracteres que no sean alfanumericos, por ejemplo: codigo, nombre 100, JUAN 200, LUCHO 300, ARMANDO 400, _JOSE 500, _adrian al hacer un select * from mitabla order by nombre devuelve 500, _adrian 300, ARMANDO 400, _JOSE 100, JUAN 200, LUCHO y deberia mostrar primero los que empiezan por el subguion; he probado con puntos , guiones, asteriscos y siempre devuelve ordenado por el primer caracter alfanumerico, no por los otros; hay forma de que el ORDER BY considere estos caracteres no alfanumericos en la ordenacion. Gracias de antemano -- Jose J. Ayala Pineda (a.k.a. 1nk@H@ck) MSN Messenger: j...@hotmail.com URL/Blog: http://inkahack.blogspot.com Si tú tienes una manzana y yo tengo una manzana y las intercambiamos, entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas. George Bernard Shaw -- Salu2 Linux Register User #525697 --==[[Carlos Sing]]==-- - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] Problema con ORDER BY
Uy que bien Alvaro!!, la verdad esta funcionalidad no la conocía :-) order by a.nombre collate C; 2012/9/11 Alvaro Herrera alvhe...@2ndquadrant.com Excerpts from Jose Ayala - CROMOTEX's message of mar sep 11 16:08:19 -0300 2012: Gracias por la ayuda, queria ver si alguien podia resolverlo sin tener que hacer uso de otra funcion, solo con el order by clasico; leyendo por ahi me indicaban que el problema es la forma en la que se construyen los indices, y el order by usa estos indices; Esa explicación no tiene sentido. asi que bueno yo lo solucione asi: select codigo,nombre from mitabla ORDER BY ascii(nombre) Hm. Creo que si estás en una versión que soporte COLLATION, es mejor usar eso, porque el ascii() puede fallar en ciertos casos. Tomando el ejemplo de Hellmuth: alvherre=# select * from (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian')) as a(codigo, nombre) order by a.nombre collate C; codigo | nombre +- 300 | ARMANDO 100 | JUAN 200 | LUCHO 400 | _JOSE 500 | _adrian (5 filas) eso es lo que quieres, ¿no? -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S.
[pgsql-es-ayuda] como exportar separado por comas una tabla grande
Hola Lista tengo una tabla con la siguiente estructura CREATE TABLE datos_para_proceso ( id bigint, identificador character varying, nombre character varying(255), nombreusuario text, identificacion character varying(255), tema character varying(255), notatema text, subtema character varying(255), notasubtema text, pregunta character varying(255), notapregunta text ) Tamaño en disco: 5585 MB ( se saco con la consulta SELECT pg_size_pretty(SUM(tamanos)) FROM ( SELECT pg_column_size(row(b.*)) as tamanos FROM (select * from datos_para_proceso) as b ) AS c; ) numero de filas: 31054642 Esta en una base de datos PostgreSQL 9.2 a 64 Bit en un Linux CentOS 6 La idea es exportar esta tabla en formato csv, trate de hacerlo en psql directamente en el servidor: data=# \f '|' Field separator is |. data=# \a Output format is unaligned. data=# \o /tmp/datos_para_proceso.csv data=# select * from datos_para_proceso; /opt/PostgreSQL/9.2/bin/psql: línea 30: 9608 Terminado (killed) LD_PRELOAD=$PLL LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PG_BIN_PATH/../lib $PG_BIN_PATH/psql.bin $@ Y obvio el archivo quedo vacío, como podría exportar los datos?? Muchas gracias lista -- Cordialmente, Ing. Hellmuth I. Vargas S.
Re: [pgsql-es-ayuda] como exportar separado por comas una tabla grande
Hola Alejandro Muchas gracias!! la verdad no me acordaba que el copy podía funcionar en doble via!!! 2012/10/24 Alejandro Carrillo faster...@yahoo.es http://www.postgresql.org/docs/current/static/sql-copy.html -- *De:* Hellmuth Vargas hiv...@gmail.com *Para:* Lista Postgres ES pgsql-es-ayuda@postgresql.org; pgsql-gene...@postgresql.org *Enviado:* Miércoles 24 de octubre de 2012 12:22 *Asunto:* [pgsql-es-ayuda] como exportar separado por comas una tabla grande Hola Lista tengo una tabla con la siguiente estructura CREATE TABLE datos_para_proceso ( id bigint, identificador character varying, nombre character varying(255), nombreusuario text, identificacion character varying(255), tema character varying(255), notatema text, subtema character varying(255), notasubtema text, pregunta character varying(255), notapregunta text ) Tamaño en disco: 5585 MB ( se saco con la consulta SELECT pg_size_pretty(SUM(tamanos)) FROM ( SELECT pg_column_size(row(b.*)) as tamanos FROM (select * from datos_para_proceso) as b ) AS c; ) numero de filas: 31054642 Esta en una base de datos PostgreSQL 9.2 a 64 Bit en un Linux CentOS 6 La idea es exportar esta tabla en formato csv, trate de hacerlo en psql directamente en el servidor: data=# \f '|' Field separator is |. data=# \a Output format is unaligned. data=# \o /tmp/datos_para_proceso.csv data=# select * from datos_para_proceso; /opt/PostgreSQL/9.2/bin/psql: línea 30: 9608 Terminado (killed) LD_PRELOAD=$PLL LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PG_BIN_PATH/../lib $PG_BIN_PATH/psql.bin $@ Y obvio el archivo quedo vacío, como podría exportar los datos?? Muchas gracias lista -- Cordialmente, Ing. Hellmuth I. Vargas S. -- Cordialmente, Ing. Hellmuth I. Vargas S.
Re: [pgsql-es-ayuda] Creacion y orden de indices
Buenas Tardes Lista! Si el objetivo del indice compuesto es agilizar consultas, pues la estructura del indice depende directamente de estructura de la consultas donde se pretenda emplear: Si se tiene una consulta donde se filtre los datos en el siguiente orden y estructura: select * from tabla where *campo1*=dato1 and *campo2*=dato2 el indice se debe crear así: create index idx_nombreindice on tabla (*campo1*,*campo2*); Lo mas importante es que la combinación de los campos (*campo1*,*campo2*) sea muy heterogénea para que el indice sea verdaderamente efectivo en términos generales. El 19 de diciembre de 2012 16:04, Carlos Edward Grajales Marmolejo cgraja...@colombiasoftware.net escribió: Buena tarde. Tengo una duda frente a los indices en las tablas. Particularmente sobre indices compuestos, cuando sobre una tabla creo un indice con mas de un campo tiene alguna incidencia el orden de los campos en la creacion del mismo? es decir es lo mismo: create index idx_nombreindice on tabla (campo1,campo2); Que create index idx_nombreindice on tabla (campo2,campo1); ??? si no es lo mismo, cual es la diferencia y cual deberia ser el orden normal o mas efectivo Por su colaboracion y atencion mil gracias. -- -- Cordialmente, *Carlos Edward Grajales* Colombia Software Ltda. Calle 18 N No. 3N-24 Ofc.902 Cali - Colombia www.colombiasoftware.net Cel. 313 765 0594 Tel: (2) 489 79 40 -- Cordialmente, Ing. Hellmuth I. Vargas S. PostgreSQL DBA Oracle Database 10g Administrator Certified Associate Bogota D.C. -Colombia
Re: [pgsql-es-ayuda] Problemas con VACUUM
Hola Lista ** Suena a que el backend haciendo el vacuum recibió un SIGTERM, quizá por falta de recursos, habría que ver si el oom killer fué el responsable ... es linux? Pero si hubiese sido una terminación por memoria, no se hubiera caído todos los procesos que hacen parte del cluster de base de datos? se evidenciaría en el log algo como: FATAL vacuum analyze process (PID 22999) was terminated by signal 9: Killed LOG: terminating any other active server processes LOG: The Postmaster has informed me that some other backend died abnormally and possibly corrupted shared memory. FATAL: The database system is in recovery mode fast shutdown request all server processes terminated; reinitializing shared memory and semaphores FATAL: The database system is shutting down Pienso mas bien que le proceso fue terminado 'por las buenas' con un kill -15 o pg_terminate_backend(). No se que opinan ustedes? On Friday, February 15, 2013 06:17:30 PM Jose David Verbel Tous wrote: Saludos, Me ha ocurrido algo extraño, durante la realización de un VACUUM ANALYZE programado por cron a una BD este se ha cancelado y el log de postgres me da lo siguiente: 2013-02-15 00:11:54 COT27323bd FATAL: terminando la conexión debido a una orden del administrador 2013-02-15 00:11:54 COT27323bd SENTENCIA: VACUUM ANALYZE; Sin embargo unos segundos despues (29 seg) el motor sigue recibiendo consultas. Ya he revisado todos los logs de mi sistema (Ubuntu) para validar que alguien a esa hora estuviera conectado y realizado un restart del servicio. Que pudo haber pasado ? Pdta: Este VACUUM se ejecuta de manera periodica sobre la misma base y nunca habia pasado esto. -- Jose David -- Postgresql Tips en español para la comunidad de México e Hispanoamérica. http://postgresql.org.mx Postgresql México en Twitter https://twitter.com/PgsqlMx Twitter account for news sharing https://twitter.com/iCodeiExist -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] Problema con una consulta...
Hola Lista Supongo que esta empleando schemas para agrupar/organizar las tablas pruebe con esta consulta: SELECT schemaname ||'.' ||tablename as tablename, pg_size_pretty(pg_total_relation_size(schemaname ||'.' || tablename ) ) FROM pg_tables WHERE schemaname 'pg_catalog'; El 20 de marzo de 2013 13:32, Yoan Manuel Perez Piñeroympe...@uci.cuescribió: - Mensaje original - De: Yoan Manuel Perez Piñero ympe...@uci.cu CC: pgsql-es-ayuda@postgresql.org Enviados: Miércoles, 20 de Marzo 2013 14:31:50 Asunto: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Transaccionaildad de una función postgresql en una excepción java Buenas tardes, tengo una duda, cuando ejecuto esta cunsulta: SELECT tablename, pg_size_pretty(pg_total_relation_size( tablename ::regclass ) ) FROM pg_tables WHERE schemaname = 'pg_catalog'; funciona correctamente, sin embargo, cuando ejecuto esta otra: SELECT tablename, pg_size_pretty(pg_total_relation_size( tablename ::regclass ) ) FROM pg_tables WHERE schemaname 'pg_catalog'; no funciona, sucede lo mismo si lo uso con NOT LIKE...si alguno me pudiera ayudar respecto a eso se lo agradecería. Saludos. http://www.uci.cu - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] comparar registro con un array
Hola lista creo que es: SELECT * FROM la_tabla WHERE id = ANY(array['a','d','e']) donde id debe ser de tipo carácter. ejemplo select * from (values(0,5,222),(6,20,223),(21,180,224),(181,181,225)) as d(dias_inicial,dias_final,lista) where dias_inicial = any(array[0, 21]); El 11 de abril de 2013 15:30, Patricio Gigouxpgig...@munistgo.cl escribió: ¿Como puedo comparar con un array en una condición, algo como: Salect * from la_tabla where id= a algún elemento en ARRAY['a','d','e'] es decir, si el id corresponde a alguno de esos elementos es seleccionado Gracias Patricio Ggoux Méndez Contact Me [image: Twitter] http://@pgigoux [image: My QR VCard] Want a signature like mine? http://r1.wisestamp.com/r/landing?promo=22dest=http%3A%2F%2Fwww.wisestamp.com%2Femail-install%3Futm_source%3Dextension%26utm_medium%3Demail%26utm_campaign%3Dpromo_22 Click here.http://r1.wisestamp.com/r/landing?promo=22dest=http%3A%2F%2Fwww.wisestamp.com%2Femail-install%3Futm_source%3Dextension%26utm_medium%3Demail%26utm_campaign%3Dpromo_22 -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Añadir o quitar caracteres al traerme la consulta de una tabla
hola Con ltrim funcionaria: select ltrim(substr(codpro,2,8),'0') from a; El 13 de junio de 2013 13:46, Rusel Fichirdfs@gmail.com escribió: Buenas tardes compañeros, Necesito realizar una consulta que me traiga una cantidad especificas de caracteres de un campo, para ello realice lo siguiente: select substr(codpro,2,8) from a; la consulta me trae: codpro 12543906 06879412 13745921 la consulta original trae: select*from a; codpro V125439064 V068794126 V137459217 Segun esto logre lo que queria ya que elimine la primera letra y el ultimo numero pero ahora segun la primera consulta me trae valores que empiezan con 0, de que forma puede hacer para que no me muestre el cero.. Pensaba en hacer dos consultas una para que me validara los registros que comienzan con cero y otra para los que comiencen distinto a cero, luego haria un union all de ambos selects pero no se como hacer esas validaciones.. asi obtendria lo siguiente: codpro 12543906 6879412 13745921 Tendran alguna idea de como hacerlo.. Saludos y gracias! -- Cordialmente, Ing. Hellmuth I. Vargas S.
Re: [pgsql-es-ayuda] Sobre consulta
Hola Lista algo como esto?: SELECT id from (VALUES (3), (5), (8)) AS a(id) EXCEPT SELECT id FROM temporal. El 19 de junio de 2013 11:18, Dairon Dominguez Vegaddv...@uci.cu escribió: Buenos dias comunidad, mi problema es el siguiente: Tengo una lista de valores y necesito de esa lista que se muestren solo los que no están en la tabla, por ejemplo tenemos la tabla temporal con la estructura siguiente id nombre _ 5 | pepe 6 | carlos 7 | maria 8 | juan el problema es que dado una lista de ides se me impriman solo los ides que no estan por lo que si le pasara 8,3 y 5 se imprima (en columna o fila) 3 ya que 5 y 8 están. Ahh por cierto debe ser preferentemente en una consulta no usando funciones. Una idea (no es que esté correcta pero puede ayudar a explicarme) SELECT (3, 5, 8) NOT IN SELECT id FROM temporal. Saludos a todos y quedo al tanto. -- * ** 养 虎 伤 身 ** * http://www.uci.cu - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S.
Re: [pgsql-es-ayuda] duda sobre insert con comas
Hola lista Pues una solución sencilla es encerrar la carrera con signo de pesos $ con eso no interesa cuantas comillas hallan en la cadena. Ejemplo $$está cadena tiene 'muchas ' comillas$$ El 07/08/2013 11:45, Miguel Angel Hernandez Moreno miguel.hdz@gmail.com escribió: Buenos días/tardes lista Después de mucho sin saludarlos tengo el gusto de volver a compartir con ustedes, El día de hoy tengo una duda muy interesante, me acordaba que cuando insertan cadenas que contienes comillas simples ( ' ), lo que se hace es poner doble comillas simple (''). La duda es que si habra una forma de no tener que estar poniendo a todas las comillas simples otra comillas para que no marque error? Saludos y graicas!! -- ISC Miguel Angel Hernandez Moreno
Re: [pgsql-es-ayuda] Ayuda tabla oids
Hola Lista Se surge una pregunta: el vaccumlo debería incorporarse dentro de las tareas periódicas de mantenimiento de la base de datos? en mi caso, las bases nunca han almacenados objetos como imágenes o documentos, pero al consultar pg_largeobject encuentro una buena cantidad de registros. Incluso ejecute vaccumlo con la opción -n (para que solo realizara el inventario, mas no los borrara) y presenta el mensaje Test run: no large objects will be removed! Would remove 95567 large objects from database abc. El 11 de septiembre de 2013 11:08, Marcelo Retamalmreta...@cmet.netescribió: Gracias por las respuestas. El vacuumlo realizaré el viernes por la noche, por si se demora mucho. Gracias nuevamente. -Mensaje original- De: pgsql-es-ayuda-ow...@postgresql.org [mailto:pgsql-es-ayuda-ow...@postgresql.org] En nombre de Gilberto Castillo Enviado el: miércoles, 11 de septiembre de 2013 13:35 Para: Marcelo Retamal CC: 'Eduardo Morras'; pgsql-es-ayuda@postgresql.org Asunto: RE: [pgsql-es-ayuda] Ayuda tabla oids Gracias por la respuesta. Pero queda pendiente la pregunta 1, que es importantísima. usa vaccumlo Saludos, Gilberto Castillo La Habana, Cuba - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] Ayuda tabla oids
Hola Lista buenas tardes El 23 de septiembre de 2013 12:14, Lazaro Ruben Garcia Martinez lgarc...@vnz.uci.cu escribió: Si en tu base de datos utilizas objetos largos para persistir imagenes o videos, Pues eso es lo que me intriga: que en la base de datos no se almacenan objetos largos de ningún tipo, solo campos de texto ( varchar, máximo de 512 y uno que otro text), fechas, booleanos y números!! no hay mas... tu tabla lo que guarda es la referencia del oid de la tabla pg_largeobject, que es donde realmente esta almacenada la información. Por ejemplo una app java, no elimina los objetos largos, por esta razón es aconsejable instalar el módulo LO, que basicamente lo que hace es eliminar a traves de un trigger los objetos largos de la tabla pg_largeobject, vacuumlo, te ofrece la posibilidad de eliminar algun objeto largo que no fue eliminado mediante este trigger. Si tienes objetos largos en tu db, es aconsejable que instales el modulo lo y podrías ejecutar un vacuumlo de vez en cuando, en caso contrario, vacuumlo no hará nada. Un saludo a todos. De: pgsql-es-ayuda-ow...@postgresql.org [ pgsql-es-ayuda-ow...@postgresql.org] En nombre de Hellmuth Vargas [ hiv...@gmail.com] Enviado el: viernes, 20 de septiembre de 2013 14:45 CC: Lista Postgres ES Asunto: Re: [pgsql-es-ayuda] Ayuda tabla oids Hola Lista Se surge una pregunta: el vaccumlo debería incorporarse dentro de las tareas periódicas de mantenimiento de la base de datos? en mi caso, las bases nunca han almacenados objetos como imágenes o documentos, pero al consultar pg_largeobject encuentro una buena cantidad de registros. Incluso ejecute vaccumlo con la opción -n (para que solo realizara el inventario, mas no los borrara) y presenta el mensaje Test run: no large objects will be removed! Would remove 95567 large objects from database abc. El 11 de septiembre de 2013 11:08, Marcelo Retamalmreta...@cmet.net mailto:mreta...@cmet.net escribió: Gracias por las respuestas. El vacuumlo realizaré el viernes por la noche, por si se demora mucho. Gracias nuevamente. -Mensaje original- De: pgsql-es-ayuda-ow...@postgresql.orgmailto: pgsql-es-ayuda-ow...@postgresql.org [mailto:pgsql-es-ayuda-ow...@postgresql.orgmailto: pgsql-es-ayuda-ow...@postgresql.org] En nombre de Gilberto Castillo Enviado el: miércoles, 11 de septiembre de 2013 13:35 Para: Marcelo Retamal CC: 'Eduardo Morras'; pgsql-es-ayuda@postgresql.orgmailto: pgsql-es-ayuda@postgresql.org Asunto: RE: [pgsql-es-ayuda] Ayuda tabla oids Gracias por la respuesta. Pero queda pendiente la pregunta 1, que es importantísima. usa vaccumlo Saludos, Gilberto Castillo La Habana, Cuba - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org mailto:pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU! http://www.antiterroristas.cu http://justiciaparaloscinco.wordpress.com Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU! http://www.antiterroristas.cu http://justiciaparaloscinco.wordpress.com -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Fwd: Help on ṕerformance
hola lista Le sugeriría realizar un diagnostico completo a la plataforma: un excelente libro para este fin es: http://www.amazon.com/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X Pero si necesita algo mucho mas inmediato.. encontré este blog con algunos temas interesantes: http://maauso.wordpress.com/2013/09/18/resumen-instalacion-de-postgresql-9-2-optimizada-para-sistemas-de-produccion/ El 30 de septiembre de 2013 11:25, Gilberto Castillo gilberto.casti...@etecsa.cu escribió: Necesito una ayuda en el rendimiento postgresql He configurado mis archivos PostgreSQL para hacer tunning en mi servidor, sin embargo, es lento y los recursos cpu son superiores al 120% Me he quedo sin ideas de cómo resolver este problema, yo estaba tratando de buscar más información en google, pero no es suficiente, también he tratado autovacum y reindex db, pero sigue siendo lento Mi aplicación es un oyente gps que inserta más de 6.000 registros por minuto mediante un servidor tcp desarrollado en python twisted, donde no hay problemas, el problema es cuando trato de seguir los dispositivos GPS en un mapa en una real time, estoy haciendo consultas cada 6 segundos a mi base de datos desde mi aplicación django hacia la última posición mediante un procedimiento almacenado, pero la consulta es lento en más de 50 dispositivos, y la CPU empieza a consumir más del 120% de sus recursos Mi Django App se conecta a la base de datos postgres directamente, y el servidor escucha TCP para dispositivos se conecta a la base de datos con pgbouncer, no he utilizando mi aplicación web django en pgbouncer porque no quiero cruzar la conexión de dispositivos gps en el pgbouncer Uh te sugiero que pases al conexión también por pgbouncer ¿HA hecho explaing analyze de las consultas? Saludos, Gilberto Castillo La Habana, Cuba --- This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running at host imx3.etecsa.cu Visit our web-site: http://www.kaspersky.com, http://www.viruslist.com - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] Buscar letras en campo tipo char
Hola Lista Para retirar de la cadena todo lo que no sea numérico seria algo así: SELECT regexp_replace('2215VIC1', '[^0-9]','', 'g') Ahora, para retirar las filas que tenga al menos una letra, algo así: SELECT * FROM tabla WHERE columna ~ '^[0-9]+$' El 8 de octubre de 2013 18:07, Rusel Fichirdfs@gmail.com escribió: Buenos noches Estimados, Me preguntaba si conocen de algun modo de buscar las letras que se encuentren en una cadena mediante alguna funcion o comando de postgresql. Tengo varias cadenas como esta en una tabla : 2215VIC1 Necesito desaparacerlas de mi bd ya que es un codigo de barra y no seran leidas por la lectora. Gracias! -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
[pgsql-es-ayuda] Problema con el I/O cuando tenemos muchas bases de datos en un mismo servidor
Buenas tardes Lista Les envío un articulo interesante: http://www.postgresql.org.es/node/2857 -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
[pgsql-es-ayuda] Disco SSD y procedimientos de mantenimiento (VACUUM)
Hola lista Tengo una inquietud con respecto a los discos de estado sólido (SDD) y las rutinas de mantenimiento que se acostumbran implementar para la gestión de un cluster PostgreSQL: Vacuum y autovacuum (el analyze supongo que debería mantenerse) La pregunta surge pues estuve leyendo sobre estos discos su configuración y entre las cosas que señalan es que no tiene sentido realizar desfragmentacion y segundo en lo posible se debe minimizar las operaciones de escritura 'superfluas'. Qué opina Ustedes??
Re: [pgsql-es-ayuda] Disco SSD y procedimientos de mantenimiento (VACUUM)
Hola Lista Muchas Gracias por sus comentarios y/o precisiones sobre el tema, voy a implementarlo tal como sugieren. El 6 de noviembre de 2013 11:14, Alvaro Herreraalvhe...@2ndquadrant.comescribió: Hellmuth Vargas escribió: Hola lista Tengo una inquietud con respecto a los discos de estado sólido (SDD) y las rutinas de mantenimiento que se acostumbran implementar para la gestión de un cluster PostgreSQL: Vacuum y autovacuum (el analyze supongo que debería mantenerse) La pregunta surge pues estuve leyendo sobre estos discos su configuración y entre las cosas que señalan es que no tiene sentido realizar desfragmentacion Ya respondió Jaime. y segundo en lo posible se debe minimizar las operaciones de escritura 'superfluas'. Qué opina Ustedes?? Postgres no hace muchas escrituras superfluas, porque las escrituras se hacen primero en shared_buffers y se pasan a disco sólo ocasionalmente. Pero yo consideraría seriamente poner el WAL en discos rotatorios, aislado del resto del mundo, porque ahí sí que vas a ver muchas escrituras superfluas. Es posible que temp_tablespaces también sea buena idea ponerlo fuera del SSD, o al menos en un SSD separado que pueda morir antes con tranquilidad; y los archivos transientes de pgstat los puedes poner en un disco en RAM (pgstat_temp_directory creo que se llama el parámetro de configuración). Es decir, que sólo los datos permanentes queden en el SSD. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Multiplicar intervalo de tiempo en función plpgsql
Hola lista Según creo interpretar, esta generando una sentencia SQL dinamicamente dentro del procedimiento, la sintaxis seria similar a esto: select $$ AND (fecha_inicio + (duracion * CAST('1 $$ || a.unidad_duracion || $$' as INTERVAL)) = current_date) $$ from (values('DAY'),('MONTH'),('WEEK'),('YEAR')) as a(unidad_duracion); al ejecutar, genera varias lineas con cada tipo de intervalo y ademas con la sintaxis requerida. AND (fecha_inicio + (duracion * CAST('1 DAY' as INTERVAL)) = current_date) AND (fecha_inicio + (duracion * CAST('1 MONTH' as INTERVAL)) = current_date) AND (fecha_inicio + (duracion * CAST('1 WEEK' as INTERVAL)) = current_date) AND (fecha_inicio + (duracion * CAST('1 YEAR' as INTERVAL)) = current_date) El 7 de noviembre de 2013 10:56, Sebastián Villalbasvilla...@gmail.comescribió: Hola. Tengo una tabla de cursos. Entre otros campos tengo: [...] fecha_inicio date, duracion integer, unidad_duracion varchar(6) [...] unidad_duracion puede ser months, weeks, years, etc. [0] La idea es calcular si ese curso terminó o no el día de hoy. Entonces en la función tengo (entre otras cosas). WHERE AND (fecha_inicio + (duracion * interval ''1 '' || unidad_duracion || '') = current_date)... Pero no funciona. No sé cómo hacer para que dentro de comillas simples, me ponga el valor del campo months, years, etc. en lugar del string unidad_duracion. Espero haber sido claro. Saludos! [0]: http://www.postgresql.org/docs/9.1/static/datatype-datetime.html#DATATYPE-INTERVAL-ISO8601-UNITS -- Sebastián Villalba - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
[pgsql-es-ayuda] Choosing a PostgreSQL text search method
buenos días Lista En pasados días tenia una consulta que involucraba, joins, ilike y rangos de fecha y requería definir unos indices para mejorar el tiempo de repuesta. Probe varias alternativas y no obtenía efecto, finalmente encontré el siguiente articulo muy interesarte pues PostgreSQL cuenta con muchas alternativas pero debe considerar cual aplicar en un caso particular.. se los comparto: http://blog.2ndquadrant.com/text-search-strategies-in-postgresql/ -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] duda para incrementar segundos a una fecha
Hola Lista suponiendo que lo que desea es incrementar en un segundo todos los registros de la misma fecha, seria algo así: update partediario as a set fechahora = b.fechacalculada from ( select id,fecha+ cast(row_number() over(partition by fecha) || ' second' as interval) as fechacalculada from partediario ) as b where a.id = b.id; --- El 9 de enero de 2014, 13:59, Ing. Esneiker Enriquez Cabrera eenriq...@cav.desoft.cu escribió: Hola a todos. Estoy haciendo una función para actualizar una fecha en una tabla de la siguiente forma, existe una columna fecha de tipo date y tengo que poner esos valores para otra columna de tipo datetime, incrementando en 1 el campo segundos como en el siguiente ejemplo: Fechafechahora 2013-01-01 2013-01-01 00:00:01 2013-01-01 2013-01-01 00:00:02 2013-01-01 2013-01-01 00:00:03 En alguna parte de la función tengo la sentencia: update partediario set fechahora = fecha+ INTERVAL '1 second' where id = aid; pero eso no me sirve porque siempre pondría 1 segundo, quiera algo como: update partediario set fechahora = fecha+ INTERVAL '*i* second' where id = aid; pero esta segunda forma no funciona. Agradecería que alguien me pudiera ayudar. Saludos, *Ing. Esneiker Enriquez Cabrera* *Esp. B en Ciencias Informáticas* Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila. Cuba. *Telf.:* 53 33 22 8971, *email.:* eenriq...@cav.desoft.cu __ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 9226 (20131229) __ ESET NOD32 Antivirus ha comprobado este mensaje. http://www.eset.com -- Este mensaje ha sido analizado por *MailScanner*http://www.mailscanner.info/ en busca de virus y otros contenidos peligrosos, y se considera que está limpio. -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] Milisegundos entre dos campos
buenos días Lista Primero, los campos de las cuales quiere extraer los Milisegundos son de tipo DATE? porque si es así estos no tiene la precisión hasta milisegundos (incluso solo llega al día), debería emplear TIMESTAMP Trabajando con TIMESTAMP la sentencia seria algo así: select extract('milliseconds' from cast('2014-01-01 02:00:00.520' as timestamp) - cast('2014-01-01 02:00:00.400' as timestamp)) El 5 de febrero de 2014, 8:53, Daymel Bonne Solísdaymelbo...@gmail.comescribió: Hola: Puedes ver aqui: http://www.postgresql.org/docs/9.3/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT Saludos El 5 de febrero de 2014, 9:16, Gaston Ridergastonri...@hotmail.comescribió: Buenos Dias HE dado vueltas y no conseguí obtener los MILISEGUNDOS entre dos campos date Intenté hacer algo como: SELECT date_part('MILLISECONDS'::text, (fin-inicio)) as duration, alguien puede darme una mano, gracias... -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] Milisegundos entre dos campos
Gracias Alvaro por la aclaración!!! El 5 de febrero de 2014, 10:50, Alvaro Herreraalvhe...@2ndquadrant.comescribió: Hellmuth Vargas escribió: buenos días Lista Primero, los campos de las cuales quiere extraer los Milisegundos son de tipo DATE? porque si es así estos no tiene la precisión hasta milisegundos (incluso solo llega al día), debería emplear TIMESTAMP Trabajando con TIMESTAMP la sentencia seria algo así: select extract('milliseconds' from cast('2014-01-01 02:00:00.520' as timestamp) - cast('2014-01-01 02:00:00.400' as timestamp)) Esto dará 120 milisegundos como respuesta, lo cual es correcto, pero si los timestamps tienen cinco minutos de diferencia, dará cero y supongo que querrá que dé 30. Para eso lo más simple es restar los extract epoch: alvherre=# select extract(epoch from timestamp '2014-01-02 02:05:01.520') - extract(epoch from timestamp '2014-01-02 02:00:01.520'); ?column? -- 300 Para tenerlo en milisegundos, basta multiplicar por 1000. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
[pgsql-es-ayuda] log de sentencias con duracion y/o cantidad de registros devueltos
buenas tardes Lista Es posible que en el log de PostgreSQL se pueda agregar a las sentencias SELECT la cantidad de registros que generan y/o el tamaño de los datos que devuelven? De antemano Gracias -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet
Re: [pgsql-es-ayuda] log de sentencias con duracion y/o cantidad de registros devueltos
Hola Alvaro, gracias por la pronta respuesta La situación es la siguiente: tenemos un cluster PostgreSQL al cual accede aplicaciones CRM únicamente (reportes y otros accede a replicas de la base) por lo tanto las transacciones son muchas pero cortas y de poca información y así mismo las consultas que realiza a la base. estos software están implementadas con Hibernate y resulta que esta enviando exporadicamente solicitudes del FULLSCAN a ciertas tablas grandes (5 a 9 millones de registros) por lo tanto queremos implementar alertas por medio del LOG donde nos indique cuando una consulta esta generando un resultado muy grande (en términos de tamaño) y/o mucha cantidad de registros. El 6 de febrero de 2014, 20:17, Alvaro Herreraalvhe...@2ndquadrant.comescribió: Hellmuth Vargas escribió: buenas tardes Lista Es posible que en el log de PostgreSQL se pueda agregar a las sentencias SELECT la cantidad de registros que generan y/o el tamaño de los datos que devuelven? De antemano Gracias Yo nunca he visto eso. Sólo auto_explain, que guarda un EXPLAIN de ciertas consultas en el log. De ese explain quizás puedas extraer lo que buscas (pero no es EXPLAIN ANALYZE, obviamente). -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] Ayuda con select y funcion de agregacion
buenas Tardes Lista lo que quiero es sacar la maxima fecha para saber cual es la ultima venta, y el documento y su numero asi como el saldo, entonces quiero hacer algo asi select max(fecha), documento,numero,saldo from ventas where documento='FA' seria empleado Window Functions: SELECT fecha, documento,numero,saldo FROM ( SELECT max(fecha) over() AS ultima,fecha, documento,numero,saldo FROM ventas WHERE documento='FA' ) AS C WHERE ultima=fecha El 13 de marzo de 2014, 13:19, Fernando Siguenzafs...@hotmail.comescribió: Amigos como estan, queria ver si me pueden ayudar con un select algunos de los campos de la tabla que tengo son documento, numero, fecha, valor,saldo lo que quiero es sacar la maxima fecha para saber cual es la ultima venta, y el documento y su numero asi como el saldo, entonces quiero hacer algo asi select max(fecha), documento,numero,saldo from ventas where documento='FA' pero me pide que el campo documento, numero y saldo este en la clausula group by, pero si agrupo por esos campos no puedo obtener lo que quiero. Otra consulta que tengo que hacer es sacar la suma del saldo de los documentos que en la resta de l fecha actual con al fecha del documento sea mayor a 0, Como podria sacar lo que necesito? gracias de antemano por la ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] Consulta no usa los indices
Hola Lista El hecho que se defina un indice sobre una columna no implica que este siempre se empleara en una consulta, El optimizador de PostgreSQL se basa en costos los cuales obtiene el Analizador generando entre otras variables un histograma de la distribución de los valores de las columnas, si un valor ( en este caso ACTIVO) corresponde a más del 20% aprox. de los registros de una tabla, el optimizador no optara por emplear el indice sino realizar un full scan sobre la tabla. El 14 de marzo de 2014, 10:45, William Diaz Pabónwid...@gmail.comescribió: Ok, gracias. Esta es la consulta con alias, espero que sea más legible: SELECT t.consecutivo AS tarifa, cpp.oi_predio FROM tarifa AS t JOIN caracteristica_predio_tarifa AS cpt ON cpt.tarifa::text = t.consecutivo::text JOIN caracteristica_predio_oi_predio AS cpp ON cpp.caracteristica_predio::text = cpt.caracteristica_predio::text AND cpp.estado::text = 'ACTIVO'::text AND (cpp.vigencia::text = ''::text OR cpp.vigencia IS NULL OR cpp.vigencia::text = t.vigencia::text) WHERE t.estado::text = 'ACTIVO'::text El problema es que al ejecutar la consulta de demora mucho, y le pude los indices que indique en el correo anterior, pero haciendo un explain no los esta tomando y no se porque. Para la pregunta de Alvaro: Me imagino que la mayoría de los predios están en estado ACTIVO, ¿es así? Pueden haber registros activos e inactivos, pero la gran mayoría debería ser activos. El 14 de marzo de 2014, 10:38, Alvaro Herrera alvhe...@2ndquadrant.comescribió: William Diaz Pabón escribió: SELECT tarifa.consecutivo AS tarifa, caracteristica_predio_oi_predio.oi_predio FROM tarifa JOIN caracteristica_predio_tarifa ON caracteristica_predio_tarifa.tarifa::text = tarifa.consecutivo::text JOIN caracteristica_predio_oi_predio ON caracteristica_predio_oi_predio.caracteristica_predio::text = caracteristica_predio_tarifa.caracteristica_predio::text AND caracteristica_predio_oi_predio.estado::text = 'ACTIVO'::text AND (caracteristica_predio_oi_predio.vigencia::text = ''::text OR caracteristica_predio_oi_predio.vigencia IS NULL OR caracteristica_predio_oi_predio.vigencia::text = tarifa.vigencia::text) WHERE tarifa.estado::text = 'ACTIVO'::text Me imagino que la mayoría de los predios están en estado ACTIVO, ¿es así? PD: usa aliases en la cláusula FROM para que tus consultas sean más legibles. FROM tarifa AS t JOIN ... En la ensalada de letras de arriba es difícil hasta saber cuántas tablas están involucradas. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Éxitos. Cordialmente, *William Diaz Pabón* *, Especialista en Soluciones Informáticas* Bogotá, Colombia Tel: +57 (300) 3917774 http://planetapleno.blogspot.com/ http://tutorialestecnicos.blogspot.com/ -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] OBTENER EL PENÚLTIMO REGISTRO DE UNA TABLA CON BASE EN EL EPOCH
Hola Lista Algo como: SELECT idColumna, lag(idColumna) OVER (ORDER BY idColumna) AS idpenultimo FROM tabla ORDER BY idColumna DESC LIMIT 1; El 8 de mayo de 2014, 15:59, Luis Fernando Ortiz Vera lfernandor...@gmail.com escribió: Apreciada lista, como puedo obtener el penúltimo registro de una tabla en la que la llave primaria es un valor epoch (bigint), y donde dicha tabla no cuenta con un consecutivo. Atentamente, -- *Luis Fernando Ortiz Vera.* *+Luis Fernando Ortiz Vera | **@lfernandortiz * |Cúcuta|Colombia| -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] ayuda restauracion
Hola alessandra 1. Si es un backup de productivo para restaurar en pruebas le es posible generarlo nativo? ( opción c del parámetro -F de pg_dump para restaurarlo con pg_restore o si por versión no permite, al menos que no lo genere como INSERT sino con COPY) o si es toda la base de producción y la plataforma de pruebas es igual, general un backup físico en caliente y restaurar el mismo en pruebas 2. Modificar el parámetro fsync a off en el servidor POSTGRESQL de pruebas y reiniciar el servicio antes de proceder con la restauración con psql o pg_restore (según sea el caso). Una vez finalizada puedes volver a colocar el parámetro en on El 27/07/2014 09:10, Alessandra Campos Alfaro alessc...@gmail.com escribió: hola amigos estoy haciendo rutinas de restaurar un archivo de base de datos (de 500mb) con fines de desarrollo en linux pero tarde casi 8 horas, mediante el sieguiente comando psql -U postgres -d mibase respaldo_base.sql no h encontrado la raozn por la cual demora tanto .. se queda bastante tiempo en los INSERT alguna sugerencia? Gracias Aless
[pgsql-es-ayuda] consulta sobre Data Checksums en replicas
Hola Lista Que tan pertinente y/o posible es contar con el mecanismo de Data Checksums pero solo en las replicas de una base de datos y no en la Master con el fin de contar todo el tiempo con un backup en linea 100% fiable?? Gracias Lista -- Cordialmente, Hellmuth I. Vargas S.
Re: [pgsql-es-ayuda] consulta sobre Data Checksums en replicas
Hola Raul Gracias por la respuesta, no, el estado de la sincronización entre la replica y la master no es la cuestión, sino implementar data checksum en la replica y NO en la master correspondiente, con el fin de que la copia sea aun mas fiable. 2014-08-05 9:03 GMT-05:00 raul andrez gutierrez alejo rauland...@gmail.com : para identificar el estado de la replicacion de Streaming Replication yo uso en el master: SELECT NOW() , usename , application_name , state client_addr, sent_offset - (replay_offset - (sent_xlog - replay_xlog) * 255 * 16 ^ 6 ) AS byte_lag FROM ( SELECT client_addr, ('x' || lpad(split_part(sent_location, '/', 1), 8, '0'))::bit(32)::bigint AS sent_xlog, ('x' || lpad(split_part(replay_location, '/', 1), 8, '0'))::bit(32)::bigint AS replay_xlog, ('x' || lpad(split_part(sent_location, '/', 2), 8, '0'))::bit(32)::bigint AS sent_offset, ('x' || lpad(split_part(replay_location, '/', 2), 8, '0'))::bit(32)::bigint AS replay_offset ,usename , application_name , state FROM pg_stat_replication ) AS s; El 5 de agosto de 2014, 8:39, Hellmuth Vargas hiv...@gmail.com escribió: Hola Lista Que tan pertinente y/o posible es contar con el mecanismo de Data Checksums pero solo en las replicas de una base de datos y no en la Master con el fin de contar todo el tiempo con un backup en linea 100% fiable?? Gracias Lista -- Cordialmente, Hellmuth I. Vargas S. -- Raul Andres Gutierrez Alejo -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] consulta sobre Data Checksums en replicas
Hola Martin No, si me refería a la replica, porque en alguna oportunidad una Master se corrompio (mas bien el sistema de archivos de Linux, faltas de corriente recurrentes y fallas en la UPS... el paraiso en pocas palabras) y cuando entro a operar la replica como master nos dimos cuenta que tenia tablas con paginas invalidas.. afortunadamente teníamos otra replica en otro servidor completamente independiente la cual se encontraba bien, pero en principio estábamos confiados en que supuestamente la replica estaba bien.. por eso preguntaba que si para mejorar la confiabilidad de las replicas se puede implementar en ellas page checksum pues estas generalmente no tiene tanta carga de I/O ni compromiso en respuesta agil como sucede con las Master El 5 de agosto de 2014, 19:57, Martín Marquésmar...@2ndquadrant.com escribió: El día 5 de agosto de 2014, 11:15, Alvaro Herrera alvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: Hola Lista Que tan pertinente y/o posible es contar con el mecanismo de Data Checksums pero solo en las replicas de una base de datos y no en la Master con el fin de contar todo el tiempo con un backup en linea 100% fiable?? Gracias Lista AFAIK lamentablemente no es posible activar data checksum sólo en la réplica. El parámetro tiene que estar activado en el maestro para que el checksum se calcule. No entiendo porque quiere un page checksum en el standby. ¿No será que lo que quiere Hellmuth es verificar el flujo antes de que se aplique en el esclavo? De ser así, eso ya esta implementado en los verificadores CRC de los WAL. Saludos, -- Martín Marqués http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] consulta sobre Data Checksums en replicas
*Hola Martin* Hola Martin No, si me refería a la replica, porque en alguna oportunidad una Master se corrompio (mas bien el sistema de archivos de Linux, faltas de corriente recurrentes y fallas en la UPS... el paraiso en pocas palabras) y cuando entro a operar la replica como master nos dimos cuenta que tenia tablas con paginas invalidas.. afortunadamente teníamos otra replica en otro servidor completamente independiente la cual se encontraba bien, pero en principio estábamos confiados en que supuestamente la replica estaba bien.. por eso Como puede estar bien un replica si el maestro esta corrupto? Creo que es mejor si tratan de monitorear mejor los problemas de los servidores (usar SMART por ejemplo para ver corrupcion de FS) preguntaba que si para mejorar la confiabilidad de las replicas se puede implementar en ellas page checksum pues estas generalmente no tiene tanta carga de I/O ni compromiso en respuesta agil como sucede con las Master Habría que ver como se corrompió esa replica. O sea, porque esa replica estaba corrompida y la otra no. No será que tomaste un basebackup sobre datos en disco ya corrupto? Saludos, -- Martín Marqués http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- *Pues, la situación fue diferente en cada caso:* *- La master, por apagados abruptos, se corrompio el sistema de archivos (linux, ext4)* *- La replica 1 resulto con un problema de segmentos de paginas invalidas, (problema también de disco? sistema de archivos?) finalmente no lo determinamos Pero eso no significa (ni implica) que los WAL sincronizados estuviesen corruptos ni mucho menos. Pues la prueba esta en que la replica 2 se encontraba en perfectas condiciones. Ambas replicas fueron generadas al mismo tiempo después una actualización de versión de la Master (9.1 a 9.3).* *Muchas Gracias* Cordialmente, Ing. Hellmuth I. Vargas S.
Re: [pgsql-es-ayuda] Duda con procedimientos almacenados.
Hola Lista Las consideraciones son las siguientes - lógica de negocio en la base de datos. Pros: el desempeño, pues no hay que trasladar los datos a la aplicación para realizar las operaciones y cálculos requeridos, todo se realizan 'locales' en la base de datos y la aplicación se convierte básicamente solo presentación, ademas los framework como Hibernate tiene el inconveniente que que generan código, o mas bien sentencias, sub optimas lo que también afecta desempeño e incluso sobrecargan la base de datos. Pros: PostgreSQL soporta actualmente una gran gama de Lenguajes (PL/java, PL/Python, PL/Ruby, etc) que permiten diseñar los procedimientos con altos niveles de mantenimiento y aplicando patrones de diseño y Programación Orientada a Objetos, entre otros paradigmas de desarrollo. Contra: Portabilidad, si desarrolla aplicaciones para diferentes clientes con bases de datos heterogéneas, lo mejor es trasladar la lógica de negocio a nivel de aplicación y trabajar con Hibernate que solo con archivos de configuración puede cambiar el léxico a la base de datos seleccionada. El 23 de agosto de 2014, 13:09, Mario Jiménez Carrasco mario.carra...@gmail.com escribió: Gracias por el aporte Fede En efecto, ese fue un tema por el cual optamos por meter el codigo de logica de negocio en la aplicación, por la posibilidad de que los clientes quisieran migrar de base de datos... Sin embargo, el cliente actual comenta y justifica su necesidad de mover los procesos a procedimientos almacenados en el hecho de que el servidor de base de datos debe cargar con todo el procesamiento y liberar de esa ejecución al servidor de aplicaciones... Hemos tratado de explicarle y justificarle que aun estando la logica de negocio en la aplicación el proceso de consultas lo lleva a cabo el motor de la base de datos, pero no conseguimos convencerlo, por ello ando buscando documentación u opiniones para poder tener los elementos suficientes... o algun tipo de pruebas de benchmarks que se pudieran ejecutar?... Gracias.. Saludos... Atte. Mario Jiménez Carrasco. 2014-08-23 13:03 GMT-05:00 Fede Martinez federicoemarti...@gmail.com: En mi experiencia, el codigo en stored procedures es mas dificil de extender, modificar y demas. Hay herramientas que un lenguaje como java te da (herencia, polimorfismo, etc) que no tenes con stored procedures. Tenes mas herramientas para testing, etc. Por otro lado, si usas stored procedures. Perdes la posibilidad de pasar a otro motor de bases de datos el dia de mañana, no se si es un posible escenario para vos no. Igualmente, esto es solo basado en mi experiencia personal. Si vas a hacer la migracion asegurate de tener una buena base de testing para que puedas tener seguridad de que el codigo nuevo funciona igual. El 23/08/2014 14:53, Mario Jiménez Carrasco mario.carra...@gmail.com escribió: Buen día amigos... Espero este sea el medio adecuado para obtener ayuda sobre la duda que tengo... Estoy desarrollando una aplicación en JAVA usando Hibernate y PostgreSQL, tengo algunos procesos de lógica de negocio que estan en la capa de servicios de la aplicación... Hace algunos días me comentaron sobre la idea de migrar la lógica a procedimientos almacenados en la base de datos... Mi duda es: ¿Que tan recomendable sería hacer dicha migración?.. o en su caso, ¿Qué consideraciones debería tomar en cuanta para determinar si debo llevar a cabo la migración?... He buscado información en la lista sin encontrar mucho respecto a este punto para la toma de decisión, si alguien puede ayudarme orientándome o en su caso darme referencias para lectura, se agradece de antemano... Saludos... Atte. Mario Jiménez Carrasco. -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] copiar tablas a esquema
Hola Lista: Clone schema https://wiki.postgresql.org/wiki/Clone_schema http://stackoverflow.com/questions/12572088/duplicate-postgresql-schema-including-sequences http://stackoverflow.com/questions/18216462/how-to-duplicate-schemas-in-postgresql El 15 de septiembre de 2014, 16:37, Gilberto Castillo gilberto.casti...@etecsa.cu escribió: Buenas tardes a todos estoy trabajando con una BD la cual debo guardar su estado cada cierto tiempo digamos 3 meses para compararla. asi que estuve pensando si en vez de hacer la consulta por fecha de la tabla se podria quizar guardar todas las tablas en un esquema diferente. es decir tengo alrededor de 70 tablas que son lo que llamamos la linea base del catastro. en el tiempo podrian aumentar tablas ademas de registros. me preguntaba si alguien conoce algun comando que por ejemplo copie todas estas tablas del public a un esquema que se llame por decir base1 Alter Table es tu aleado luego debes crear una script donde coloques todas la tablas y un job para que lo llame. Saludos, Gilberto Castillo La Habana, Cuba --- This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running at host imx3.etecsa.cu Visit our web-site: http://www.kaspersky.com, http://www.viruslist.com - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] Select anidado dentro de Case when
Hola lista SELECT c1,c2 FROM tabla WHERE c1='ME' AND CASE WHEN $1='1' THEN c2='2013' ELSE TRUE END; El 21/09/2014 09:30, Felipe Araoz Ramos far...@gmail.com escribió: Buen dias amigos del foro Estoy queriendo hacer mas flexible mi función y quiero hacer algo como esto; anidar select dentro de un bloque case,... es posible hacer esto begin return query case when $1='1' then select c1,c2 from tabla where c1='ME' and c2='2013' else select c1,c2 from tabla where c1='ME' end; end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100 ROWS 1000; Gracias de antemano *Felipe Araoz Ramos* RPM #941990605 / 941990605 RPC 992760385 NXT 822*9500 / 998229500
Re: [pgsql-es-ayuda] Select anidado dentro de Case when
Hola Lista Y asi: begin return query select c1,c2 from tabla where c1='ME' and case $1 when '1' then c2='2013' else true end; end; El 22 de septiembre de 2014, 14:17, Alvaro Herreraalvhe...@2ndquadrant.com escribió: Felipe Araoz Ramos escribió: Buen dias amigos del foro Estoy queriendo hacer mas flexible mi función y quiero hacer algo como esto; anidar select dentro de un bloque case,... es posible hacer esto begin return query case when $1='1' then select c1,c2 from tabla where c1='ME' and c2='2013' else select c1,c2 from tabla where c1='ME' end; end; Me parece que no debería funcionar, pero sí lo siguiente: begin case $1 when '1' then return query select c1,c2 from tabla where c1='ME' and c2='2013'; else return query select c1,c2 from tabla where c1='ME'; end case; end; Nota que el CASE que se está usando aquí no es el de SQL, sino el de plpgsql, y por eso tienes que terminarlo con END CASE en lugar de END, y la razón por la que tienes que poner los ; al final de cada RETURN (además de poner el RETURN en cada brazo en lugar de uno solo). Mira en www.postgresql.org/docs/9.3/static/plpgsql-control-structures.html -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] Preguntas sobre webminar BDR
Hola Lista Pues según lo que entendí, se trataba de un ejemplo de como seria una posible plataforma en la cual se obtienen las sentencias y/o operaciones DML que se dan en PostgreSQL para extraerlas y/o aplicarlas a otra plataforma. El 25 de septiembre de 2014, 14:34, Eduardo Morrasemorr...@yahoo.es escribió: Muy buenas, una pregunta sobre BDR que deje en el chat de Youtube, y he visto que Emanuel pone que las hagamos de nuevo aqui. Segun he entendido, BDR depende de RabbitMQ para mandar los mensajes entre los distintos nodos maestros. Es posible usar otra libreria distinta, como nanomsg? De una manera sencilla me refiero. Gracias por el webminar y por desarrollar BDR. --- --- Eduardo Morras emorr...@yahoo.es - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
Re: [pgsql-es-ayuda] Preguntas sobre webminar BDR
El 25 de septiembre de 2014, 16:37, Alvaro Herreraalvhe...@2ndquadrant.com escribió: Eduardo Morras escribió: On Thu, 25 Sep 2014 14:48:51 -0500 Hellmuth Vargas hiv...@gmail.com wrote: Hola Lista Pues según lo que entendí, se trataba de un ejemplo de como seria una posible plataforma en la cual se obtienen las sentencias y/o operaciones DML que se dan en PostgreSQL para extraerlas y/o aplicarlas a otra plataforma. ... Crei que la implementacion que tienen ya hecha usa RabbitMQ de forma definitiva. Nanomsg esta hecho en C, no en Erlang, funciona a mas bajo nivel, distintas arquitecturas de distribucion de mensajes e independiente de protocolos de red. Yo lo estoy usando activamente y portando proyectos desde ZeroMQ y RabbitMQ. No sé de dónde salió lo de RabbitMQ. La implementación de BDR no usa RabbitMQ ni ninguna otra biblioteca de encolamiento; usa una implementación propia. No es posible usar RabbitMQ en conjunto con BDR. En Postgres 9.4 existe una funcionalidad nueva que se llama logical decoding; lo que hace es emitir mensajes que representan cada cambio efectuado en los datos a nivel lógico. Se pueden escribir plugins que reciban esos mensajes y los utilicen para cualquier cosa. En el caso de BDR existe un plugin muy específico de BDR que lo que hace es tomar esos mensajes, mandarlos a un servidor remoto, y re-ejecutarlos allá; con esto se consigua la replicación. Lo de RabbitMQ serviría, hipotéticamente, para tomar esos mensajes de logical decoding y hacer algo con ellos desde allí. Pero ojo que no tendría nada que ver con BDR. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda Exacto, la confusión surge porque dentro de la presentación de Emanuel Calvo Introducción a BDR se menciono como una funcionalidad potencial que se podría desprender y en la cual se pueda extraer las instrucciones y aplicarlas en otros sistemas. Link del video... https://www.youtube.com/watch?v=ATZkeYzIzhQ -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate PostgreSQL DBA
[pgsql-es-ayuda] Módulo pg_stat_staments en Master, también en réplicas?
Hola lista Tengo un servidor Postgresql 9.3 Master con dos réplicas, quiero implementar el modulo pg_stat_staments en la Master.. Es necesario colocarlo también en las réplicas?? Gracias lista
Re: [pgsql-es-ayuda] Estadistica por fechas
Hola Lista Creo que se deben validar dos condiciones: - Considera solo los ticket abiertos en meses anteriores al actual, pues este mes aun no se ha terminado... - La fecha_termino es null, significa que el ticket aun esta abierto. - La fecha_termino es de un mes diferente (y se supone posterior) a la fecha_ingreso, el ticket se abrió en un mes y se cerro un mes posterior, por lo tanto aun estaba abierto al finalizar el mes. Esta seria la consulta: SELECT TO_CHAR(fecha_ingreso,'-MM'), COUNT(*) FROM ( VALUES ('1','1','2014-01-01'::timestamp,'2014-01-02'::timestamp), -- no cumple, cerrado el mismo mes ('2','2','2014-01-02'::timestamp,null::timestamp), -- cumple, aun abierto ('3','3','2014-01-05'::timestamp,'2014-02-01'::timestamp), -- cumple, cerrado el siguiente mes ('4','4','2014-02-05'::timestamp,'2014-02-10'::timestamp), -- no cumple, cerrado el mismo mes ('5','5','2014-02-28'::timestamp,'2014-03-01'::timestamp), -- cumple, cerrado el siguiente mes ('6','6','2014-12-01'::timestamp,null::timestamp)-- no cumple, abierto pero en el presente mes... ) AS tickets(id,numero,fecha_ingreso,fecha_termino) WHERE date_trunc('MONTH',fecha_ingreso)date_trunc('MONTH',now()) AND -- solo para los ticket abiertos en meses diferentes al actual ( fecha_termino IS NULL -- aun esta abierto OR to_char(fecha_ingreso,'-MM')to_char(fecha_termino,'-MM') -- termino un mes diferente (y posterior) al de inicio osea estaba abierto aun al fin de mes ) GROUP BY 1 Faltaría considerar si el ticket dura abierto 2 o mas meses pues debería considerarse ademas para cada uno de los meses en los cuales permaneció abierto... El 3 de diciembre de 2014, 5:38 p. m., raul andrez gutierrez alejo rauland...@gmail.com escribió: Hola. seria algo asi. SELECT TO_CHAR(fecha_ingreso,'-MM') AS mes, count(*)FROM tablaWHERE fecha_ingreso IS NOT NULL AND fecha_termino IS NULLGROUP BY TO_CHAR(fecha_ingreso,'-MM')ORDER BY TO_CHAR(fecha_ingreso,'-MM') nota:el order by genera mucha carga computacional El 3 de diciembre de 2014, 17:31, Aland Laines aland.lai...@gmail.com escribió: Hola Gilberto, los tickets no necesariamente son cerrados el mismo mes, los que no son cerrado estan en null, pero quieren un historico mes a mes y por año, yo al menos quisiera lograr la estadistica mes a mes del ultimo año. Saludos, [image: --] Aland Laines Calonge [image: http://]about.me/aland.laines http://about.me/aland.laines *programador de aplicativos web* Twitter: @lainessolutions Comunidad CakePHP en Español Google+ https://plus.google.com/communities/106077549014949879129 El 3 de diciembre de 2014, 17:02, Gilberto Castillo gilberto.casti...@etecsa.cu escribió: Hola compañeros, tengo una consulta que me tiene trabado, tengo una tabla de tickets: id numero fecha_ingreso fecha_termino La consulta que me piden es cuantos tickets estuvieron activos (no fueron finalizados) al final de cada mes. Supongo que todo el que tenga fecha_termino en null o algo así... aun esta abierto. ¿Un tickets, debe ser obligatoriamente cerrado en el mismo mes? Saludos, Gilberto Castillo La Habana, Cuba --- This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running at host imx3.etecsa.cu Visit our web-site: http://www.kaspersky.com, http://www.viruslist.com -- Raul Andres Gutierrez Alejo -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate
Re: [pgsql-es-ayuda] Query NOt In para optimizar
Hola Lista Empleando except funciona mejor: SELECT A.fid,A.fbanco,A.fecha FROM A JOIN ( SELECT fid FROM A EXCEPT SELECT pid FROM B ) as C on A.fid=C.fid WHERE A.fbanco = 1 GROUP BY 1,2,3 El 15 de diciembre de 2014, 7:17 p. m., Edwin Quijada listas_quij...@hotmail.com escribió: Hola! Estoy haciedno un select que implica dos tablas , es mas bien un except, hasta aho todo bien ya lo hice pero ando buscando una forma un poco mas rapida de lograr lo que quiero create table A( fid int, fbanco int, name varchar(20), fecha timestamp ); create table B( pid int, user varchar(20), address varchar(30), fecha_Actual date ) Necesito los registros que estan en A pero no estan en B, hice algo como esto select fid,fbanco,fecha from A where fbanco = 1 AND fid NOT IN(select pid FROM B ) group by 1,2,3 Esto funciona pero es un poco lento , alguien podria darme una idea de hacer algo un poco mas optimo. La tabla A tiene 300K y la B 200K. En otras palabras quiero todos los que estan en A pero no en B pero agrupados ya que A es una tabla de detalle por eso es que agrupo. Pense en una vista pero las vistas no se pueden indexar , o si ? Gracias -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate
Re: [pgsql-es-ayuda] Query NOt In para optimizar
Hola lista Martín disculpe la ignorancia, pero tengo entendido que si se coloca una condición filtró en el where de la tabla B, el left outer se convierte en inner join y se pierde el efecto. Por favor corrijame si me equivoco El 16/12/2014 05:28, Martín Marqués mar...@2ndquadrant.com escribió: El 15/12/14 a las 21:17, Edwin Quijada escribió: Hola! Estoy haciedno un select que implica dos tablas , es mas bien un except, hasta aho todo bien ya lo hice pero ando buscando una forma un poco mas rapida de lograr lo que quiero create table A( fid int,fbanco int, name varchar(20), fecha timestamp ); create table B( pid int,user varchar(20), address varchar(30),fecha_Actual date ) Necesito los registros que estan en A pero no estan en B, hice algo como esto select fid,fbanco,fecha from A where fbanco = 1 AND fid NOT IN(select pid FROM B ) group by 1,2,3 SELECT fid, fbanco, fecha FROM A LEFT OUTER JOIN B ON (A.fid=B.pid) WHERE B.pid IS NULL GROUP BY 1,2,3; Ese subselect con el IN va a ser muy lento con la cantidad de registros que tiene la tabla B. Es mucho más optimo unir las tablas y filtrar las que tuplas de la tabla A que no tienen su correspondiente referencia en B. Saludos, -- Martín Marquéshttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] Query NOt In para optimizar
Ahh ok no había probando nunca con un IS NULL, gracias por la corrección!!! El 16/12/2014 08:20, Martín Marqués mar...@2ndquadrant.com escribió: El 16/12/14 a las 10:07, Hellmuth Vargas escribió: Hola lista Martín disculpe la ignorancia, pero tengo entendido que si se coloca una condición filtró en el where de la tabla B, el left outer se convierte en inner join y se pierde el efecto. Por favor corrijame si me equivoco Te corrijo! ;) Prueba con un EXPLAIN ANALYZE para ver como PostgreSQL planifica la consulta. explain analyze select * from personas where codigo NOT IN (SELECT persona FROM usuarios); QUERY PLAN Seq Scan on personas (cost=3084.72..6036.51 rows=62552 width=46) (actual time=111.600..162.448 rows=15 loops=1) Filter: (NOT (hashed SubPlan 1)) Rows Removed by Filter: 125088 SubPlan 1 - Seq Scan on usuarios (cost=0.00..2714.98 rows=147898 width=4) (actual time=0.011..31.877 rows=147898 loops=1) Total runtime: 162.520 ms explain analyze select * from personas p LEFT OUTER JOIN usuarios u ON (p.codigo=u.persona) where u.persona IS NULL; QUERY PLAN --- Hash Anti Join (cost=5719.70..18174.42 rows=13388 width=83) (actual time=74.550..195.594 rows=15 loops=1) Hash Cond: (p.codigo = u.persona) - Seq Scan on personas p (cost=0.00..2639.03 rows=125103 width=46) (actual time=0.004..19.270 rows=125103 loops=1) - Hash (cost=2714.98..2714.98 rows=147898 width=37) (actual time=70.090..70.090 rows=147898 loops=1) Buckets: 16384 Batches: 2 Memory Usage: 4749kB - Seq Scan on usuarios u (cost=0.00..2714.98 rows=147898 width=37) (actual time=0.003..23.560 rows=147898 loops=1) Total runtime: 195.660 ms En este caso, anduvo más rápido con el NOT IN (), pero eso depende mucho de cuantos datos se esten filtrando, cuantos datos totales haya en cada tabla, etc. 200k no es una gran tabla, IMO. Saludos, -- Martín Marquéshttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services
Re: [pgsql-es-ayuda] consulta sobre sequencias globales de BDR
Hola Alvaro y general lista Muchas gracias por todos sus aportes!!! , voy a tratar de configurar un entorno que me permita obtener tráfico de producción en pruebas y verificar el funcionamiento de las secuencias globales en un ambiente más real .. Les estaré informando... Hellmuth Vargas escribió: Si tiene razón, emplee generate_series() con el fin de verificar el comportamiento con miles de transacciones pero no seria el nivel real de transacciones en mi caso, aunque el escenario que estamos planteando para la empresa si tiene un alto nivel de transacciones concurrentes pues en la base de datos almacenan todos los eventos de las llamadas, IVR, logs de operación, calificación y otros datos relevantes... Hmm. Para estas cosas lo importante es la latencia, ¿no? Si el servidor BDR se bloquea de uno a diez segundos cada cinco minutos, puede ser fatal. ¿O tienes cierta tolerancia a un pico ocasional de latencia? Lo que te iba a decir es que la manera más conveniente de lidiar con este problema es hacer un bucle de reintento: cada vez que te sale un error de la secuencia, haz dormir 100ms a la aplicación y luego trata otra vez la transacción; repite hasta que funcione. Es lo que recomienda la página de secuencias globales que citó Jaime. Si, si lo tengo claro pero cuanto debería ser este tiempo de propagación razonable... pues en le esquema que estoy probando están montados en la misma maquina con diferente puerto, y no se penaliza por red y otros factores... Entiendo que unos pocos segundos o un par de minutos. Depende de la carga: mientras más cargados estén los servidores, más retardo habrá. En un servidor de pruebas donde estés ejecutando órdenes SQL interactivamente, el retardo será casi cero. Corolario: puedes disminuir el retardo mejorando el hardware. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services
[pgsql-es-ayuda] consulta sobre sequencias globales de BDR
Hola Lista: Estoy realizado pruebas con BDR de PostgreSQL anunciado recientemente, comparto una hilo de conversación que sostuve con Jaime Casanova, entre otros, sobre el tema especifico del comportamiento de secuencias globales. La inquietud surge porque trabajo en un call center donde se realizan miles de transacciones por segundo de diferentes clientes a un único cluster de base de datos PostgreSQL (con replicacion asincronica obviamente), y por balanceo de carga, disponibilidad, seguridad entre otros, seria extraordinario contar con la replicacion multimaster. -- Buenos días Actualmente me encuentro realizando una prueba con BDR, para esto he seguido las pautas descritas en https://wiki.postgresql.org/wiki/BDR_Quick_Start luego ejecute las siguientes sentencias: bdrdemo=# CREATE SEQUENCE seq_tabla2 USING bdr; CREATE SEQUENCE bdrdemo=# create table prueba2(id bigint primary key default nextval('seq_tabla2'), origen text); CREATE TABLE --servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,1) as a(id); INSERT 0 2 --servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,1) as a(id); INSERT 0 2 -- Acontinuación envío estas dos sentencias cada una en cada uno de los servidores: --servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. --servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. y genera el error que hay se presenta, toca esperar un buen tiempo para que vuelva a estar disponible -- servidor 1 bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2a'); nextval - 10001 (1 row) -- servidor 2 bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2'); nextval -- 14314001 (1 row) -- pero trato nuevamente de enviar el insert masivo y vuelve a generar error: -- servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. -- servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. La pregunta es si este comportamiento es normal? o debo configurar algo adicional o estoy haciendo algo mal? LE agradezco de antemano su atención, colaboración y tiempo -- Jaime Casanova respondio: -- Forwarded message -- From: Hellmuth Vargas To: Cc: Date: Mon, 26 Jan 2015 21:49:55 -0500 Subject: consulta sobre BDR [...] -- servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. -- servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. La pregunta es si este comportamiento es normal? o debo configurar algo adicional o estoy haciendo algo mal? Le agradezco de antemano su atención
Re: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR
Hola Geraldo Gracias por la sugerencia, si lo monte y configure pero cuando ya iba a montar un backup de mi base me di cuenta que no es tan transparente: toca registrar cada entidad y generar una especie de primary key adicionales .. En fin... y el tema es que ya tengo un esquema con datos existentes sobre una aplicación existente construida con un ORM (hibernate) entonces implica muchos cambios.. Me pareció interesante para una aplicación nueva desde cero ... Me pareció más fácil migrar al esquema BDR mi aplicación preexistentes con un esquema complejo con muchos datos.. El ene 30, 2015 6:56 PM, Gerardo Herzig gher...@fmed.uba.ar escribió: Probaste con postgres-xc? Es un postgres modificado para usarse en entornos distribuidos, con soluciones nativas de replicacion y balanceo. Tal vez pueda ser util aqui. http://sourceforge.net/projects/postgres-xc/ Saludos, Gerardo - Mensaje original - De: Hellmuth Vargas hiv...@gmail.com Para: Lista Postgres ES pgsql-es-ayuda@postgresql.org Enviados: Viernes, 30 de Enero 2015 6:27:22 Asunto: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR Hola lista No llego el anterior correo, lo reenvío.. -- Mensaje reenviado -- De: Hellmuth Vargas hiv...@gmail.com Fecha: ene 29, 2015 2:49 AM Asunto: consulta sobre sequencias globales de BDR Para: Lista Postgres ES pgsql-es-ayuda@postgresql.org Cc: Hola Lista: Estoy realizado pruebas con BDR de PostgreSQL anunciado recientemente, comparto una hilo de conversación que sostuve con Jaime Casanova, entre otros, sobre el tema especifico del comportamiento de secuencias globales. La inquietud surge porque trabajo en un call center donde se realizan miles de transacciones por segundo de diferentes clientes a un único cluster de base de datos PostgreSQL (con replicacion asincronica obviamente), y por balanceo de carga, disponibilidad, seguridad entre otros, seria extraordinario contar con la replicacion multimaster. -- Buenos días Actualmente me encuentro realizando una prueba con BDR, para esto he seguido las pautas descritas en https://wiki.postgresql.org/wiki/BDR_Quick_Start luego ejecute las siguientes sentencias: bdrdemo=# CREATE SEQUENCE seq_tabla2 USING bdr; CREATE SEQUENCE bdrdemo=# create table prueba2(id bigint primary key default nextval('seq_tabla2'), origen text); CREATE TABLE --servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,1) as a(id); INSERT 0 2 --servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,1) as a(id); INSERT 0 2 -- Acontinuación envío estas dos sentencias cada una en cada uno de los servidores: --servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. --servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. y genera el error que hay se presenta, toca esperar un buen tiempo para que vuelva a estar disponible -- servidor 1 bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2a'); nextval - 10001 (1 row) -- servidor 2 bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2'); nextval -- 14314001 (1 row) -- pero trato nuevamente de enviar el insert masivo y vuelve a generar error: -- servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT
Re: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR
postgres pg_restore: [archiver (db)] could not execute query: ERROR: database is locked against ddl by another node HINT: Node (6096143136483713623,1,17756) in the cluster is already performing DDL Command was: CREATE INDEX idx_tmp_busqueda_identificacion ON tmp_busqueda USING btree (numerodocumento, tipodocumento); pg_restore: finished item 20671 INDEX idx_tmp_busqueda_identificacion pg_restore: launching item 20672 INDEX idx_tmp_cruce_uniqueid pg_restore: creating INDEX idx_tmp_cruce_uniqueid pg_restore: [archiver (db)] Error from TOC entry 20672; 1259 271957407 INDEX idx_tmp_cruce_uniqueid postgres pg_restore: [archiver (db)] could not execute query: ERROR: database is locked against ddl by another node HINT: Node (6096143136483713623,1,17756) in the cluster is already performing DDL Command was: CREATE INDEX idx_tmp_cruce_uniqueid ON tmp_cruce USING btree (uniqueid); pg_restore: finished item 20672 INDEX idx_tmp_cruce_uniqueid pg_restore: launching item 21534 MATERIALIZED VIEW DATA mv_tipificacion pg_restore: creating MATERIALIZED VIEW DATA mv_tipificacion pg_restore: [archiver (db)] Error from TOC entry 21534; 0 273374704 MATERIALIZED VIEW DATA mv_tipificacion postgres pg_restore: [archiver (db)] could not execute query: ERROR: is not supported when bdr is active Command was: REFRESH MATERIALIZED VIEW mv_tipificacion; pg_restore: finished item 21534 MATERIALIZED VIEW DATA mv_tipificacion pg_restore: launching item 20183 CONSTRAINT actividadbase_pkey pg_restore: creating CONSTRAINT actividadbase_pkey pg_restore: [archiver (db)] Error from TOC entry 20183; 2606 19741 CONSTRAINT actividadbase_pkey milledesarrollo pg_restore: [archiver (db)] could not execute query: ERROR: database is locked against ddl by another node HINT: Node (6096143136483713623,1,17756) in the cluster is already performing DDL Command was: ALTER TABLE ONLY actividadbase ADD CONSTRAINT actividadbase_pkey PRIMARY KEY (id); Y de ahí en adelante no creo ningún indice ni constraint, solo vuelve a funcionar cuando termina el ciclo paralelo; pg_restore: finished item 20681 INDEX idx_mv_tipificacion_id pg_restore: finished main parallel loop El feb 3, 2015 7:50 PM, Gerardo Herzig gher...@fmed.uba.ar escribió: - Mensaje original - De: Jaime Casanova ja...@2ndquadrant.com Para: Gerardo Herzig gher...@fmed.uba.ar CC: Hellmuth Vargas hiv...@gmail.com, Lista Postgres ES pgsql-es-ayuda@postgresql.org Enviados: Martes, 3 de Febrero 2015 1:24:08 Asunto: Re: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR 2015-01-30 18:56 GMT-05:00 Gerardo Herzig gher...@fmed.uba.ar: Probaste con postgres-xc? Es un postgres modificado para usarse en entornos distribuidos, con soluciones nativas de replicacion y balanceo. Tal vez pueda ser util aqui. Como maneja postgres-xc el problema de las secuencias? no encontré nada concreto pero me imagino que asigna los valores a través del GTM (el cual no es solo un punto central de fallas sino también un posible cuello de botella). Exacto Jaime. Y ciertamente, en situaciones de alta carga es candidato a convertirse en cuello de botella. Lo que se recomienda en esos casos es usar un gtm proxy para alivianar la carga del gtm. http://postgres-xc.sourceforge.net/docs/1_1/app-gtm-proxy.html Saludos, Gerardo
Re: [pgsql-es-ayuda] consulta sobre sequencias globales de BDR
Hola Alvaro El feb 9, 2015 10:35 AM, Alvaro Herrera alvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: Hola Lista: Estoy realizado pruebas con BDR de PostgreSQL anunciado recientemente, comparto una hilo de conversación que sostuve con Jaime Casanova, entre otros, sobre el tema especifico del comportamiento de secuencias globales. La inquietud surge porque trabajo en un call center donde se realizan miles de transacciones por segundo de diferentes clientes a un único cluster de base de datos PostgreSQL (con replicacion asincronica obviamente), y por balanceo de carga, disponibilidad, seguridad entre otros, seria extraordinario contar con la replicacion multimaster. El insert con generate_series() es realmente representativo de lo que se hace en la base de datos real, o es sólo para simular miles de transacciones? Porque si la carga real no implica insertar miles de registros en una sola sentencia, sino uno o unos pocos registros en cada sentencia (repetida miles de veces), es posible que las secuencias globales funcionen perfectamente en tu caso. Además, en versiones tempranas de BDR las secuencias globales eran algo lentas (varios segundos en generar un nuevo bloque para el servidor al que se le agotó), pero esto se ha corregido hace poco. Si tiene razón, emplee generate_series() con el fin de verificar el comportamiento con miles de transacciones pero no seria el nivel real de transacciones en mi caso, aunque el escenario que estamos planteando para la empresa si tiene un alto nivel de transacciones concurrentes pues en la base de datos almacenan todos los eventos de las llamadas, IVR, logs de operación, calificación y otros datos relevantes... ¿Tienes presente que el carácter asincrónico significa que puedes insertar registros en el servidor A, y a continuación consultar en el servidor B varios segundos después y NO VER los registros que acabas de insertar? El balanceo de carga es bueno, pero la aplicación no puede cambiarse al servidor B cuando el A esté con carga muy alta, y esperar que la base de datos sea consistente con el estado que veía en A. Es necesario introducir un período de espera para que los cambios se propaguen. Si, si lo tengo claro pero cuanto debería ser este tiempo de propagación razonable... pues en le esquema que estoy probando están montados en la misma maquina con diferente puerto, y no se penaliza por red y otros factores... -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Replicación de base de datos
Hola Jose No para replicación, solo se requiere como mínimo un (1) Master y un (1) esclavo. El mar 4, 2015 8:46 AM, José Fermín Francisco Ferreras josefermi...@hotmail.com escribió: Buenos días!! Tengo una duda, la replicación de base de datos es obligatorio que como mínimo hayan 2 esclavos y 1 maestro, o puede haber 1 maestro y 1 esclavo?? ing. José Fermín Francisco Ferreras San Francisco de Macorís, Rep. Dom.
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Replicación de base de datos
Hola lista Yo pienso que, si es posible contar con un equipo similar a la Master siempre debería implementarse un replicación, no sólo por balanceo de carga en cuanto a consultas, sino por contar con backup en linea de nuestra base de datos, lista para atender la carga de la Master en caso dado El mar 4, 2015 9:09 AM, Gilberto Castillo gilberto.casti...@etecsa.cu escribió: Hola Jose No para replicación, solo se requiere como mínimo un (1) Master y un (1) esclavo. Recordar que la replicación de datos surge por una necesidad, OJO- primero debe existir esa necesidad de ahí saldrán recurso y demás. Saludos, Gilberto Castillo La Habana, Cuba --- This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running at host imx3.etecsa.cu Visit our web-site: http://www.kaspersky.com, http://www.viruslist.com
[pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR
Hola lista No llego el anterior correo, lo reenvío.. -- Mensaje reenviado -- De: Hellmuth Vargas hiv...@gmail.com Fecha: ene 29, 2015 2:49 AM Asunto: consulta sobre sequencias globales de BDR Para: Lista Postgres ES pgsql-es-ayuda@postgresql.org Cc: Hola Lista: Estoy realizado pruebas con BDR de PostgreSQL anunciado recientemente, comparto una hilo de conversación que sostuve con Jaime Casanova, entre otros, sobre el tema especifico del comportamiento de secuencias globales. La inquietud surge porque trabajo en un call center donde se realizan miles de transacciones por segundo de diferentes clientes a un único cluster de base de datos PostgreSQL (con replicacion asincronica obviamente), y por balanceo de carga, disponibilidad, seguridad entre otros, seria extraordinario contar con la replicacion multimaster. -- Buenos días Actualmente me encuentro realizando una prueba con BDR, para esto he seguido las pautas descritas en https://wiki.postgresql.org/wiki/BDR_Quick_Start luego ejecute las siguientes sentencias: bdrdemo=# CREATE SEQUENCE seq_tabla2 USING bdr; CREATE SEQUENCE bdrdemo=# create table prueba2(id bigint primary key default nextval('seq_tabla2'), origen text); CREATE TABLE --servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,1) as a(id); INSERT 0 2 --servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,1) as a(id); INSERT 0 2 -- Acontinuación envío estas dos sentencias cada una en cada uno de los servidores: --servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. --servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. y genera el error que hay se presenta, toca esperar un buen tiempo para que vuelva a estar disponible -- servidor 1 bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2a'); nextval - 10001 (1 row) -- servidor 2 bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2'); nextval -- 14314001 (1 row) -- pero trato nuevamente de enviar el insert masivo y vuelve a generar error: -- servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. -- servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. La pregunta es si este comportamiento es normal? o debo configurar algo adicional o estoy haciendo algo mal? LE agradezco de antemano su atención, colaboración y tiempo -- Jaime Casanova respondio: -- Forwarded message -- From: Hellmuth Vargas To: Cc: Date: Mon, 26 Jan 2015 21:49:55 -0500 Subject: consulta sobre BDR [...] -- servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. -- servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT
[pgsql-es-ayuda] problema de desempeño con join basado en funcion similaridad
hola Lista Tenemos una base con twitter y queremos identificar aquellos que son copiados y pegados pero que vendrian a ser el mismo y no se identifican como retwitter...por ejemplo tenemos estos dos twitter Nueva alianza de @ConnectAmericas y @camaracomerbog a disposición de empresarios y empresas http://t.co/AQDeppDtso #Noticia RT @bidcomercio: Nueva alianza de @connectamericas y @camaracomerbog a disposición de empresarios y empresas http://t.co/f0Ky2564Lk #Noticia Ambos son en esencia igual y por medio de la función de similaridad (similarity extension pg_trgm) identificamos que poseen una calificación 0.725, lo que nos permite concluir que son iguales en esencia. El problema surge cuando ya queremos comparar la tabla completa con 2'418.356 registros aproximadamente (la partición de un mes), pues el join entre tablas seria la función de similaridad, la consulta que construí después de leer e investigar fue: SELECT set_limit(0.7); select a.texto,b.texto,similarity(a.texto,b.texto) from particiontwitter.tweets_2015_01 as a join particiontwitter.tweets_2015_01 as b on a.retweeted_status is NULL and LENGTH(a.texto) 120 and b.retweeted_status is NULL and LENGTH(b.texto) 120 and a.texto % b.texto and a.idb.id tengo los siguiente indices creados relevantes para la consulta: CREATE INDEX idx_tweets_trgm_2015_01 ON particiontwitter.tweets_2015_01 USING gin (texto COLLATE pg_catalog.default gin_trgm_ops); CREATE INDEX idx_tweets_trgm_gist_2015_01 ON particiontwitter.tweets_2015_01 USING gist (texto COLLATE pg_catalog.default gist_trgm_ops); CREATE INDEX idx_tweets_comp3_2015_01 ON particiontwitter.tweets_2015_01 USING btree (retweeted_status COLLATE pg_catalog.default, length(texto::text)); Y el plan de ejecución generado es: Nested Loop (cost=487.15..485794.60 rows=38938 width=281) - Bitmap Heap Scan on tweets_2015_01 a (cost=487.06..14814.10 rows=10808 width=148) Recheck Cond: ((retweeted_status IS NULL) AND (length((text)::text) 120)) - Bitmap Index Scan on idx_tweets_comp3_2015_01 (cost=0.00..486.52 rows=10808 width=0) Index Cond: ((retweeted_status IS NULL) AND (length((texto)::text) 120)) - Index Scan using idx_tweets_trgm_gist_2015_01 on tweets_2015_01 b (cost=0.08..43.56 rows=4 width=133) Index Cond: ((a.texto)::text % (texto)::text) Filter: ((retweeted_status IS NULL) AND ((a.id)::text (id)::text) AND (length((texto)::text) 120)) El problema es que no termina!!! lo he dejado correr un día y medio sobre solo el mes de enero y no finalizo y supuestamente debemos correrlo para todo lo que va el 2015... he intentado con FTS pero tampoco funciono... como puedo hacer para optimizar mejor y/o replantear la consulta o en general la manera de realizar la comparación que me permita obtener resultados en un tiempo menor ? De antemano gracias!!! - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda]
Hola lista Y de estas forma? select d.id http://a.id/,d.nombre,count(e.id) from tabla4 as d left join tabla3 as m on m.d=d.id left join tabla2 as p on m.id=p.m left join tabla1 as e on p.id=e.p and e.f='04-05-2015' left join tabla5 as s on s.id=e.id group by 1,2 El may. 11, 2015 6:03 PM, Eveling Velásquez lings...@yahoo.es escribió: ya lo use para todas las tablas, pero me manda el mismo resultado *Eveling Velasquez* El Lunes, 11 de mayo, 2015 16:57:52, raul andrez gutierrez alejo rauland...@gmail.com escribió: un left join soluciona eso. http://www.puntogeek.com/2013/05/21/joins-sql-explicados-con-diagramas-de-venn/ El 11 de mayo de 2015, 17:44, Eveling Velásquez lings...@yahoo.es escribió: Buen dia Tengo una duda, estoy realizando la siguiente consulta, los datos que me devuelven son correctos, sin embargo, lo que necesito es que me liste tambien los que suman 0. de que manera es posible hacer esta consulta, siempre y cuando se cumplan con los criterios que especifique? la consulta es la siguiente select d.id, d.nombre, count (e.id) from tabla1 e ,tabla2 p, tabla3 m, tabla4 d, tabla5 s where e.id=s.id and p.m=m.id and m.d=d.id and e.p=p.id and e.f = '04-05-2015' group by 1,2 el resultado es idnombre count 1amarillo3 3rojo 5 4negro1 lo que quiero obtener es idnombre count 1amarillo3 2celeste 0 3rojo 5 4negro1 5verde0 Gracias de antemano *Eveling * -- Raul Andres Gutierrez Alejo
[pgsql-es-ayuda] RE: [pgsql-es-ayuda]retorno de valores dinámicos dentro de un procedimiento almacenado
Hola lista Y porque no emplear una vista? CREATE VIEW v_persona AS SELECT primer_nombre ¦¦ ' ' ¦¦ segundo_nombre ¦¦ ' ' ¦¦ primer_apellido ¦¦ ' ' ¦¦ segundo_apellido as nombre, edad FROM persona; Y la puede consultar tal cual como una tabla: SELECT * FROM v_persona; El abr 5, 2015 1:11 PM, José de Paz desarrollo.escuin...@gmail.com escribió: Hola, Y si haces algo como esto: Select concat (nombre + apellido) as column1 from xxx; Saludos -- From: Freddy Martinez Garcia freddy311...@gmail.com Sent: 05/04/2015 12:46 p. m. To: pgsql-es-ayuda@postgresql.org Subject: [pgsql-es-ayuda]retorno de valores dinámicos dentro de un procedimiento almacenado Hola a todos… Tengo la siguiente tabla: create or replace table persona( primer_nombre varchar(100), segundo_nombre varchar(100), primer_apellido varchar(100), segundo_apellido varchar(100), edad integer ); me gustaría hacer un procedimiento almacenado que solamente decuelva 2 columnas, el nombre y la edad…. pero en la columna del nombre tendría que concatenar los nombres y los apellidos. el tema es que no sé como en postgres puedo definir que voy a devolver 2 columnas dentro del procedimiento cuando en el select que yo ejecuto tengo que pedir 4 y luego concatenarlas… no sé qué tipo de retorno es el que tengo que poner para poder lograrlo… no soy avanzado en postgres… estoy aprendiendo ahora… disculpen si mi pregunta está mal formada es una sencillez :( ... me pueden ayudar al respecto ?? saludos a todos = El tamaño de tus logros depende del tamaño de tus metas. C++ and Qt Senior Developer Lic. Computer Science Buenos Aires, Argentina - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] version 9.3.5_ actualizar?
Hola Alvaro Y no es posible que copia los archivos faltantes ? O que implicaciones adicionales puede haber.? Para devolverme solo podría en la madrugada.. No puedo afecta la disponibilidad en este momento. Mil gracias El may. 29, 2015 8:56 AM, Alvaro Herrera alvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: Hola lista Realice la actualización de la versión 9.3.5 a la versión 9.3.7 en los servidores que tengo.. Todo estuvo bien incluso al otro día entre las cuestiones rutinarias (creación de indices y cargues de información) actualice el film factor de una tabla de alta actualización pero que actualiza solo unos pequeños campos, realizando el procedimiento sugerido: ALTER TABLE tabla SET (fillfactor=95); VACUUM FULL ANALYZE VERBOSE tabla; Y salió sin problemas Hoy voy a revisar las estadísticas de la tabla y a practicar nuevamente un VACUUM sobre la misma y me sale este error: ROR: could not access status of transaction 1 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. Vuelve a 9.3.6 inmediatamente. Es un bug en 9.3.7 y 9.4.2 que se va a intentar corregir lo más pronto posible. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services
Re: [pgsql-es-ayuda] version 9.3.5_ actualizar?
Hola Alvaro y lista Pues ya copie los archivos faltantes y ejecute el VACUUM y funcionó bien, tengo la duda si programar otra ventana y devolverme a la 9.3.6 o esperar a la 9.3.8 ya con cabeza fría. Muchas gracias por la atención. El may. 29, 2015 9:31 AM, Alvaro Herrera alvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: Hola Alvaro Y no es posible que copia los archivos faltantes ? O que implicaciones adicionales puede haber.? Para devolverme solo podría en la madrugada.. No puedo afecta la disponibilidad en este momento. Mil gracias Si no te aproblema eso, supongo que es una estrategia válida. Pero en cuanto salga 9.3.8 deberías actualizar. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services
Re: [pgsql-es-ayuda] version 9.3.5_ actualizar?
Hola Alvaro de eso que me escribe (cito) : Todos estos son síntomas clásicos de haber actualizado con el pg_upgrade de alguna versión entre 9.3.0 y 9.3.4 (inclusive), que dejan el datminmxid en 1 (un número que en realidad no es correcto) Que debo hacer para subsanarlo? O que implicaciones tiene? Muchas gracias!!! El may. 30, 2015 1:29 PM, Hellmuth Vargas hiv...@gmail.com escribió: Hola Alvaro EL listado es el siguiente: [root@BD offsets]# ls -lah total 3,2M drwx-- 2 postgres postgres 4,0K may 26 23:16 . drwx-- 4 postgres postgres 4,0K feb 16 2014 .. -rw--- 1 postgres postgres 256K mar 4 2014 0008 -rw--- 1 postgres postgres 256K abr 9 2014 0009 -rw--- 1 postgres postgres 256K may 24 2014 000A -rw--- 1 postgres postgres 256K jul 8 2014 000B -rw--- 1 postgres postgres 256K ago 19 2014 000C -rw--- 1 postgres postgres 256K sep 26 2014 000D -rw--- 1 postgres postgres 256K nov 1 2014 000E -rw--- 1 postgres postgres 256K dic 5 12:04 000F -rw--- 1 postgres postgres 256K ene 9 13:29 0010 -rw--- 1 postgres postgres 256K feb 12 14:47 0011 -rw--- 1 postgres postgres 256K mar 25 08:06 0012 -rw--- 1 postgres postgres 256K may 5 12:47 0013 -rw--- 1 postgres postgres 168K may 29 07:39 0014 El 30 de mayo de 2015, 11:52 a. m., Alvaro Herrera alvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: El mensaje de error siempre era: _2015-05-29 09:19:53 COTproc:5371 ERROR: could not access status of transaction 1 _2015-05-29 09:19:53 COTproc:5371 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. OK. Pues como ya les anuncie, no cuento con la version 9.3.7, por lo tanto los siguientes resultados son de la versión 9.3.6, espero que les puedan servir: select oid, datminmxid from pg_database: oid datminmxid 238079085 1 12896 1 12891 1155162 16416 1 16417 1 16424 1 269582566 775213 276879078 775213 16426 1 16418 1 16420 1 239906595 1 16419 1 1 1124837 302106991 1124837 16421 1 16422 1 286765847 1069569 302181511 1124837 /opt/PostgreSQL/9.3/bin/pg_controldata /opt/PostgreSQL/9.3/data/ Latest checkpoint's oldestMultiXid: 1 Latest checkpoint's oldestMulti's DB: 16421 Todos estos son síntomas clásicos de haber actualizado con el pg_upgrade de alguna versión entre 9.3.0 y 9.3.4 (inclusive), que dejan el datminmxid en 1 (un número que en realidad no es correcto). ¿Qué archivos tienes en /opt/PostgreSQL/9.3/data/pg_multixact/offset ? -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate
Re: [pgsql-es-ayuda] version 9.3.5_ actualizar?
Hola Alvaro Desarrolle este pequeño script para actualizar en cada base los valores de datminmxid, select oid, datminmxid , datname from pg_database; update pg_database as x set datminmxid=y.nuevo from ( select relminmxid as nuevo from pg_class where (cast(cast(relminmxid AS text) AS bigint))0 and (cast(cast(relminmxid AS text) AS bigint))1 order by (cast(cast(relminmxid AS text) AS bigint)) asc limit 1 ) as y where x.datname='crm_seguro' and x.oid='16438'::oid; Está bien? Puedo dejar este valor así? Lo estoy ejecutando y no genera error sin embargo lo estoy haciendo sobre las bases que se pueden recuperar fácil de un backup De antemano muchas gracias.. Me surge una duda adicional.. Que mas debería uno validar? .. A qué me refiero: pues si no se hubiese presentando el problema seguramente se hubiese presentando después con peores consecuencias.. Donde se puede revisará o validar los valores correctos que debe tiene una base en sus diccionario de sistema. Existe algún script o herramienta que haga este diagnóstico? Muchas gracias Hellmuth Vargas escribió: Hola Alvaro de eso que me escribe (cito) : Todos estos son síntomas clásicos de haber actualizado con el pg_upgrade de alguna versión entre 9.3.0 y 9.3.4 (inclusive), que dejan el datminmxid en 1 (un número que en realidad no es correcto) Que debo hacer para subsanarlo? O que implicaciones tiene? Muchas gracias!!! Para corregirlo hay que cambiar los valores de datminmxid en pg_database. La idea es hacer que apunte al multixact más temprano que tenga tu sistema; en tu caso será un multixact que esté en el segmento 0008. Tendría que ser algo como 0008 * 32 * 2048 pero me parece que ese valor exacto no sirve, porque es muy probable que en realidad el multixact de esa ubicación esté apuntando a cero, y si no me equivoco, eso no serviría. Creo que habría que mirar el archivo 0008 para saber cuál es el primer valor que no es cero (hexdump). Hmm, quizás un punto de partida para encontrar un valor bueno sea mirar los pg_class.relminmxid en cada base de datos. Si no has tenido wraparound de multixact desde que hiciste el pg_upgrade, el mínimo entre todos esos valores será el valor que necesitas poner en pg_database. Luego de un tiempo, una combinación de vacuum y checkpoint hará que el valor de datminmxid que hayas puesto se propague a pg_control.oldestMultiXid, y una vez que eso haya pasado el WAL-replay de los checkpoint ocurrirá correctamente sin errores. La implicancia es que si no lo corriges, el valor quedará apuntando a un archivo que no existe (pg_multixact/offset/) y ocurrirá un error cuando el 9.4.2/9.3.7 trate de leerlo (esto es lo que te pasó el otro día, si no entiendo mal). Si tienes tiempo de experimentar, creo que podría ser buena idea que le echaras una mirada a las cosas que he mencionado y nos cuentes, a ver si surge algo útil ... -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services
Re: [pgsql-es-ayuda] version 9.3.5_ actualizar?
Hola Alvaro EL listado es el siguiente: [root@BD offsets]# ls -lah total 3,2M drwx-- 2 postgres postgres 4,0K may 26 23:16 . drwx-- 4 postgres postgres 4,0K feb 16 2014 .. -rw--- 1 postgres postgres 256K mar 4 2014 0008 -rw--- 1 postgres postgres 256K abr 9 2014 0009 -rw--- 1 postgres postgres 256K may 24 2014 000A -rw--- 1 postgres postgres 256K jul 8 2014 000B -rw--- 1 postgres postgres 256K ago 19 2014 000C -rw--- 1 postgres postgres 256K sep 26 2014 000D -rw--- 1 postgres postgres 256K nov 1 2014 000E -rw--- 1 postgres postgres 256K dic 5 12:04 000F -rw--- 1 postgres postgres 256K ene 9 13:29 0010 -rw--- 1 postgres postgres 256K feb 12 14:47 0011 -rw--- 1 postgres postgres 256K mar 25 08:06 0012 -rw--- 1 postgres postgres 256K may 5 12:47 0013 -rw--- 1 postgres postgres 168K may 29 07:39 0014 El 30 de mayo de 2015, 11:52 a. m., Alvaro Herreraalvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: El mensaje de error siempre era: _2015-05-29 09:19:53 COTproc:5371 ERROR: could not access status of transaction 1 _2015-05-29 09:19:53 COTproc:5371 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. OK. Pues como ya les anuncie, no cuento con la version 9.3.7, por lo tanto los siguientes resultados son de la versión 9.3.6, espero que les puedan servir: select oid, datminmxid from pg_database: oid datminmxid 238079085 1 12896 1 12891 1155162 16416 1 16417 1 16424 1 269582566 775213 276879078 775213 16426 1 16418 1 16420 1 239906595 1 16419 1 1 1124837 302106991 1124837 16421 1 16422 1 286765847 1069569 302181511 1124837 /opt/PostgreSQL/9.3/bin/pg_controldata /opt/PostgreSQL/9.3/data/ Latest checkpoint's oldestMultiXid: 1 Latest checkpoint's oldestMulti's DB: 16421 Todos estos son síntomas clásicos de haber actualizado con el pg_upgrade de alguna versión entre 9.3.0 y 9.3.4 (inclusive), que dejan el datminmxid en 1 (un número que en realidad no es correcto). ¿Qué archivos tienes en /opt/PostgreSQL/9.3/data/pg_multixact/offset ? -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate
Re: [pgsql-es-ayuda] version 9.3.5_ actualizar?
Hola Lista Finalmente me toco devolverme a la version 9.3.6, pues al efectuar las rutinas de mantenimiento nocturno (VACUUM) volvió a presentarse el problema, muchas gracias a todos por su ayuda. El 29 de mayo de 2015, 9:54 a. m., Hellmuth Vargashiv...@gmail.com escribió: Hola Alvaro y lista Pues ya copie los archivos faltantes y ejecute el VACUUM y funcionó bien, tengo la duda si programar otra ventana y devolverme a la 9.3.6 o esperar a la 9.3.8 ya con cabeza fría. Muchas gracias por la atención. El may. 29, 2015 9:31 AM, Alvaro Herrera alvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: Hola Alvaro Y no es posible que copia los archivos faltantes ? O que implicaciones adicionales puede haber.? Para devolverme solo podría en la madrugada.. No puedo afecta la disponibilidad en este momento. Mil gracias Si no te aproblema eso, supongo que es una estrategia válida. Pero en cuanto salga 9.3.8 deberías actualizar. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate
Re: [pgsql-es-ayuda] version 9.3.5_ actualizar?
los 5 primeros son: 01539897540437562499562988 Descartando 0 y 1 seleccionaría 539897y ese debería ser el valor con el que debo setear en pg_database: update pg_database set datminmxid='539897'::xid where datname='bd_secundaria' and oid='16431'::oid. antes de ejecutar el UPDATE para validar y/o confirmar hago un hexdump del archivo : [root@Mpc72-BD offsets]# hexdump -C 0008 | more 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 || * f3e0 00 00 00 00 01 00 00 00 03 00 00 00 05 00 00 00 || f3f0 07 00 00 00 09 00 00 00 0b 00 00 00 0d 00 00 00 || f400 0f 00 00 00 11 00 00 00 13 00 00 00 15 00 00 00 || f410 17 00 00 00 19 00 00 00 1b 00 00 00 1d 00 00 00 || f420 1f 00 00 00 21 00 00 00 23 00 00 00 25 00 00 00 |!...#...%...| f430 27 00 00 00 29 00 00 00 2b 00 00 00 2d 00 00 00 |'...)...+...-...| f440 2f 00 00 00 31 00 00 00 33 00 00 00 35 00 00 00 |/...1...3...5...| f450 37 00 00 00 39 00 00 00 3b 00 00 00 3d 00 00 00 |7...9...;...=...| f460 3f 00 00 00 41 00 00 00 43 00 00 00 45 00 00 00 |?...A...C...E...| f470 47 00 00 00 49 00 00 00 4b 00 00 00 4d 00 00 00 |G...I...K...M...| f480 4f 00 00 00 51 00 00 00 53 00 00 00 55 00 00 00 |O...Q...S...U...| f490 57 00 00 00 59 00 00 00 5b 00 00 00 5d 00 00 00 |W...Y...[...]...| f4a0 5f 00 00 00 61 00 00 00 63 00 00 00 65 00 00 00 |_...a...c...e...| f4b0 67 00 00 00 69 00 00 00 6b 00 00 00 6d 00 00 00 |g...i...k...m...| f4c0 6f 00 00 00 71 00 00 00 73 00 00 00 75 00 00 00 |o...q...s...u...| f4d0 77 00 00 00 79 00 00 00 7b 00 00 00 7d 00 00 00 |w...y...{...}...| f4e0 7f 00 00 00 81 00 00 00 83 00 00 00 85 00 00 00 || f4f0 87 00 00 00 89 00 00 00 8b 00 00 00 8d 00 00 00 || f500 8f 00 00 00 91 00 00 00 93 00 00 00 95 00 00 00 || f510 97 00 00 00 99 00 00 00 9b 00 00 00 9d 00 00 00 || f520 9f 00 00 00 a1 00 00 00 a3 00 00 00 a5 00 00 00 || f530 a7 00 00 00 a9 00 00 00 ab 00 00 00 ad 00 00 00 || f540 af 00 00 00 b1 00 00 00 b3 00 00 00 b5 00 00 00 || f550 b7 00 00 00 b9 00 00 00 bb 00 00 00 bd 00 00 00 || f560 bf 00 00 00 c1 00 00 00 c3 00 00 00 c5 00 00 00 || f570 c7 00 00 00 c9 00 00 00 cb 00 00 00 cd 00 00 00 || f580 cf 00 00 00 d1 00 00 00 d3 00 00 00 d5 00 00 00 || f590 d7 00 00 00 d9 00 00 00 db 00 00 00 dd 00 00 00 || f5a0 df 00 00 00 e1 00 00 00 e3 00 00 00 e5 00 00 00 || f5b0 e7 00 00 00 e9 00 00 00 eb 00 00 00 ed 00 00 00 || f5c0 ef 00 00 00 f1 00 00 00 f3 00 00 00 f5 00 00 00 || f5d0 f7 00 00 00 f9 00 00 00 fb 00 00 00 fd 00 00 00 || f5e0 ff 00 00 00 01 01 00 00 03 01 00 00 05 01 00 00 || f5f0 07 01 00 00 09 01 00 00 0b 01 00 00 0d 01 00 00 || f600 0f 01 00 00 11 01 00 00 13 01 00 00 15 01 00 00 || f610 17 01 00 00 19 01 00 00 1b 01 00 00 1d 01 00 00 || f620 1f 01 00 00 21 01 00 00 23 01 00 00 25 01 00 00 |!...#...%...| Pero pasa lo mismo, no se que debo interpretar aqui... inlcuso tengo duda del valor que me arrojo el query (539897) por lo que menciona Alvaro (cito) El problema es que si has consumido una gran cantidad de multiacts, podrían haber valores que estén pasados del punto medio de wraparound, o haber dado la vuelta completa... Entonces tengo la duda que procedimiento debo seguir en estos casos, mil Gracias Alvaro. El 1 de junio de 2015, 4:35 p. m., Alvaro Herreraalvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: Hola Alvaro Desarrolle este pequeño script para actualizar en cada base los valores de datminmxid, select oid, datminmxid , datname from pg_database; update pg_database as x set datminmxid=y.nuevo from ( select relminmxid as nuevo from pg_class where (cast(cast(relminmxid AS text) AS bigint))0 and (cast(cast(relminmxid AS text) AS bigint))1 order by (cast(cast(relminmxid AS text) AS bigint)) asc limit 1 ) as y where x.datname='crm_seguro' and x.oid='16438'::oid; Está bien? Puedo dejar este valor así? Ni idea. ¿por qué no muestras un select oid, relminmxid from pg_class where relminmxid '0', a ver si tiene sentido? El problema es que si has consumido una gran cantidad de multixacts, podrían haber valores que estén pasados el punto medio de wraparound, o haber dado la vuelta completa, y las comparaciones normales y podrían no tener sentido ... Lo estoy ejecutando y no genera error sin embargo lo estoy haciendo sobre las bases que se pueden recuperar fácil de un backup Me parece sensato! De antemano muchas gracias.. Me surge una
Re: [pgsql-es-ayuda] version 9.3.5_ actualizar?
Hola Alvaro El mensaje de error siempre era: _2015-05-29 09:19:53 COTproc:5371 ERROR: could not access status of transaction 1 _2015-05-29 09:19:53 COTproc:5371 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. _2015-05-29 20:20:27 COTproc:38182 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. _2015-05-29 20:23:47 COTproc:38740 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. _2015-05-29 20:29:07 COTproc:39665 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. _2015-05-29 20:41:18 COT@bd_cll72b@postgres@[local]@proc:37221 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. _2015-05-29 20:41:56 COTproc:41876 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. _2015-05-29 20:44:34 COTproc:45790 DETAIL: Could not open file pg_multixact/offsets/: No existe el fichero o el directorio. con las siguientes sentencias: VACUUM database: vacuum full verbose analyze tabla; update tabla2 set... transaction 1 Pues como ya les anuncie, no cuento con la version 9.3.7, por lo tanto los siguientes resultados son de la versión 9.3.6, espero que les puedan servir: select oid, datminmxid from pg_database: oid datminmxid 238079085 1 12896 1 12891 1155162 16416 1 16417 1 16424 1 269582566 775213 276879078 775213 16426 1 16418 1 16420 1 239906595 1 16419 1 1 1124837 302106991 1124837 16421 1 16422 1 286765847 1069569 302181511 1124837 /opt/PostgreSQL/9.3/bin/pg_controldata /opt/PostgreSQL/9.3/data/ pg_control version number:937 Catalog version number: 201306121 Database system identifier: 5980861421293698031 Database cluster state: in production pg_control last modified: sáb 30 may 2015 04:55:50 COT Latest checkpoint location: B99/62CE5020 Prior checkpoint location:B99/61090E70 Latest checkpoint's REDO location:B99/6260CE80 Latest checkpoint's REDO WAL file:00010B990062 Latest checkpoint's TimeLineID: 1 Latest checkpoint's PrevTimeLineID: 1 Latest checkpoint's full_page_writes: on Latest checkpoint's NextXID: 0/1004521331 Latest checkpoint's NextOID: 302505916 Latest checkpoint's NextMultiXactId: 1355388 Latest checkpoint's NextMultiOffset: 1767491 Latest checkpoint's oldestXID:806796687 Latest checkpoint's oldestXID's DB: 16422 Latest checkpoint's oldestActiveXID: 1004521331 Latest checkpoint's oldestMultiXid: 1 Latest checkpoint's oldestMulti's DB: 16421 Time of latest checkpoint:sáb 30 may 2015 04:53:44 COT Fake LSN counter for unlogged rels: 0/1 Minimum recovery ending location: 0/0 Min recovery ending loc's timeline: 0 Backup start location:0/0 Backup end location: 0/0 End-of-backup record required:no Current wal_level setting:hot_standby Current max_connections setting: 810 Current max_prepared_xacts setting: 0 Current max_locks_per_xact setting: 64 Maximum data alignment: 8 Database block size: 8192 Blocks per segment of large relation: 131072 WAL block size: 8192 Bytes per WAL segment:16777216 Maximum length of identifiers:64 Maximum columns in an index: 32 Maximum size of a TOAST chunk:1996 Date/time type storage: 64-bit integers Float4 argument passing: by value Float8 argument passing: by value Data page checksum version: 0 Cualquier otra cosa con mucho gusto. El 29 de mayo de 2015, 11:06 p. m., Alvaro Herreraalvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: Hola, Finalmente me toco devolverme a la version 9.3.6, pues al efectuar las rutinas de mantenimiento nocturno (VACUUM) volvió a presentarse el problema, muchas gracias a todos por su ayuda. Gracias por reportar. Por favor, si tienes, indica más detalles de lo que sucedió exactamente (mensajes de error, qué archivos faltaban, la salida de pg_controldata, y select oid, datminmxid from pg_database). Todavía se están discutiendo los bugs en pgsql-hackers y puede ser útil contar con tu caso para verificar los parches propuestos. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Índice sobre suma de dos campos
Hola Alvaro Muchas gracias!! , la verdad no se me ocurrió colocar un paréntesis adicional... :-P El may. 22, 2015 3:54 PM, Alvaro Herrera alvhe...@2ndquadrant.com escribió: Hellmuth Vargas escribió: Hola lista Tengo una tabla agenda donde en un campo esta la fecha (date) y en otro esta la hora (time), además tengo una consulta para ubicar los espacios vacíos de la agenda, para agilizar la consulta pretendía crear un índice sobre fecha+hora pues la consulta emplea la combinación, algo como: CREATE INDEX idx_agenda_fecha_hora ON agenda(fecha+hora); Pero el servidor POSTGRESQL genera el siguiente error: ERROR: syntax error al or near + Me praece que el problema inmediato se soluciona agregando paréntesis CREATE INDEX idx_agenda_fecha_hora ON agenda ((fecha+hora)); pero yo creo que es más apropiado usar tipos de rango. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services
[pgsql-es-ayuda] Índice sobre suma de dos campos
Hola lista Tengo una tabla agenda donde en un campo esta la fecha (date) y en otro esta la hora (time), además tengo una consulta para ubicar los espacios vacíos de la agenda, para agilizar la consulta pretendía crear un índice sobre fecha+hora pues la consulta emplea la combinación, algo como: CREATE INDEX idx_agenda_fecha_hora ON agenda(fecha+hora); Pero el servidor POSTGRESQL genera el siguiente error: ERROR: syntax error al or near + Y no he encontrado como se debe expresar para poderlo crear. De antemano gracias lista
Re: [pgsql-es-ayuda] UPDATE tabla SET campo = (numero_registros_tabla) WHERE id = {condicion}
Hola lista Obviando el asunto de la violación de la segunda forma normal y los problemas subsecuentes, la Consulta dentro de un trigger (para que sea automático) seria algo como: update tabla as x set flag=y.flag from ( select grupo, count(grupo) as flag from tabla as y group by 1 ) as y where x.grupo=y.grupo Hola lista, necesito una mano, como puedo hacer lo siguiente. * tabla usuario {id, idgrupo, login, flag}* select * from usuario - 1,1,'pedro', 0 - 2,1,'juan',0 - 3,1,'jose',0 - 4,2,'maria',0 Bien aquí la pregunta, deseo actualizar el valor flag al valor del total de registros según la condición: * Es decir: update usuario set = (___VALOR_AQUI___) where idgrupo = 1; ___VALOR_AQUI___ deberia ser 3.update usuario set = (___VALOR_AQUI___) where idgrupo = 2; ___VALOR_AQUI___ deberia ser 1. * Deseo hacer esto sin tener que hacer una subconsulta, algo parecido a esto: update usuario set = (SELECT COUNT(id) FROM usuario WHERE idgrupo = 1) where idgrupo = 1;update usuario set = (SELECT COUNT(id) FROM usuario WHERE idgrupo = 2) where idgrupo = 2; Uh, ¿No tendrás otra manera de hacer eso?... creo que el uso de llamado a count en el futuro te va a traer problema. Saludos, Gilberto Castillo ETECSA, La Habana, Cuba --- This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running at host imx3.etecsa.cu Visit our web-site: http://www.kaspersky.com, http://www.viruslist.com - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
[pgsql-es-ayuda] Data-checksums en una cluster preexistente
Hola Lista Tengo un cluster de base de datos PostgreSQL 9.3 con diposnibilidad 7x24, que viene siendo actualizada desde la verison 8.4, por lo tanto no cuenta con el mecanismo de data-checksums y las escasas ventanas de mantenimiento para actualizar version, solo permiten ejecutar pg_upgrade pues la disponibilidad no se puede ver afectada mucho tiempo, exite algun proedimiento o script o programa que permitiera habilitar la opción de data-checksums en un cluster preexistente sin mucha indisponibilidad, algo que permitiera como: - Colocar el cluster en modo backup - Ejecutar un script, programa, procedimiento que calcule y setee data-checksums - Habilitar en data-checksums en los parámetros del servidor cluster. - terminar el modo backup.
Re: [pgsql-es-ayuda] Data-checksums en una cluster preexistente
Hola lista El jul. 31, 2015 3:27 PM, Jaime Casanova jaime.casan...@2ndquadrant.com escribió: 2015-07-30 9:13 GMT-05:00 Hellmuth Vargas hiv...@gmail.com: Hola Lista Tengo un cluster de base de datos PostgreSQL 9.3 con diposnibilidad 7x24, que viene siendo actualizada desde la verison 8.4, por lo tanto no cuenta con el mecanismo de data-checksums y las escasas ventanas de mantenimiento para actualizar version, solo permiten ejecutar pg_upgrade pues la disponibilidad no se puede ver afectada mucho tiempo, exite algun proedimiento o script o programa que permitiera habilitar la opción de data-checksums en un cluster preexistente sin mucha indisponibilidad, algo que permitiera como: - Colocar el cluster en modo backup - Ejecutar un script, programa, procedimiento que calcule y setee data-checksums - Habilitar en data-checksums en los parámetros del servidor cluster. - terminar el modo backup. No como lo presentas, puedes usar slony para replicar a otra máquina (o a la misma en otro puerto) que tenga el checksum activo. Luego haces un switchover que no te tomará más de unos minutos Mmmm.. No lo había considerado, voy a evaluarlo.. Muchas gracias Alvaro y Jaime por sus respuestas -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte 24x7 y capacitación
Re: [pgsql-es-ayuda] Consulta que no tome en cuenta las tildes
Hola Mauricio y lista Yo le sugeriría emplear FTS (FULL TEXT SEARCH ENGINE) pues maneja tanto las tildes como mayúsculas/minúsculas. El ejemplo básico (sin indices, columnas precalculadas, etc) es: SELECT * FROM (VALUES ('perro'),('Método'),( 'MÉTODO'),('metodo'),('casa'),('lote')) AS a(dato) WHERE to_tsvector('spanish',a.dato) @@ plainto_tsquery('método'); dato Método MÉTODO metodo (3 rows) El 22 de octubre de 2015, 12:09 p. m., mauricio pullabuestan< jmaurici...@yahoo.es> escribió: > Buen día > > Tengo una tabla personal con un campo cargo en donde el usuario puede > ingresar los cargos, existe registros en donde ingresa "Métodos" o > "Metodos" lo cual es un problema. > > En Sql Server hay un parámetro de configuración donde le indicaba no > distinguir acentos y otro parámetro para no distinguir entre mayúsculas y > minúsculas y a los sql no tienen nada de especial. > > Existe en postgresq algo similar? > > Quiero evitar hacer esto: > > SELECT codigo, nombres > FROM personal > where cargo ILIKE '%Métodos%' Or cargo ILIKE '%Metodos%' > ORDER BY nombres; > > Saludos. > Mauricio > -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate
RE: [pgsql-es-ayuda] No puedo instalar / ejecutar postgresql 9.3
Hola Lo puede descargar de aquí: http://www.enterprisedb.com/products-services-training/pgdownload El oct. 29, 2015 12:09 PM, "MKHotmail"escribió: > Hice todo lo indicado desde un primer momento, a excepción de los puntos 5 > y 6. > > > > De donde descargo ese instalador ¿? > > > > Gracias por la ayuda.. > > > > MK > > > > > > *De:* pgsql-es-ayuda-ow...@postgresql.org [mailto: > pgsql-es-ayuda-ow...@postgresql.org] *En nombre de *jvenegasperu . > *Enviado el:* jueves, 29 de octubre de 2015 11:47 a.m. > *Para:* MKHotmail > *CC:* Ayuda > *Asunto:* Re: [pgsql-es-ayuda] No puedo instalar / ejecutar postgresql 9.3 > > > > Hola > intenta seguir estas sugerencias > > 1.- Primero desinstala luego borra todo rastro de postres en windows las > carpetas incluido el registro > 2.- instala postgres con permisos de asdministrador > > 3.- No pongas la carpeta data dentro de archivos de programa ponlo en otra > carpeta fuera de archivos de programa si es posible en otra unidad mejor > > 4.- usa el mismo usuario y contraseñe de postgres seguro tu instalacion > con problemas ya creo un usuario postgres. > > 5.- Si aun tienes problemas probablemente te este faltando las bibliotecas > de Visual C++ para tu version de postgres tendrias que ver tu version de > postgres cual usa. > > 6.- El instalador de EDB trae incluido las librerias de VC asi que te > sugiero bajar el instalador de enterprise db para windows y ejecutar los > pasos. > > saludos > > > > > > El 28 de octubre de 2015, 17:11, MKHotmail > escribió: > > Maestros intente instalar Postgresql 9.3 en un servidor Windows Server > 2003. No me dejaba instalar me salta este error, lo hice desde una > instalación limpia y me sale ese error que no me deja instalar…busque en > internet y no encuentro rptas. > > > > Agradeceré a bien guiarme en esta instalación, en otras maquinas no tuve > problemas…. > > > > > > > > > -- > > José Mercedes Venegas Acevedo > cel Mov RPM #955853768 > > mails: jvenegasp...@gmail.com >
Re: [pgsql-es-ayuda] Consulta que no tome en cuenta las tildes
Hola lista Y porque no considerar FTS? El oct. 22, 2015 12:30 PM, "Hellmuth Vargas" <hiv...@gmail.com> escribió: > Hola Mauricio y lista > > > Yo le sugeriría emplear FTS (FULL TEXT SEARCH ENGINE) pues maneja tanto > las tildes como mayúsculas/minúsculas. El ejemplo básico (sin indices, > columnas precalculadas, etc) es: > > > SELECT * > FROM (VALUES ('perro'),('Método'),( > 'MÉTODO'),('metodo'),('casa'),('lote')) AS a(dato) > WHERE to_tsvector('spanish',a.dato) @@ plainto_tsquery('método'); > > > dato > > Método > MÉTODO > metodo > > (3 rows) > > > > > > > > El 22 de octubre de 2015, 12:09 p. m., mauricio pullabuestan< > jmaurici...@yahoo.es> escribió: > >> Buen día >> >> Tengo una tabla personal con un campo cargo en donde el usuario puede >> ingresar los cargos, existe registros en donde ingresa "Métodos" o >> "Metodos" lo cual es un problema. >> >> En Sql Server hay un parámetro de configuración donde le indicaba no >> distinguir acentos y otro parámetro para no distinguir entre mayúsculas y >> minúsculas y a los sql no tienen nada de especial. >> >> Existe en postgresq algo similar? >> >> Quiero evitar hacer esto: >> >> SELECT codigo, nombres >> FROM personal >> where cargo ILIKE '%Métodos%' Or cargo ILIKE '%Metodos%' >> ORDER BY nombres; >> >> Saludos. >> Mauricio >> > > > > -- > Cordialmente, > > Ing. Hellmuth I. Vargas S. > Esp. Telemática y Negocios por Internet > Oracle Database 10g Administrator Certified Associate > EnterpriseDB Certified PostgreSQL 9.3 Associate > >
[pgsql-es-ayuda] No funciona WITH con mas de 2 sentencias DML
Hola Lista Estaba realizando un cargue de un archivo Excel con información de clientes bancarios con tarjeta para un call center poblando un modelo maestro, detalle y tabla de llamadas telefónicas. En un principio se implemento por medio de una herramienta de ETL con los controles que ofrece la herramienta ETL y para bases de 10.000 registros duraba hasta 3 horas si no se caída por memoria, por lo tanto me lo asignaron para optimizarlo y decidí realizar las operaciones de ordenamiento, limpieza y filtro de datos directamente en la base de datos (donde es natural) aun empleando el cascaron de la herramienta de ETL (pues debe integrase con otro sistema); dentro de uno de los pasos, ya para insertar los datos en las diferentes tablas, implemente un código similar al siguiente empleando WITH: WITH base AS ( INSERT INTO maestro ( fechacreacion, fechamodificacion, idusuariocrea, departamento, documento, municipio, primerapellido, primernombre, telefono1, tipodocumento, direccion, email) SELECT now(), now(), 1,a.departamento ,a.documento,a.ciudad, a.apellidos,a.nombres, a.telefono_1, a.tipo_identificacion,a.direccion_residencia , a.e_mail FROM tmp_carga GROUP BY a.departamento ,a.documento,a.ciudad, a.apellidos,a.nombres, a.telefono_1, a.tipo_identificacion,a.direccion_residencia , a.e_mail RETURNING id,documento ), insertadetalle AS ( INSERT INTO detalle( codigooficina, direccionoficina, franquicia, montodisponible, nombreproducto, tipoproducto, ultimosdigitos, maestro_id) SELECT a.Codigo_Interno, a.Cod_Oficina,a.DireccionOficina,a.Franquicia_tarjeta, a.MontoDisponible, a.Nombre_Producto,a.Tipo_Producto,a.ultimos_digitos_tc,b.id FROM vys.tmp_carga as a JOIN base as b on a.documento=b.documento RETURNING maestro_id ) INSERT INTO marcadortelefonia ( numerointento, telefono, telefono2, telefono3, telefono4, fechacreacion, maestro_id, calificacion ) SELECT 1, a.telefono1, a.telefono2, a.telefono3, a.telefono4, current_timestamp, a.id, 0 FROM maestro as a JOIN base as b --tambien probe sustituyendo base por insertadetalle y tampoco ON a.id=b.id El tema es que no ejecuta el ultimo INSERT (sobre marcadortelefonia): si inserta los datos en maestro y en detalle, pero cuando consulto sobre marcadortelefonia no hay nada y tampoco genera error. En resumen, no sirve emplear un WITH con mas de dos sentencias DML.? o estoy haciendo algo mal? de antemano muchas gracias lista Cordialmente, Ing. Hellmuth I. Vargas S.
Re: [pgsql-es-ayuda] ayuda con funcion List
Hola Igniris Pruebalo con string_agg así: SELECT string_agg(distinct p.nombre,',') as prod, string_agg(distinct fa.forma,',') as forma FROM public.producto p INNER JOIN public.productoformaadquisclugar pfl ON (p.id = pfl.idproducto) INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id) El 7 de octubre de 2015, 9:37 a. m., Ignirisescribió: > Buenos dias a todos > tengo un problema con la funcion LIST les pongo un ejemplo para ilustralo > mejor, tengo las siguientes tablas: > CREATE TABLE public.producto ( > id NUMERIC NOT NULL, > nombre TEXT, > CONSTRAINT producto_pkey PRIMARY KEY(id) > ) WITHOUT OIDS; > CREATE TABLE public.formadeadquisicion ( > id NUMERIC NOT NULL, > forma TEXT, > CONSTRAINT formadeadquisicion_pkey PRIMARY KEY(id) > ) WITHOUT OIDS; > CREATE TABLE public.productoformaadquisclugar ( > idproducto NUMERIC NOT NULL, > idforma NUMERIC NOT NULL, > idlugar NUMERIC NOT NULL, > CONSTRAINT productoformaadquisc_pkey PRIMARY KEY(idproducto, idforma, > idlugar) > ) WITHOUT OIDS; > > Ahora tengo una consulta para obtener los producto por su forma de > adquisicion donde necesito los nombres de los productos y las formas > concatenados, la consulta seria esta: > SELECT > LIST(p.nombre) as prod, > LIST(fa.forma)as forma > FROM > public.producto p > INNER JOIN public.productoformaadquisclugar pfl ON (p.id = > pfl.idproducto) > INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id) > > el resultado de la consulta queda asi: > > > ahora el problema que estoy teniendo es que los usuarios necesitan que si > el producto se repite salga una sola vez, en este ejemplo el mango sale 2 > veces y necesito que salga solo una, la funcion list que estoy usando es > esta: > > CREATE FUNCTION comma_cat(text, text) RETURNS text > LANGUAGE sql > AS $_$select case > WHEN $2 is null or $2 = '' THEN $1 > WHEN $1 is null or $1 = '' THEN $2 > ELSE $1 || ', ' || $2 > END$_$; > CREATE AGGREGATE list ( > BASETYPE = text, > SFUNC = comma_cat, > STYPE = text, > INITCOND = '' > ); > > Muchas gracias por su ayuda, saludos > -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate
Re: [GENERAL] [pgsql-es-ayuda] No funciona WITH con mas de 2 sentencias DML
Hola Alvaro... mmm devolviendo ademas el teléfono desde base... mmm no lo había considerado.. Mil Gracias 2015-10-06 14:01 GMT-05:00 Alvaro Herrera <alvhe...@2ndquadrant.com>: > Hellmuth Vargas escribió: > > > Realice este pequeño laboratorio para presentar la inquietud: > > WITH base AS ( > INSERT INTO master (identificacion, nombre, telefono) > SELECT a.identificacion, a.nombre, a.telefono > FROM carga AS a > GROUP BY a.identificacion, a.nombre, a.telefono > RETURNING id, telefono, identificacion > > ), > insertadetalle AS ( > INSERT INTO detalle (tarjeta, master_id) > SELECT a.tarjeta,b.id > FROM carga AS a > JOIN base as b ON a.identificacion = > b.identificacion > RETURNING master_id > ) > INSERT INTO > marcadortelefonia > ( > telefono, > master_id > ) > SELECT b.telefono, b.identificacion::int > FROM base b > GROUP BY b.telefono, b.identificacion::int; > > ??? > > -- > Álvaro Herrerahttp://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services > -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate
Re: [pgsql-es-ayuda] ayuda con funcion List
Hola Igniris Según indica, debe tener una versión que soporta string_agg pues lo verificó directamente en consola y funcionó, es posible que lo este molestando es la comillas sencilla (') si esta embebiendo la sentencia en una cadena. Si puede copiar el pedazo de código donde emplea la sentencia para poder analizar mejor el problema > > > > > > > > > SELECT > > > string_agg(distinct p.nombre,',') as prod, > > > string_agg(distinct fa.forma,',') as forma > > > FROM > > > public.producto p > > > INNER JOIN public.productoformaadquisclugar pfl ON (p.id = pfl.idproducto) > > > INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id) > > > > > > > > > El oct. 9, 2015 7:27 AM, "Igniris" <ivaldi...@xetid.cu> escribió: > Muchas gracias Hellmuth probe con tu solucion y en la consulta funciono, > pero cuando lo pongo en la funcion de la app reaal me da error de sintaxis > como este: > > 'Doctrine_Connection_Pgsql_Exception' with message 'SQLSTATE[42601]: Syntax > error: 7 > > si lo quito y lo pongo como estaba funciona pero con la deficiencia que les > comentaba inicialmente, saludos y gracias > > > > El 07/10/2015 a las 08:46 a. m., Hellmuth Vargas escribió: > > Hola Igniris > > Pruebalo con string_agg así: > > > SELECT > string_agg(distinct p.nombre,',') as prod, > string_agg(distinct fa.forma,',') as forma > FROM > public.producto p > INNER JOIN public.productoformaadquisclugar pfl ON (p.id = > pfl.idproducto) > INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id) > > El 7 de octubre de 2015, 9:37 a. m., Igniris<ivaldi...@xetid.cu> escribió: > >> Buenos dias a todos >> tengo un problema con la funcion LIST les pongo un ejemplo para ilustralo >> mejor, tengo las siguientes tablas: >> CREATE TABLE public.producto ( >> id NUMERIC NOT NULL, >> nombre TEXT, >> CONSTRAINT producto_pkey PRIMARY KEY(id) >> ) WITHOUT OIDS; >> CREATE TABLE public.formadeadquisicion ( >> id NUMERIC NOT NULL, >> forma TEXT, >> CONSTRAINT formadeadquisicion_pkey PRIMARY KEY(id) >> ) WITHOUT OIDS; >> CREATE TABLE public.productoformaadquisclugar ( >> idproducto NUMERIC NOT NULL, >> idforma NUMERIC NOT NULL, >> idlugar NUMERIC NOT NULL, >> CONSTRAINT productoformaadquisc_pkey PRIMARY KEY(idproducto, idforma, >> idlugar) >> ) WITHOUT OIDS; >> >> Ahora tengo una consulta para obtener los producto por su forma de >> adquisicion donde necesito los nombres de los productos y las formas >> concatenados, la consulta seria esta: >> SELECT >> LIST(p.nombre) as prod, >> LIST(fa.forma)as forma >> FROM >> public.producto p >> INNER JOIN public.productoformaadquisclugar pfl ON (p.id = >> pfl.idproducto) >> INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id) >> >> el resultado de la consulta queda asi: >> >> >> ahora el problema que estoy teniendo es que los usuarios necesitan que si >> el producto se repite salga una sola vez, en este ejemplo el mango sale 2 >> veces y necesito que salga solo una, la funcion list que estoy usando es >> esta: >> >> CREATE FUNCTION comma_cat(text, text) RETURNS text >> LANGUAGE sql >> AS $_$select case >> WHEN $2 is null or $2 = '' THEN $1 >> WHEN $1 is null or $1 = '' THEN $2 >> ELSE $1 || ', ' || $2 >> END$_$; >> CREATE AGGREGATE list ( >> BASETYPE = text, >> SFUNC = comma_cat, >> STYPE = text, >> INITCOND = '' >> ); >> >> Muchas gracias por su ayuda, saludos >> > > > > -- > Cordialmente, > > Ing. Hellmuth I. Vargas S. > Esp. Telemática y Negocios por Internet > Oracle Database 10g Administrator Certified Associate > EnterpriseDB Certified PostgreSQL 9.3 Associate > > >