Re: [pgbr-geral] Auditoria em POstgreSQL -

2010-10-29 Por tôpico JotaComm
Em 28 de outubro de 2010 20:15, Celso clorenzett...@gmail.com escreveu:

  Olá Emerson,

 Nós temos algo assim em nosse ERP (se for o usuário da aplicação).

 No Oracle você consegue setar um valor para uma variável de Sessão do
 usuário (na versão 9 do Post, pelo que entendi tem esse recurso tb).


Sim, isso é possível, porém desde versões anteriores a 9.0, se eu entendi o
que você quis dizer.



 Mas resolvemos da seguinte forma.

 Quando o usuário se loga no sistema incluímos um registro em um tabela
 chamada sessoes, registrando o código do usuário na aplicação e o
 pg_backend_pid() da sessão.


Você quer dizer que associa o id do usuário do seu sistema com o pid da
sessão que o usuário está conectado? É isso?


 Assim quando precisamos saber, usamos a View abaixo para recuperar o
 usuário da sessão atual.



 Funciona certinho, o porém é que as vezes ficam registros perdidos na
 tabela, se o sistema não for encerrado corretamente (quando fecha o sistema,
 o registro é excluído).


 CREATE OR REPLACE VIEW vw_sessao AS
  SELECT sessoes.usr_usuario
FROM sessoes
   WHERE sessoes.usr_sessao = pg_backend_pid();
 Espero que seja isso que você procure.


 Att,

 Celso Lorenzetti
 www.sysrs.com.br

 - Original Message -

 *From:* Fábio Gibon - Comex System gi...@comexsystem.com.br
 *To:* Comunidade PostgreSQL Brasileirapgbr-geral@listas.postgresql.org.br
 *Sent:* Thursday, October 28, 2010 6:47 PM
 *Subject:* Re: [pgbr-geral] Auditoria em POstgreSQL -

 Olá Emerson,
   tem como detalhar melhor o que você precisa? E, adiantando, quando
 você fala usuário é usuário do banco (login role) ou usuário da sua
 aplicação?

 sds
 Fábio Gibon

 - Original Message -
 *From:* Emerson Martins emersonmarti...@gmail.com
 *To:* pgbr-geral@listas.postgresql.org.br
 *Sent:* Thursday, October 28, 2010 4:20 PM
 *Subject:* [pgbr-geral] Auditoria em POstgreSQL -

 Opa pessoal.

 Tenho umas triggers de auditoria no sistema.Mas temos também um módulo de
 usuarios onde sabemos quem estar logado.
 Preciso de ajuda pra integrar as triggers ao modulo de usuários.Alguem ja
 implementou algo assim?

 Tow com esse problema pra resolver..Urgente..




 Emerson Martins
 emersonmarti...@hotmail.com

 --

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

  --

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Agrupar, transformar linhas em colunas

2010-10-29 Por tôpico JotaComm
Opa,

2010/10/28 Emerson Hermann emersonherm...@gmail.com

 /*
 Estrutura apenas para exemplo
 */
 --DROP TABLE IF EXISTS cadastro_teste;
 CREATE TEMP TABLE cadastro_teste
 (
   cpf  VARCHAR(11)
 , nome VARCHAR(21)
 , matricula VARCHAR(7)

 );

 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria
 Madalena','72034054401','2010011');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Jonas','12034054408','2010032');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria
 Madalena','72034054401','2010051');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria
 Madalena','72034054401','2010071');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Jonas','12034054408','2010559');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Marcos','42034054403','2010033');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Marcos','42034054403','2010154');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Joao','53034054403','2010004');


 SELECT * FROM cadastro_teste ORDER BY cpf;
 /*

 cpf|nome  |matricula
 12034054408|Jonas |2010559
 12034054408|Jonas |2010032
 42034054403|Marcos|2010154
 42034054403|Marcos|2010033
 53034054403|Joao  |2010004
 72034054401|Maria Madalena|2010071
 72034054401|Maria Madalena|2010051
 72034054401|Maria Madalena|2010011

 */

 -- Existe a possibilidade de agrupar esses dados da forma abaixo
 (concatenando a matricula) sem uso de store function? Utilizo
 PostgreSQL 8.3.
 -- Se existe, como seria, com window function  ?


Sim, com o uso de Window Functions, porém disponível apenas para a versão
8.4



 /*
 cpf|nome  |matricula
 12034054408|Jonas |2010032;2010559;
 42034054403|Marcos|2010033;2010154;
 53034054403|Joao  |2010004;
 72034054401|Maria Madalena|2010011;2010051;2010071;
 */


O restante o meu colega Osvaldo já deu a dica.

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Agrupar, transformar linhas em colunas

2010-10-29 Por tôpico Emerson Hermann
/*
Obrigado Osvaldo e JotaComm, ufa! como simplificou a minha vida, vejam
como fazia antes com store function  e de longe não era melhor solução
comparada com esta, desde já agradeço se  alguém quiser postar algum
exemplo com  window function
Veja como fazia com store function, como era sofrivel a minha vida :)
*/

--type do store function
DROP TYPE IF EXISTS public.tp_transform_rows_into_column CASCADE;
CREATE TYPE public.tp_transform_rows_into_column AS
(
  c1 TEXT
, c2 TEXT
, c3 TEXT
, c4 TEXT

);

--store function
DROP FUNCTION IF EXISTS sf_transform_rows_into_column (sqlx TEXT);
CREATE OR REPLACE FUNCTION sf_transform_rows_into_column (sqlx TEXT)
 RETURNS SETOF public.tp_transform_rows_into_column AS

$$
DECLARE
row1public.tp_transform_rows_into_column;
row2public.tp_transform_rows_into_column;
row3public.tp_transform_rows_into_column;
ds_comando  TEXT;
controleTEXT;
n_col_transf_rx TEXT;
n_contador  FLOAT;

BEGIN

 IF (sqlx IS NULL) THEN
  RAISE EXCEPTION 'QUERY VALORES NULOS!'; -- caso o parametro venha nulo
 END IF;

 n_col_transf_rx := '';
 ds_comando  := 'SELECT * FROM ( ' || sqlx || ' ) AS foo
ORDER BY 1 ASC, 3 ASC';
 controle:= '';
 n_contador  := 0;

 FOR row1 IN EXECUTE
  ds_comando

  LOOP

  IF row1.c1  controle THEN

   n_col_transf_rx := '';
   row2.c1 := row1.c1;
   row2.c2 := row1.c2;
   row2.c3 := row1.c3;
   row2.c4 := row1.c4 || ';';
   n_col_transf_rx := row1.c4 || ';';

  ELSIF  row1.c1 = controle  THEN

   n_col_transf_rx := n_col_transf_rx || row1.c4 ||
';';
   row2.c4 := n_col_transf_rx;

  END IF;

  IF row2.c1  row3.c1 THEN

   RETURN NEXT row3;

  END IF;

  controle:= row1.c1;
  row3:= row2;
  n_contador  := n_contador + 1;

  RAISE NOTICE 'Processando tupla... %', n_contador;

 END LOOP;

 RETURN NEXT row2;

 RAISE NOTICE 'Processo concluido com sucesso!!!';

 RETURN;

EXCEPTION WHEN QUERY_CANCELED THEN
 RAISE NOTICE 'Processo cancelado, ROLLBACK EFETUADO!!!';

 RETURN;

