[pgsql-es-ayuda] datos no coinciden entre master y hot standby

2011-07-23 Por tema Hellmuth Vargas
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

2011-07-23 Por tema Hellmuth Vargas
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

2011-07-23 Por tema Hellmuth Vargas
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

2011-07-25 Por tema Hellmuth Vargas
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

2011-08-05 Por tema Hellmuth Vargas
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

2011-08-18 Por tema Hellmuth Vargas
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

2011-08-19 Por tema Hellmuth Vargas
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

2011-08-22 Por tema Hellmuth Vargas
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

2011-08-31 Por tema Hellmuth Vargas
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

2011-08-31 Por tema Hellmuth Vargas
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

2011-09-15 Por tema Hellmuth Vargas
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

2011-09-21 Por tema Hellmuth Vargas
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

2011-11-15 Por tema Hellmuth Vargas
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

2011-11-15 Por tema Hellmuth Vargas
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

2011-11-30 Por tema Hellmuth Vargas
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

2012-01-28 Por tema Hellmuth Vargas
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

2012-02-14 Por tema Hellmuth Vargas
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

2012-02-15 Por tema Hellmuth Vargas
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

2012-02-15 Por tema Hellmuth Vargas
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

2012-02-15 Por tema Hellmuth Vargas
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-04-25 Por tema Hellmuth Vargas
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 (+)

2012-05-15 Por tema Hellmuth Vargas
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 (+)

2012-05-15 Por tema Hellmuth Vargas
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

2012-08-29 Por tema Hellmuth Vargas
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

2012-08-29 Por tema Hellmuth Vargas
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

2012-09-11 Por tema Hellmuth Vargas
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

2012-09-11 Por tema Hellmuth Vargas
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

2012-10-24 Por tema Hellmuth Vargas
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

2012-10-24 Por tema Hellmuth Vargas
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

2012-12-19 Por tema Hellmuth Vargas
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

2013-02-15 Por tema Hellmuth Vargas
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...

2013-03-20 Por tema Hellmuth Vargas
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

2013-04-11 Por tema Hellmuth Vargas
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

2013-06-13 Por tema Hellmuth Vargas
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

2013-06-19 Por tema Hellmuth Vargas
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

2013-08-07 Por tema Hellmuth Vargas
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

2013-09-20 Por tema Hellmuth Vargas
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

2013-09-23 Por tema Hellmuth Vargas
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

2013-09-30 Por tema Hellmuth Vargas
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

2013-10-09 Por tema Hellmuth Vargas
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

2013-10-23 Por tema Hellmuth Vargas
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)

2013-11-05 Por tema Hellmuth Vargas
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)

2013-11-06 Por tema Hellmuth Vargas
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

2013-11-07 Por tema Hellmuth Vargas
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

2014-01-09 Por tema Hellmuth Vargas
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

2014-01-09 Por tema Hellmuth Vargas
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

2014-02-05 Por tema Hellmuth Vargas
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

2014-02-05 Por tema Hellmuth Vargas
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

2014-02-06 Por tema Hellmuth Vargas
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

2014-02-07 Por tema Hellmuth Vargas
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

2014-03-13 Por tema Hellmuth Vargas
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

2014-03-14 Por tema Hellmuth Vargas
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

2014-05-08 Por tema Hellmuth Vargas
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

2014-07-27 Por tema Hellmuth Vargas
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

2014-08-05 Por tema Hellmuth Vargas
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

2014-08-05 Por tema Hellmuth Vargas
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

2014-08-05 Por tema Hellmuth Vargas
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

2014-08-11 Por tema Hellmuth Vargas
*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.

2014-08-23 Por tema Hellmuth Vargas
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

2014-09-15 Por tema Hellmuth Vargas
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

2014-09-21 Por tema Hellmuth Vargas
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

2014-09-22 Por tema Hellmuth Vargas
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

2014-09-25 Por tema Hellmuth Vargas
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

2014-09-25 Por tema Hellmuth Vargas
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?

2014-11-25 Por tema Hellmuth Vargas
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

2014-12-03 Por tema Hellmuth Vargas
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

2014-12-15 Por tema Hellmuth Vargas
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

2014-12-16 Por tema Hellmuth Vargas
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

2014-12-16 Por tema Hellmuth Vargas
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

2015-02-10 Por tema Hellmuth Vargas
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

2015-01-28 Por tema Hellmuth Vargas
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

2015-01-30 Por tema Hellmuth Vargas
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

2015-02-09 Por tema Hellmuth Vargas
 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

2015-02-10 Por tema Hellmuth Vargas
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

2015-03-04 Por tema Hellmuth Vargas
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

2015-03-04 Por tema Hellmuth Vargas
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

2015-01-30 Por tema Hellmuth Vargas
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

2015-04-24 Por tema Hellmuth Vargas
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]

2015-05-12 Por tema Hellmuth Vargas
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

2015-04-06 Por tema Hellmuth Vargas
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?

2015-05-29 Por tema Hellmuth Vargas
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?

2015-05-29 Por tema Hellmuth Vargas
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?

2015-06-01 Por tema Hellmuth Vargas
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?

2015-06-01 Por tema Hellmuth Vargas
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?

2015-05-30 Por tema Hellmuth Vargas
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?

2015-05-29 Por tema Hellmuth Vargas
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?

2015-06-02 Por tema Hellmuth Vargas

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?

2015-05-30 Por tema Hellmuth Vargas
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

2015-05-22 Por tema Hellmuth Vargas
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

2015-05-22 Por tema Hellmuth Vargas
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}

2015-05-19 Por tema Hellmuth Vargas
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

2015-07-30 Por tema Hellmuth Vargas
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

2015-08-01 Por tema Hellmuth Vargas
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

2015-10-22 Por tema Hellmuth Vargas
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

2015-10-29 Por tema Hellmuth Vargas
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

2015-10-24 Por tema Hellmuth Vargas
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

2015-10-06 Por tema Hellmuth Vargas
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

2015-10-07 Por tema Hellmuth Vargas
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 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


Re: [GENERAL] [pgsql-es-ayuda] No funciona WITH con mas de 2 sentencias DML

2015-10-06 Por tema Hellmuth Vargas
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

2015-10-09 Por tema Hellmuth Vargas
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
>
>
>


  1   2   >