END;
$$
LANGUAGE 'plpgsql'
;
-- depois para execução
--como havia anteriormente feito
 SELECT *
   FROM sf_transform_rows_into_column
($$
 SELECT cpf
  , nome
  , 1 AS status
  , matricula
   FROM cadastro_teste ORDER BY cpf
$$);

-- com a versão sugerida por Osvaldo na versão PostgreSQL 8.3, ficou assim:
-- para versao Postgres 8.3
CREATE AGGREGATE array_accum (anyelement)
(
sfunc = array_append,
stype = anyarray,
initcond = '{}'
);

SELECT cpf, nome, array_accum(matricula) FROM cadastro_teste GROUP BY
cpf, nome;  -- apenas na versao do Postgres 8.3

--Muito simples ! Show!
--Valeu !
/*
Emerson Hermann
DBA
*/

Em 29 de outubro de 2010 08:58, JotaComm jota.c...@gmail.com escreveu:
 Opa,

 2010/10/28 Emerson Hermann emersonherm...@gmail.com

 /*
 Estrutura apenas para exemplo
 */
 --DROP TABLE IF EXISTS cadastro_teste;
 CREATE TEMP TABLE cadastro_teste
 (
       cpf  VARCHAR(11)
     , nome VARCHAR(21)
     , matricula VARCHAR(7)

 );

 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria
 Madalena','72034054401','2010011');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Jonas','12034054408','2010032');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria
 Madalena','72034054401','2010051');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria
 Madalena','72034054401','2010071');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Jonas','12034054408','2010559');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Marcos','42034054403','2010033');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Marcos','42034054403','2010154');
 INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES
 ('Joao','53034054403','2010004');


 SELECT * FROM cadastro_teste ORDER BY cpf;
 /*

 cpf        |nome          |matricula
 12034054408|Jonas         |2010559
 12034054408|Jonas         |2010032
 42034054403|Marcos        |2010154
 42034054403|Marcos        |2010033
 53034054403|Joao          |2010004
 72034054401|Maria Madalena|2010071
 72034054401|Maria Madalena|2010051
 72034054401|Maria Madalena|2010011

 */

 -- Existe a possibilidade de agrupar esses dados da forma abaixo
 (concatenando a matricula) sem uso de 

Re: [pgbr-geral] Auditoria em POstgreSQL -

2010-10-29 Por tôpico Fabrízio de Royes Mello
 Quando o usuário se loga no sistema incluímos um registro em um tabela
 chamada sessoes, registrando o código do usuário na aplicação e o
 pg_backend_pid() da sessão.


 Você quer dizer que associa o id do usuário do seu sistema com o pid da
 sessão que o usuário está conectado? É isso?


 Assim quando precisamos saber, usamos a View abaixo para recuperar o
 usuário da sessão atual.



 Funciona certinho, o porém é que as vezes ficam registros perdidos na
 tabela, se o sistema não for encerrado corretamente (quando fecha o sistema,
 o registro é excluído).


 CREATE OR REPLACE VIEW vw_sessao AS
  SELECT sessoes.usr_usuario
FROM sessoes
   WHERE sessoes.usr_sessao = pg_backend_pid();



Interessante a solução... aqui na empresa usamos tabelas temporárias para
guardar informações da aplicação durante a sessão do PostgreSQL, são um
conjunto de pl/pgsql que fazem essa jogada:

fc_startsession();
fc_putsession(text, text);
fc_getsession(text);

Com isso ao realizar a conexão com o PostgreSQL, nossa aplicação
imediatamente roda a fc_startsession e faz uma cópia do conteúdo da
variável $_SESSION (usamos PHP) para dentro da sessão do banco, e com isso
toda informação que manipulamos em sessão a nível de aplicação fica
disponível tb no banco de dados.

Essas pls são simples, consistem em manipular pares de Chave/Valor...
inclusive estamos testando uma forma de não usar tabelas temporárias para
eliminar esse overhead.

Veja abaixo o exemplo do uso:

postg...@teste_sessao=# SELECT fc_startsession();
 fc_startsession
-
 t
(1 row)

postg...@teste_sessao=# SELECT fc_putsession('Id_Usuario', '1');
 fc_putsession
---
 t
(1 row)

postg...@teste_sessao=# SELECT fc_getsession('Id_Usuario');
 fc_getsession
---
 1
(1 row)

postg...@teste_sessao=# SELECT fc_putsession('Id_Usuario', '2');
 fc_putsession
---
 t
(1 row)

postg...@teste_sessao=# SELECT fc_getsession('Id_Usuario');
 fc_getsession
---
 2
(1 row)


Algo bem simples e extremamente útil, que já temos em produção em diversos
clientes há mais de 3 anos.

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
 Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Auditoria em POstgreSQL -

2010-10-29 Por tôpico André Volpato





Com isso ao realizar a conexão com o PostgreSQL, nossa aplicação imediatamente 
roda a fc_startsession e faz uma cópia do conteúdo da variável $_SESSION 
(usamos PHP) para dentro da sessão do banco, e com isso toda informação que 
manipulamos em sessão a nível de aplicação fica disponível tb no banco de 
dados. 


Essas pls são simples, consistem em manipular pares de Chave/Valor... inclusive 
estamos testando uma forma de não usar tabelas temporárias para eliminar esse 
overhead. 


+1 usando essa mesma solução. Não uso tabelas temporárias, tenho uma tabela 
específica pra isso. 
Armazeno o conteúdo de _SESSION e busco usando o identificador de sessão 
(sessId). 


[]´s, André Volpato 
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Failover no Windows

2010-10-29 Por tôpico Norberto Delle
Bom dia pessoal

Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008 
R2 e estou testando
o processos de failover. Quando crio o arquivo de trigger no local 
especificado no parâmetro 'trigger_file'
do recovery.conf nada acontece.
Alguém tem alguma idéia do que pode estar errado?

Obrigado

Norberto
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Failover no Windows

2010-10-29 Por tôpico JotaComm
Olá,

Em 29 de outubro de 2010 10:49, Norberto Delle betode...@gmail.comescreveu:

 Bom dia pessoal

 Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008
 R2 e estou testando
 o processos de failover. Quando crio o arquivo de trigger no local
 especificado no parâmetro 'trigger_file'
 do recovery.conf nada acontece.
 Alguém tem alguma idéia do que pode estar errado?


Como você fez a criação do arquivo? Algum erro no Log do PostgreSQL?

O que você considera que nada acontece?


 Obrigado

 Norberto
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Digest pgbr-geral, volume 22, assunto 65

2010-10-29 Por tôpico Emerson Martins
Caros colegas vou postar aqui a minha o meu esquema como estou fazendo se
alguem puder ajudar..(Estar com erros)!

a tabela

  CREATE TABLE AUDITORIA
(
codigo serial NOT NULL,
tipo CHAR(1),
data TIMESTAMP,
usuario VARCHAR(20),
tabela VARCHAR(30),
campo VARCHAR(30),
pid VARCHAR(30),
transacao varchar(30)
)

a função:

CREATE OR REPLACE FUNCTION AUDITORIA () RETURNS TRIGGER
 AS '
 DECLARE
   consulta varchar;
   data timestamp;
   tipo varchar;
   cols record;
   usuario varchar;
   id integer;
   pid integer;
   columna varchar;
   transacao varchar;
 BEGIN
-- data
 select into data current_timestamp(0);
   -- ip
 select into usuario inet_client_addr();
-- pid
 select into pid pg_backend_pid();
-- transacao
 select into transacao txid_current();
   IF TG_OP = ''INSERT'' THEN
   tipo:=''I'';
   select into id new.oid;
 END IF;
 IF TG_OP = ''UPDATE'' THEN
   tipo:=''U'';
   select into id old.oid;
 END IF;

-- Loop
 FOR cols IN
select  attname as nome,
  attnum as numero
frompg_attribute
where   attrelid = TG_RELID
and attnum  0
and NOT attisdropped;
 LOOP
 IF NEW. || cols.nome ||  OLD. || cols.nome ||  THEN
INSERT  INTO auditoria
(TIPO,DATA,USUARIO,TABELA,CAMPO,NOME1,NOME2,NOME3,PID,TRANSACAO)
values
(tipo,data,usuario,TG_RELNAME,id,cols.nome,cols.nome,cols.nome,pid,transacao);
 END IF;
   END LOOP;
RETURN NEW;
 END;
 '
 LANGUAGE plpgsql;


--  CREATE TRIGGER AUDITAR_TABELA1
--  AFTER INSERT OR UPDATE OR DELETE ON TABELA1
--FOR EACH ROW EXECUTE PROCEDURE AUDITORIA();

Alguem pode identificar. o Erro ta no loop
ERROR:  missing LOOP at end of SQL expression
CONTEXTO:  compilation of PL/pgSQL function auditoria near line 28

Em 29 de outubro de 2010 12:00, pgbr-geral-requ...@listas.postgresql.org.br
 escreveu:

 Send pgbr-geral mailing list submissions to
pgbr-geral@listas.postgresql.org.br

 To subscribe or unsubscribe via the World Wide Web, visit

 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 or, via email, send a message with subject or body 'help' to
pgbr-geral-requ...@listas.postgresql.org.br

 You can reach the person managing the list at
pgbr-geral-ow...@listas.postgresql.org.br

 When replying, please edit your Subject line so it is more specific
 than Re: Contents of pgbr-geral digest...


 Tópicos de Hoje:

   1. Failover no Windows (Norberto Delle)
   2. Re: Failover no Windows (JotaComm)
   3. Re: Failover no Windows (Norberto Delle)


 --

 Message: 1
 Date: Fri, 29 Oct 2010 10:49:21 -0200
 From: Norberto Delle betode...@gmail.com
 Subject: [pgbr-geral] Failover no Windows
 To: Comunidade PostgreSQL Brasileira
pgbr-geral@listas.postgresql.org.br
 Message-ID: 4ccac2d1.7080...@gmail.com
 Content-Type: text/plain; charset=ISO-8859-1; format=flowed

 Bom dia pessoal

 Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008
 R2 e estou testando
 o processos de failover. Quando crio o arquivo de trigger no local
 especificado no parâmetro 'trigger_file'
 do recovery.conf nada acontece.
 Alguém tem alguma idéia do que pode estar errado?

 Obrigado

 Norberto


 --

 Message: 2
 Date: Fri, 29 Oct 2010 11:04:51 -0200
 From: JotaComm jota.c...@gmail.com
 Subject: Re: [pgbr-geral] Failover no Windows
 To: Comunidade PostgreSQL Brasileira
pgbr-geral@listas.postgresql.org.br
 Message-ID:

 aanlkti=qyd3swswq7rewnr0vym5tteyx4+jvb99bf...@mail.gmail.comqyd3swswq7rewnr0vym5tteyx4%2bjvb99bf...@mail.gmail.com
 
 Content-Type: text/plain; charset=iso-8859-1

 Olá,

 Em 29 de outubro de 2010 10:49, Norberto Delle betode...@gmail.com
 escreveu:

  Bom dia pessoal
 
  Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008
  R2 e estou testando
  o processos de failover. Quando crio o arquivo de trigger no local
  especificado no parâmetro 'trigger_file'
  do recovery.conf nada acontece.
  Alguém tem alguma idéia do que pode estar errado?
 

 Como você fez a criação do arquivo? Algum erro no Log do PostgreSQL?

 O que você considera que nada acontece?

 
  Obrigado
 
  Norberto
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 


 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 -- Próxima Parte --
 Um anexo em HTML foi limpo...
 URL:
 http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20101029/4049f15d/attachment-0001.htm

 --

 Message: 3
 Date: Fri, 29 Oct 2010 11:19:14 -0200
 From: Norberto Delle betode...@gmail.com
 Subject: Re

[pgbr-geral] Numero de linha de uma tabela

2010-10-29 Por tôpico Benedito A. Cruz



Uma curiosidade minha: é possível, numa consulta, formatar a saída de 
forma que as linhas da tabela de saída venham numeradas?

Por exemplo: fazendo uma consulta select Nome from clientes, a saída é 
uma tabela com uma  coluna Nome.
A curiosidade é se é possível criar um select  que devolva uma tabela 
com duas  colunas,  algo assim:

|Numero|Nome|
|1 |Jão |
|2 |Zé |
|3 |Tião|

[]s

   Bene






-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Digest pgbr-geral, volume 22, assunto 65

2010-10-29 Por tôpico Fábio Gibon - Comex System
 a criação do arquivo? Algum erro no Log do PostgreSQL?

O que você considera que nada acontece?


 Obrigado

 Norberto
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
--
JotaComm
http://jotacomm.wordpress.com
-- Próxima Parte --
Um anexo em HTML foi limpo...
URL: 
http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20101029/4049f15d/attachment-0001.htm

--

Message: 3
Date: Fri, 29 Oct 2010 11:19:14 -0200
From: Norberto Delle betode...@gmail.com
Subject: Re: [pgbr-geral] Failover no Windows
To: Comunidade PostgreSQL Brasileira
   pgbr-geral@listas.postgresql.org.br
Message-ID: 4ccac9d2.2060...@gmail.com
Content-Type: text/plain; charset=iso-8859-1

Em 29/10/2010 11:04, JotaComm escreveu:
 Olá,

 Em 29 de outubro de 2010 10:49, Norberto Delle betode...@gmail.com
 mailto:betode...@gmail.com escreveu:

 Bom dia pessoal

 Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008
 R2 e estou testando
 o processos de failover. Quando crio o arquivo de trigger no local
 especificado no parâmetro 'trigger_file'
 do recovery.conf nada acontece.
 Alguém tem alguma idéia do que pode estar errado?


 Como você fez a criação do arquivo? Algum erro no Log do PostgreSQL?

 O que você considera que nada acontece?


 Obrigado

 Norberto
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Olá Jota

Eu copiei o arquivo de um outro local, na base do Ctrl+C - Ctrl+V mesmo.
Quando eu digo que nada acontece é que eu esperava que o processo de
recuperação parasse e o standby ficasse disponível para conexões. Mas pelo
contrário, no log nada aparece indicando que o arquivo trigger tenha
sido detectado,
e o processo de recuperação apenas continua, como se nada tivesse mudado.

Obrigado pela atenção

Norberto
-- Próxima Parte --
Um anexo em HTML foi limpo...
URL: 
http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20101029/7b69d96b/attachment-0001.htm

--

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Fim da Digest pgbr-geral, volume 22, assunto 65
***





--


  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Numero de linha de uma tabela

2010-10-29 Por tôpico Fábio Gibon - Comex System
Você não citou qual a versão do banco, mas uma alternativa que pode 
substituir o rownum (do Oracle) é:

create temp sequence rownum;

select nextval('rownum'), t.*
from suatabela t;

drop sequence rownum;

sds
Fábio Gibon
- Original Message - 
From: Benedito A. Cruz b...@cria.org.br
To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br
Sent: Friday, October 29, 2010 11:22 AM
Subject: [pgbr-geral] Numero de linha de uma tabela





Uma curiosidade minha: é possível, numa consulta, formatar a saída de
forma que as linhas da tabela de saída venham numeradas?

Por exemplo: fazendo uma consulta select Nome from clientes, a saída é
uma tabela com uma  coluna Nome.
A curiosidade é se é possível criar um select  que devolva uma tabela
com duas  colunas,  algo assim:

|Numero|Nome|
|1 |Jão |
|2 |Zé |
|3 |Tião|

[]s

   Bene






-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Auditoria em POstgreSQL -

2010-10-29 Por tôpico Celso
Nós também André, não é temporária.

Att,

Celso Lorenzetti
www.sysrs.com.br

  - Original Message - 
  From: André Volpato 
  To: fabriziome...@gmail.com ; Comunidade PostgreSQL Brasileira 
  Sent: Friday, October 29, 2010 10:38 AM
  Subject: Re: [pgbr-geral] Auditoria em POstgreSQL -






Com isso ao realizar a conexão com o PostgreSQL, nossa aplicação 
imediatamente roda a fc_startsession e faz uma cópia do conteúdo da variável 
$_SESSION (usamos PHP) para dentro da sessão do banco, e com isso toda 
informação que manipulamos em sessão a nível de aplicação fica disponível tb no 
banco de dados.


Essas pls são simples, consistem em manipular pares de Chave/Valor... 
inclusive estamos testando uma forma de não usar tabelas temporárias para 
eliminar esse overhead.



  +1 usando essa mesma solução. Não uso tabelas temporárias, tenho uma tabela 
específica pra isso.
  Armazeno o conteúdo de _SESSION e busco usando o identificador de sessão 
(sessId).


  []´s, André Volpato



--


  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Numero de linha de uma tabela

2010-10-29 Por tôpico Fábio Gibon - Comex System
E ainda... se for na versão 9.0 tem:

select row_number() over (), t.*
from suatabela t;

Neste caso tem que ter cuidado com o uso da cláusula ordem by... se for
usá-la deve ser feito em uma subquery e o row_number() na query principal.

sds
Fábio Gibon

- Original Message - 
From: Benedito A. Cruz b...@cria.org.br
To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br
Sent: Friday, October 29, 2010 11:22 AM
Subject: [pgbr-geral] Numero de linha de uma tabela





Uma curiosidade minha: é possível, numa consulta, formatar a saída de
forma que as linhas da tabela de saída venham numeradas?

Por exemplo: fazendo uma consulta select Nome from clientes, a saída é
uma tabela com uma  coluna Nome.
A curiosidade é se é possível criar um select  que devolva uma tabela
com duas  colunas,  algo assim:

|Numero|Nome|
|1 |Jão |
|2 |Zé |
|3 |Tião|

[]s

   Bene






-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Numero de linha de uma tabela

2010-10-29 Por tôpico Fabrízio de Royes Mello
Em 29 de outubro de 2010 14:06, Fábio Gibon - Comex System 
gi...@comexsystem.com.br escreveu:

 E ainda... se for na versão 9.0 tem:

 select row_number() over (), t.*
 from suatabela t;

 Neste caso tem que ter cuidado com o uso da cláusula ordem by... se for
 usá-la deve ser feito em uma subquery e o row_number() na query principal.


Na verdade esse recurso está disponível desde a versão 8.4

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
 Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Numero de linha de uma tabela

2010-10-29 Por tôpico Fábio Gibon - Comex System
Fabrízio,
   obrigado pela correção.

sds
Fábio Gibon
  - Original Message - 
  From: Fabrízio de Royes Mello 
  To: Comunidade PostgreSQL Brasileira 
  Sent: Friday, October 29, 2010 12:21 PM
  Subject: Re: [pgbr-geral] Numero de linha de uma tabela





  Em 29 de outubro de 2010 14:06, Fábio Gibon - Comex System 
gi...@comexsystem.com.br escreveu:

E ainda... se for na versão 9.0 tem:

select row_number() over (), t.*
from suatabela t;

Neste caso tem que ter cuidado com o uso da cláusula ordem by... se for
usá-la deve ser feito em uma subquery e o row_number() na query principal.





  Na verdade esse recurso está disponível desde a versão 8.4

  -- 
  Fabrízio de Royes Mello
   Blog sobre TI: http://fabriziomello.blogspot.com
   Perfil Linkedin: http://br.linkedin.com/in/fabriziomello




--


  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Failover no Windows

2010-10-29 Por tôpico Norberto Delle

Em 29/10/2010 11:04, JotaComm escreveu:

Olá,

Em 29 de outubro de 2010 10:49, Norberto Delle betode...@gmail.com 
mailto:betode...@gmail.com escreveu:


Bom dia pessoal

Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008
R2 e estou testando
o processos de failover. Quando crio o arquivo de trigger no local
especificado no parâmetro 'trigger_file'
do recovery.conf nada acontece.
Alguém tem alguma idéia do que pode estar errado?


Como você fez a criação do arquivo? Algum erro no Log do PostgreSQL?

O que você considera que nada acontece?


Obrigado

Norberto
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
mailto:pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
--
JotaComm
http://jotacomm.wordpress.com


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Boa tarde Jota

Examinando melhor a minha configuração percebi que não passei o parâmetro
-t arquivo_trigger na chamada do pg_standby do recovery_command. Achei 
que fosse
suficiente apenas definir o trigger_file. Agora tudo funcionou como o 
esperado.

Obrigado pela atenção.

Norberto
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] FW: Failover no Windows

2010-10-29 Por tôpico Jefferson Dias

Pessoal, estou fazendo um trabalho da faculdade e estou com algumas dúvidas. 
Por favor, me ajudem, já que, é claro, vcs são os melhores em Postgress.

São estes os tópicos que ficaram mais dúvidas:

5. Estado Atual
7. Replicação e cluster.
9. Linguagens de programação
10. Capacidade de gerenciamento de dadosfalta
11. Número de conexões simultanea, número de processadores.falta
12. Estudo de caso de sucesso

Se alguem puder acrescentar algo, ou me indicar fontes eu agradeço


Atenciosamente,

Jefferson Dias
  ___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] REF. MONTAR SELECT.

2010-10-29 Por tôpico VisualP Sistemas
Ola pessoal,
Preciso montar um Select e estou colocando
os neuronios pra funcionar, tenho o seguinte:

TABELAS RELACIONADAS: Cliente,Dependente,Plano

Tabela CLIENTE
IDCLI  NOME
1JUCA BALA
2MILA TULA
3PAULO TARSO

Tabela DEPENDENTE
ID   IDCLI   NOME   PARENTESCO
11Juquinha Filho(a)
21Mariazinha  Filho(a)
32MilinhaFilho(a)
42RitinhaFilho(a)
42FofinhaFilho(a)
53Paulinho  Filho(a)

Tabela PLANO
ID  PLANO QTDE_DEPENDENTE VALOR
1   PLANO A   1   4,90
2   PLANO B   2   9,90
3   PLANO C   3  14,90

PRECISO MONTAR UM SELECT COM RETORNO:

CLIENTEDEPENDENTEVALOR
JUCA  JuquinhaFilho(a)  9,90
JUCA  Mariazinha Filho(a)   9,90  - PLANO A
MILA TULA  Milinha  Filho(a)  14,90
MILA TULA  Ritinha   Filho(a) 14,90
MILA TULA  Fofinha  Filho(a)  14,90 - PLANO B
PAULOPaulinhoFilho(a)4,90 - PLANO C

ALGUEM PODE DAR UMA DICA DE COMO MONTAR ESTE SELECT.

Att,

Paulo.
VisualP Sistemas.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] REF. MONTAR SELECT.

2010-10-29 Por tôpico Fábio Gibon - Comex System
Paulo,
  monte como você acredita que deve ser e a gente te ajuda a aparar as 
arestas, mas se entendi o teu problema é que precisas fazer outer join, pois 
podem haver dependentes sem plano, é isto?

  E ainda, não vejo o relacionamento com a tabela PLANO, não está 
faltando algum campo em Cliente ou uma outra tabela?

abraços
 
Fábio Henrique Gibon
  - Original Message - 
  From: VisualP Sistemas 
  To: Comunidade PostgreSQL Brasileira 
  Sent: Friday, October 29, 2010 2:31 PM
  Subject: [pgbr-geral] REF. MONTAR SELECT.


  Ola pessoal,
  Preciso montar um Select e estou colocando
  os neuronios pra funcionar, tenho o seguinte:

  TABELAS RELACIONADAS: Cliente,Dependente,Plano

  Tabela CLIENTE
  IDCLI  NOME
  1JUCA BALA
  2MILA TULA
  3PAULO TARSO

  Tabela DEPENDENTE
  ID   IDCLI   NOME   PARENTESCO
  11Juquinha Filho(a)
  21Mariazinha  Filho(a)
  32MilinhaFilho(a)
  42RitinhaFilho(a)
  42FofinhaFilho(a)
  53Paulinho  Filho(a)

  Tabela PLANO
  ID  PLANO QTDE_DEPENDENTE VALOR
  1   PLANO A   1   4,90
  2   PLANO B   2   9,90
  3   PLANO C   3  14,90

  PRECISO MONTAR UM SELECT COM RETORNO:

  CLIENTEDEPENDENTEVALOR
  JUCA  JuquinhaFilho(a)  9,90
  JUCA  Mariazinha Filho(a)   9,90  - PLANO A
  MILA TULA  Milinha  Filho(a)  14,90
  MILA TULA  Ritinha   Filho(a) 14,90
  MILA TULA  Fofinha  Filho(a)  14,90 - PLANO B
  PAULOPaulinhoFilho(a)4,90 - PLANO C

  ALGUEM PODE DAR UMA DICA DE COMO MONTAR ESTE SELECT.

  Att,

  Paulo.
  VisualP Sistemas.



--


  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Quantidade usuários conectados

2010-10-29 Por tôpico Avelino Brun
Olá colegas!

Existe alguma forma de saber quantos usuários existem conectados ao banco de 
dados?

Obrigado
Avelino
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Quantidade usuários conectados

2010-10-29 Por tôpico Emerson Hermann
SELECT COUNT(*) AS total
  FROM (
 SELECT
   DISTINCT client_addr
   FROM pg_stat_activity
) AS x

Em 29 de outubro de 2010 14:42, Avelino Brun avel...@databrum.com.br escreveu:
 Olá colegas!

 Existe alguma forma de saber quantos usuários existem conectados ao banco de
 dados?

 Obrigado
 Avelino

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Quantidade usuários conectados

2010-10-29 Por tôpico Emerson Hermann
SELECT COUNT(*) AS total
  FROM (
 SELECT
   DISTINCT usename
   FROM pg_stat_activity
) AS x

Em 29 de outubro de 2010 14:45, Emerson Hermann
emersonherm...@gmail.com escreveu:
        SELECT COUNT(*) AS total
          FROM (
                 SELECT
               DISTINCT client_addr
                       FROM pg_stat_activity
                        ) AS x

 Em 29 de outubro de 2010 14:42, Avelino Brun avel...@databrum.com.br 
 escreveu:
 Olá colegas!

 Existe alguma forma de saber quantos usuários existem conectados ao banco de
 dados?

 Obrigado
 Avelino

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Res: Res: Res: Escolha do mét odo de replicação

2010-10-29 Por tôpico Thiago Godoi
Charly

Obrigado pela sugestão, mas dei uma pesquisada e é uma ferramenta externa ao
banco certo? Com isso não estarei perdendo desempenho?

Além disso o kettle possui algum controle para fazer extrações
incrementais ?


Em 29 de outubro de 2010 00:24, Charly Batista carl...@gmail.com escreveu:

 Thiago, boa noite!

 Talvez uma ferramenta de ETL te seja mais apropriado do que uma ferramenta
 de replicação. Existem algumas boas ferramentas de ETL disponíveis, e uma
 que gosto muito é o Kettle[1]. Com ele você consegue fazer extrações
 agendadas, como você deseja. Dá uma olhada, talvez te resolva o problema.

 [1] http://kettle.pentaho.com/

 Att,

 --
 Charly Batista
 Administrador de Banco de Dados
 http://javadevilopers.blogspot.com/
 charlyfra...@gmail.com
 Linux user #391083

 Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
 eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
 tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
 idéias.
   George Bernard Shaw (1856-1950)


 Em 28 de outubro de 2010 16:15, Thiago Godoi 
 thiagogodo...@gmail.comescreveu:

 Obrigado galera , vou pesquisar mais sobre o Slony então, porém ele possui
 essa opção de replicação agendada dos dados?

 Por exemplo eu conseguiria definir para ele replicar os dados gerados
 durante o dia , somente durante a noite?

 Em 28 de outubro de 2010 16:11, Renato Ricci 
 renatoricc...@yahoo.com.brescreveu:

 Realmente, concordo com o JotaComm. Provavelmente o Slony seja ideal para
 sua situação. Com ele você pode escolher quais objetos deseja replicar para
 o banco slave...

 T+


 __

 *Renato R. Ricci*

 *Antes de imprimir, pense em sua responsabilidade e compromisso com o
 Meio Ambiente. O Futuro está em Nossas Mãos!***


 --
 *De:* JotaComm jota.c...@gmail.com

 *Para:* Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 *Enviadas:* Quinta-feira, 28 de Outubro de 2010 15:54:44
 *Assunto:* Re: [pgbr-geral] Res: Res: Escolha do método de replicação

 Olá,

 Em 28 de outubro de 2010 15:32, Thiago Godoi 
 thiagogodo...@gmail.comescreveu:

 É realmente já percebi que o hot-standby não é o ideal para a situação.
 Vou tentar especificar melhor o que desejamos fazer.


 Tenho um banco de Desenvolvimento onde eu tenho várias bases em que eu
 estou inserindo novas informações o tempo inteiro.Na máquina de produção a
 ideia é possuir algumas das bases do banco de Desenvolvimento , somente 
 para
 consultas de clientes.


 Hum.. Que tal dar uma olhada no Slony [1]


 Meu problema seria como levar os dados do meu banco de Desenvolvimento
 para o banco de Produção (lembrando que seria somente uma parte do 
 cluster),
 a ideia seria fazer essa atualização todo dia durante a madrugada,  é
 possível algo incremental?


 [1] http://www.slony.info/

 Em 28 de outubro de 2010 14:43, Renato Ricci 
 renatoricc...@yahoo.com.br escreveu:

  Thiago, deixa eu ver se entendi.. você tem um ambiente de
 desenvolvimento onde você faz alterações físicas e lógicas no banco de
 dados. O que você quer fazer é aplicar essas alterações em um banco de
 produção? O que você vai querer aplicar no banco de produção? Somente o 
 DDL?
 Ou as informações geradas em desenvolvimento tb? Se você usar um
 hot-standby, você poderá replicar DDL e informações (cópia fiel do banco)
 para produção. Não sei como isso impactaria no seu ambiente ai, pois você
 estará aplicando as alterações no banco de produção mas a aplicação (.exe 
 ou
 alguma aplicação web) ainda ficará antiga. Se for alterações somente em
 Functions, triggers, views, ai de boa..

 Geralmente as empresas costumam usar um banco hot-standby mais para
 contingência, ou seja, caso der algum problema no banco de produção, esse
 banco hot-standby assumiria a brinca. Geralmente tem-se os seguintes
 ambientes:

 Desenvolvimento  Produção (Processo feito manualmente através de
 aplicação de scripts com alterações necessárias)
 Produção (transacional)  hot-standby (automático)

 T+

  __

 *Renato R. Ricci*

 *Antes de imprimir, pense em sua responsabilidade e compromisso com o
 Meio Ambiente. O Futuro está em Nossas Mãos!***


 --
 *De:* Thiago Godoi thiagogodo...@gmail.com
 *Para:* Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 *Enviadas:* Quinta-feira, 28 de Outubro de 2010 14:25:49
 *Assunto:* Re: [pgbr-geral] Res: Escolha do método de replicação

 Hum creio que usei a palavra errada então, não seria uma replicação.

 Seria migrar as atualizações para o banco de produção. Porém um detalhe
 que não havia citado antes, o banco de produção será usado somente para
 consultas.

 Em 28 de outubro de 2010 13:40, Renato Ricci 
 renatoricc...@yahoo.com.br escreveu:

 Thiago, creio que o hot-standby não irá funcionar da maneira que você
 deseja, pois um banco neste estado não aceita transações pois ele roda

Re: [pgbr-geral] Add Topic: Escolha do método de r eplicação - Urgente

2010-10-29 Por tôpico Fabrízio de Royes Mello
Em 28 de outubro de 2010 19:33, jmtofoli jmtof...@setadigital.com.brescreveu:

  Esse tópico do colega Thiago é uma excelente deixa, pois tenho que
 pesquisar e implementar (em 15 dias) um mecanismo de replicação que atenda a
 seguinte situação:
 Atualmente possuimos um sistema que integra matriz e filial de forma
 online, tendo a base de dados centralizada num servidor central que utiliza
 a internet para conexão das filiais. Isso tem funcionado a contento a
 bastante tempo, entretanto, um novo cliente esta exigindo algo que lhe
 garanta a disponibilidade das lojas quando a net não estiver disponivel, e
 acredito que a replicação seja a solução.



Isso quer dizer que vc tem uma única base PostgreSQL com os clients
acessando a mesma via internet... correto??



 A idéia é a seguinte: Continuar tendo um servidor central e manter as lojas
 conectadas nesse servidor, porem, esse servidor central deve estar
 replicando seus dados para um servidor que fica em cada loja. Caso a net
 caia em alguma loja ou na matriz, o servidor que roda na loja deve assumir
 as operações, e é ai que acho que a coisa complica... Nesse caso, a loja
 continuaria rodando, atualizando essa base local. Voltando a net, esse
 servidor deve sincronizar seus dados com o servidor central e voltar
 a receber as atualizações do servidor central.

Essa implementação me resolveria, a curto prazo, 2 problemas (e talvez me
 crie outros...) :
 1) O do cliente com medo da indisponibilidade;
 2) A questão da exigencia do PAF-ECF em manter o sistema funcionando
 independente da rede.



Montar uma estrutura dessas não é nada trivial... não estou dizendo que seja
impossível... mas não é trivial... pelo que pude perceber vc precisa de
replicação multi-master assíncrona... e isso realmente tem mtos pontos a
considerar e, inevitavelmente, vc terá de fazer algum ajuste na tua
aplicação para suportar esses mecanismos.

Antes de começar creio que devas dar uma lida no artigo [1] para poder
entender um pouco mais o que estou querendo te dizer... infelizmente não
temos uma solução mágica para esse teu problema... ainda mais com esse tempo
necessário para implementação.

[1]
http://www.midstorm.org/~telles/2009/07/06/a-lenda-da-replicacao-multimaster-sincrona-em-bases-distribuidas/
-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
 Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] REF. MONTAR SELECT.

2010-10-29 Por tôpico VisualP Sistemas
OK, tenho aqui os Selects seprados, vou juntar e posto aqui.

  - Original Message - 
  From: Fábio Gibon - Comex System 
  To: Comunidade PostgreSQL Brasileira 
  Sent: Friday, October 29, 2010 4:41 PM
  Subject: Re: [pgbr-geral] REF. MONTAR SELECT.


  Paulo,
monte como você acredita que deve ser e a gente te ajuda a aparar 
as arestas, mas se entendi o teu problema é que precisas fazer outer join, 
pois podem haver dependentes sem plano, é isto?

E ainda, não vejo o relacionamento com a tabela PLANO, não está 
faltando algum campo em Cliente ou uma outra tabela?

  abraços
   
  Fábio Henrique Gibon
- Original Message - 
From: VisualP Sistemas 
To: Comunidade PostgreSQL Brasileira 
Sent: Friday, October 29, 2010 2:31 PM
Subject: [pgbr-geral] REF. MONTAR SELECT.


Ola pessoal,
Preciso montar um Select e estou colocando
os neuronios pra funcionar, tenho o seguinte:

TABELAS RELACIONADAS: Cliente,Dependente,Plano

Tabela CLIENTE
IDCLI  NOME
1JUCA BALA
2MILA TULA
3PAULO TARSO

Tabela DEPENDENTE
ID   IDCLI   NOME   PARENTESCO
11Juquinha Filho(a)
21Mariazinha  Filho(a)
32MilinhaFilho(a)
42RitinhaFilho(a)
42FofinhaFilho(a)
53Paulinho  Filho(a)

Tabela PLANO
ID  PLANO QTDE_DEPENDENTE VALOR
1   PLANO A   1   4,90
2   PLANO B   2   9,90
3   PLANO C   3  14,90

PRECISO MONTAR UM SELECT COM RETORNO:

CLIENTEDEPENDENTEVALOR
JUCA  JuquinhaFilho(a)  9,90
JUCA  Mariazinha Filho(a)   9,90  - PLANO A
MILA TULA  Milinha  Filho(a)  14,90
MILA TULA  Ritinha   Filho(a) 14,90
MILA TULA  Fofinha  Filho(a)  14,90 - PLANO B
PAULOPaulinhoFilho(a)4,90 - PLANO C

ALGUEM PODE DAR UMA DICA DE COMO MONTAR ESTE SELECT.

Att,

Paulo.
VisualP Sistemas.






___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



  __ NOD32 5575 (20101029) Information __

  This message was checked by NOD32 antivirus system.
  http://www.eset.com



--
  E-mail verificado pelo Terra Anti-Spam.
  Para classificar esta mensagem como spam ou não spam, clique aqui.
  Verifique periodicamente a pasta Spam para garantir que apenas mensagens
  indesejadas sejam classificadas como Spam. 


--


  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



  __ NOD32 5575 (20101029) Information __

  This message was checked by NOD32 antivirus system.
  http://www.eset.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] REF. MONTAR SELECT.

2010-10-29 Por tôpico Fabrízio de Royes Mello
Em 29 de outubro de 2010 15:31, VisualP Sistemas p@terra.com.brescreveu:


 corte

 *PRECISO MONTAR UM SELECT COM RETORNO:*

 CLIENTEDEPENDENTEVALOR
 JUCA  JuquinhaFilho(a)  9,90
 JUCA  Mariazinha Filho(a)   9,90  - PLANO A
 MILA TULA  Milinha  Filho(a)  14,90
 MILA TULA  Ritinha   Filho(a) 14,90
 MILA TULA  Fofinha  Filho(a)  14,90 - PLANO B
 PAULOPaulinhoFilho(a)4,90 - PLANO C



Eu não testei, mas tenta ai:

SELECT cli.nome,
   dep.nome,
   dep.parentesco,
   pla.valor,
   pla.plano
  FROM (SELECT c.idcli,
   c.nome
   count(*) as qtde_dependente
  FROM cliente c
   INNER JOIN dependente d ON d.idcli = c.idcli
 GROUP BY c.idcli,
  c.nome) AS cli
   INNER JOIN dependente dep ON dep.idcli = cli.idcli
   INNER JOIN plano pla  ON pla.qtde_dependente =
cli.qtde_dependente;


Pelo que percebi a forma de juntar os planos com os clientes é pela
quantidade de dependentes...

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
 Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] [Spam] Re: REF. MONTAR SELECT.

2010-10-29 Por tôpico VisualP Sistemas
Blza Fabricio, vou testar aqui e ajustar para da o resultado esperado.
  - Original Message - 
  From: Fabrízio de Royes Mello 
  To: Comunidade PostgreSQL Brasileira 
  Sent: Friday, October 29, 2010 5:04 PM
  Subject: [Spam] Re: [pgbr-geral] REF. MONTAR SELECT.





  Em 29 de outubro de 2010 15:31, VisualP Sistemas p@terra.com.br 
escreveu:



corte 

PRECISO MONTAR UM SELECT COM RETORNO:

CLIENTEDEPENDENTEVALOR
JUCA  JuquinhaFilho(a)  9,90
JUCA  Mariazinha Filho(a)   9,90  - PLANO A
MILA TULA  Milinha  Filho(a)  14,90
MILA TULA  Ritinha   Filho(a) 14,90
MILA TULA  Fofinha  Filho(a)  14,90 - PLANO B
PAULOPaulinhoFilho(a)4,90 - PLANO C



  Eu não testei, mas tenta ai:


  SELECT cli.nome,
 dep.nome,
 dep.parentesco,
 pla.valor,
 pla.plano
FROM (SELECT c.idcli,
 c.nome
 count(*) as qtde_dependente
FROM cliente c
 INNER JOIN dependente d ON d.idcli = c.idcli
   GROUP BY c.idcli,
c.nome) AS cli
 INNER JOIN dependente dep ON dep.idcli = cli.idcli
 INNER JOIN plano pla  ON pla.qtde_dependente = cli.qtde_dependente;




  Pelo que percebi a forma de juntar os planos com os clientes é pela 
quantidade de dependentes...

  -- 
  Fabrízio de Royes Mello
   Blog sobre TI: http://fabriziomello.blogspot.com
   Perfil Linkedin: http://br.linkedin.com/in/fabriziomello




--
  E-mail verificado pelo Terra Anti-Spam.
  Para classificar esta mensagem como spam ou não spam, clique aqui.
  Verifique periodicamente a pasta Spam para garantir que apenas mensagens
  indesejadas sejam classificadas como Spam. 


--


  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



  __ NOD32 5575 (20101029) Information __

  This message was checked by NOD32 antivirus system.
  http://www.eset.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] REF. MONTAR SELECT.

2010-10-29 Por tôpico VisualP Sistemas
SHOW DE BOLA , Fabricio,
Com um pequeno ajuste fechou redondinho.

Obrigado pela dica.

Att,
Paulo.

  - Original Message - 
  From: Fabrízio de Royes Mello 
  To: Comunidade PostgreSQL Brasileira 
  Sent: Friday, October 29, 2010 5:04 PM
  Subject: [Spam] Re: [pgbr-geral] REF. MONTAR SELECT.





  Em 29 de outubro de 2010 15:31, VisualP Sistemas p@terra.com.br 
escreveu:



corte 

PRECISO MONTAR UM SELECT COM RETORNO:

CLIENTEDEPENDENTEVALOR
JUCA  JuquinhaFilho(a)  9,90
JUCA  Mariazinha Filho(a)   9,90  - PLANO A
MILA TULA  Milinha  Filho(a)  14,90
MILA TULA  Ritinha   Filho(a) 14,90
MILA TULA  Fofinha  Filho(a)  14,90 - PLANO B
PAULOPaulinhoFilho(a)4,90 - PLANO C



  Eu não testei, mas tenta ai:


  SELECT cli.nome,
 dep.nome,
 dep.parentesco,
 pla.valor,
 pla.plano
FROM (SELECT c.idcli,
 c.nome
 count(*) as qtde_dependente
FROM cliente c
 INNER JOIN dependente d ON d.idcli = c.idcli
   GROUP BY c.idcli,
c.nome) AS cli
 INNER JOIN dependente dep ON dep.idcli = cli.idcli
 INNER JOIN plano pla  ON pla.qtde_dependente = cli.qtde_dependente;




  Pelo que percebi a forma de juntar os planos com os clientes é pela 
quantidade de dependentes...

  -- 
  Fabrízio de Royes Mello
   Blog sobre TI: http://fabriziomello.blogspot.com
   Perfil Linkedin: http://br.linkedin.com/in/fabriziomello




--
  E-mail verificado pelo Terra Anti-Spam.
  Para classificar esta mensagem como spam ou não spam, clique aqui.
  Verifique periodicamente a pasta Spam para garantir que apenas mensagens
  indesejadas sejam classificadas como Spam. 


--


  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



  __ NOD32 5575 (20101029) Information __

  This message was checked by NOD32 antivirus system.
  http://www.eset.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] REF. MONTAR SELECT.

2010-10-29 Por tôpico Fabrízio de Royes Mello
Em 29 de outubro de 2010 17:30, VisualP Sistemas p@terra.com.brescreveu:

  SHOW DE BOLA , Fabricio,
 Com um pequeno ajuste fechou redondinho.



Beleza... então posta ai a solução para fecharmos essa thread.


-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
 Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Res: Res: Res: Escolha do mét odo de replicação

2010-10-29 Por tôpico Charly Batista
Thiago, boa noite!


Em 29 de outubro de 2010 16:40, Thiago Godoi thiagogodo...@gmail.comescreveu:

 Charly

 Obrigado pela sugestão, mas dei uma pesquisada e é uma ferramenta externa
 ao banco certo? Com isso não estarei perdendo desempenho?


De fato, toda ferramenta externa tende a perder um pouco de desempenho,
mas como você falou em atualizações agendadas imaginei que essa diferença de
performance não fosse ser significativa ao teu modelo de negócio.



 Além disso o kettle possui algum controle para fazer extrações
 incrementais ?


Como é uma ferramenta de ETL, você pode não apenas criar extrações
incrementais, como realizar transformação, adaptação dos dados... Enfim, ela
te possibilita uma grande quantidade de possibilidades.

Agora, é você dar uma estudada e avaliar se de fato se encaixa na solução
que você necessita.

Att,


-- 
Charly Batista
Administrador de Banco de Dados
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)



 Em 29 de outubro de 2010 00:24, Charly Batista carl...@gmail.comescreveu:

 Thiago, boa noite!

 Talvez uma ferramenta de ETL te seja mais apropriado do que uma ferramenta
 de replicação. Existem algumas boas ferramentas de ETL disponíveis, e uma
 que gosto muito é o Kettle[1]. Com ele você consegue fazer extrações
 agendadas, como você deseja. Dá uma olhada, talvez te resolva o problema.

 [1] http://kettle.pentaho.com/

 Att,

 --
 Charly Batista
 Administrador de Banco de Dados
 http://javadevilopers.blogspot.com/
 charlyfra...@gmail.com
 Linux user #391083

 Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs,
 então eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e
 eu tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
 idéias.
   George Bernard Shaw (1856-1950)


 Em 28 de outubro de 2010 16:15, Thiago Godoi 
 thiagogodo...@gmail.comescreveu:

 Obrigado galera , vou pesquisar mais sobre o Slony então, porém ele possui
 essa opção de replicação agendada dos dados?

 Por exemplo eu conseguiria definir para ele replicar os dados gerados
 durante o dia , somente durante a noite?

 Em 28 de outubro de 2010 16:11, Renato Ricci renatoricc...@yahoo.com.br
  escreveu:

 Realmente, concordo com o JotaComm. Provavelmente o Slony seja ideal para
 sua situação. Com ele você pode escolher quais objetos deseja replicar para
 o banco slave...

 T+


 __

 *Renato R. Ricci*

 *Antes de imprimir, pense em sua responsabilidade e compromisso com o
 Meio Ambiente. O Futuro está em Nossas Mãos!***


 --
 *De:* JotaComm jota.c...@gmail.com

 *Para:* Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 *Enviadas:* Quinta-feira, 28 de Outubro de 2010 15:54:44
 *Assunto:* Re: [pgbr-geral] Res: Res: Escolha do método de replicação

 Olá,

 Em 28 de outubro de 2010 15:32, Thiago Godoi 
 thiagogodo...@gmail.comescreveu:

 É realmente já percebi que o hot-standby não é o ideal para a situação.
 Vou tentar especificar melhor o que desejamos fazer.


 Tenho um banco de Desenvolvimento onde eu tenho várias bases em que eu
 estou inserindo novas informações o tempo inteiro.Na máquina de produção a
 ideia é possuir algumas das bases do banco de Desenvolvimento , somente 
 para
 consultas de clientes.


 Hum.. Que tal dar uma olhada no Slony [1]


 Meu problema seria como levar os dados do meu banco de Desenvolvimento
 para o banco de Produção (lembrando que seria somente uma parte do 
 cluster),
 a ideia seria fazer essa atualização todo dia durante a madrugada,  é
 possível algo incremental?


 [1] http://www.slony.info/

 Em 28 de outubro de 2010 14:43, Renato Ricci 
 renatoricc...@yahoo.com.br escreveu:

  Thiago, deixa eu ver se entendi.. você tem um ambiente de
 desenvolvimento onde você faz alterações físicas e lógicas no banco de
 dados. O que você quer fazer é aplicar essas alterações em um banco de
 produção? O que você vai querer aplicar no banco de produção? Somente o 
 DDL?
 Ou as informações geradas em desenvolvimento tb? Se você usar um
 hot-standby, você poderá replicar DDL e informações (cópia fiel do banco)
 para produção. Não sei como isso impactaria no seu ambiente ai, pois você
 estará aplicando as alterações no banco de produção mas a aplicação 
 (.exe ou
 alguma aplicação web) ainda ficará antiga. Se for alterações somente em
 Functions, triggers, views, ai de boa..

 Geralmente as empresas costumam usar um banco hot-standby mais para
 contingência, ou seja, caso der algum problema no banco de produção, esse
 banco hot-standby assumiria a brinca. Geralmente tem-se os seguintes
 ambientes:

 Desenvolvimento  Produção (Processo feito manualmente através de
 

[pgbr-geral] Fw: REF. MONTAR SELECT.

2010-10-29 Por tôpico VisualP Sistemas
Ta na mão a solução. 

SELECT 
   cli.nome,
   cli.idcli,
   dep.dependente,
   pla.valor,
   pla.plano,
   par.parentesco
  FROM (SELECT c.idcli,
   c.nome,
   count(*) as qtde_dependente
  FROM clifor c
   INNER JOIN dependentes d ON d.idcli = c.idcli
 GROUP BY c.idcli,
  c.nome) AS cli
   INNER JOIN dependentes dep ON dep.idcli = cli.idcli
   INNER JOIN plano plaON pla.idplano = cli.qtde_dependente
   INNER JOIN parentesparON par.idparente = dep.parentesco
ORDER BY cli.nome;

Att,
Paulo.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] REF. MONTAR SELECT.

2010-10-29 Por tôpico Osvaldo Kussama
Em 29/10/10, VisualP Sistemasp@terra.com.br escreveu:
 Ola pessoal,
 Preciso montar um Select e estou colocando
 os neuronios pra funcionar, tenho o seguinte:

 TABELAS RELACIONADAS: Cliente,Dependente,Plano

 Tabela CLIENTE
 IDCLI  NOME
 1JUCA BALA
 2MILA TULA
 3PAULO TARSO

 Tabela DEPENDENTE
 ID   IDCLI   NOME   PARENTESCO
 11Juquinha Filho(a)
 21Mariazinha  Filho(a)
 32MilinhaFilho(a)
 42RitinhaFilho(a)
 42FofinhaFilho(a)
 53Paulinho  Filho(a)

 Tabela PLANO
 ID  PLANO QTDE_DEPENDENTE VALOR
 1   PLANO A   1   4,90
 2   PLANO B   2   9,90
 3   PLANO C   3  14,90

 PRECISO MONTAR UM SELECT COM RETORNO:

 CLIENTEDEPENDENTEVALOR
 JUCA  JuquinhaFilho(a)  9,90
 JUCA  Mariazinha Filho(a)   9,90  - PLANO A
 MILA TULA  Milinha  Filho(a)  14,90
 MILA TULA  Ritinha   Filho(a) 14,90
 MILA TULA  Fofinha  Filho(a)  14,90 - PLANO B
 PAULOPaulinhoFilho(a)4,90 - PLANO C

 ALGUEM PODE DAR UMA DICA DE COMO MONTAR ESTE SELECT.



Pelo que entendi você quer fazer o JOIN com tabela PLANO utilizando a
quantidade de dependentes de cada cliente apurada na tabela
DEPENDENTE.
Agora não sei é bem isso porque seu exemplo não está de acordo, ou as
referências aos planos estão erradas.
Talvez devesse ser:
JUCA - plano B
MILA - plano C
PAULO - plano A

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral