Re: [pgbr-geral] Valor do campo no Before Insert
O Fabrizio já respondeu e provavelmente dará certo (testarei assim que chegar em casa). Mas como vc perguntou do objetivo é o seguinte: Tabela perfil Campos per_id, per_descr Tabela usuario Campos usu_id, usu_username, per_id Na tabela perfil tenho um registro cuja descrição é Usuário Sempre que incluir um novo registro na tabela usuario, o campo per_id da tabela deverá ser preenchido com o valor do campo per_id da tabela perfil, cuso per_descr seja igual a Usuário -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line 2009/8/13 JotaComm jota.c...@gmail.com: Olá, Nilson Fiquei um pouco confuso. Você poderia discorrer um pouco mais sobre qual o seu objetivo com esta função? 2009/8/13 Nilson Chagas nilson.chagas.si...@gmail.com Pessoal, Não sou dba, e estou apenas gatinhando no postgresql. Preciso de uma trigger no before insert da tabela (ou talvez alguém tenha até uma outra solução). Estou tentando algo assim: CREATE OR REPLACE FUNCTION fc_perfil_usuario() RETURNS trigger AS $BODY$begin -- verifica se o campo per_id é nulo IF NEW.per_id IS NULL THEN -- busca o id na tabela perfil SELECT per_id into perfil FROM perfil where per_descr = 'Usuário'; END IF; -- campo per_id da tabela usuário NEW.per_id := perfil; RETURN NEW; end$BODY$ LANGUAGE 'plpgsql' VOLATILE; COMMENT ON FUNCTION fc_perfil_usuario() IS 'Se o campo perfil do usuario estiver nulo a função busca o id da descrição usuario'; Qual é a maneira correta de se fazer isto?? -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line ___ 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 http://www.dextra.com.br/postgres ___ 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] of-topic
Sorry I was out working with other platforms for a while. Now i would like to restart with PGSql but i 'm not being able to access to the list. Can you Help. Thanks in advance Mário Agostinho Reis ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Valor do campo no Before Insert
Olá, Pensei na seguinte solução. Veja se atende a sua solução: CREATE RULE rule_exemplo AS ON INSERT TO usuario DO UPDATE usuario SET per_id=perfil.per_id FROM perfil WHERE perfil.per_desc='Usuario'; Exemplo de utilização: INSERT INTO usuario(usu_id,usu_usename) VALUES (1,'JP'); Ao realizar este INSERT automaticamente o campo per_id da tabela usuario é preenchido com per_id da tabela perfil onde a condição é per_desc='Usuario'. 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com O Fabrizio já respondeu e provavelmente dará certo (testarei assim que chegar em casa). Mas como vc perguntou do objetivo é o seguinte: Tabela perfil Campos per_id, per_descr Tabela usuario Campos usu_id, usu_username, per_id Na tabela perfil tenho um registro cuja descrição é Usuário Sempre que incluir um novo registro na tabela usuario, o campo per_id da tabela deverá ser preenchido com o valor do campo per_id da tabela perfil, cuso per_descr seja igual a Usuário -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line 2009/8/13 JotaComm jota.c...@gmail.com: Olá, Nilson Fiquei um pouco confuso. Você poderia discorrer um pouco mais sobre qual o seu objetivo com esta função? 2009/8/13 Nilson Chagas nilson.chagas.si...@gmail.com Pessoal, Não sou dba, e estou apenas gatinhando no postgresql. Preciso de uma trigger no before insert da tabela (ou talvez alguém tenha até uma outra solução). Estou tentando algo assim: CREATE OR REPLACE FUNCTION fc_perfil_usuario() RETURNS trigger AS $BODY$begin -- verifica se o campo per_id é nulo IF NEW.per_id IS NULL THEN -- busca o id na tabela perfil SELECT per_id into perfil FROM perfil where per_descr = 'Usuário'; END IF; -- campo per_id da tabela usuário NEW.per_id := perfil; RETURN NEW; end$BODY$ LANGUAGE 'plpgsql' VOLATILE; COMMENT ON FUNCTION fc_perfil_usuario() IS 'Se o campo perfil do usuario estiver nulo a função busca o id da descrição usuario'; Qual é a maneira correta de se fazer isto?? -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line ___ 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 http://www.dextra.com.br/postgres ___ 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 Espero ter ajudado. []s -- JotaComm http://jotacomm.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] of-topic
Hi, Mário One question. Do you speak Portuguese? If possible you can speak in Portuguese please. What happens? Errors? 2009/8/14 Mário Reis mariodosr...@gmail.com Sorry I was out working with other platforms for a while. Now i would like to restart with PGSql but i 'm not being able to access to the list. Can you Help. Thanks in advance Mário Agostinho Reis ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Regards -- JotaComm http://jotacomm.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Of-Topic
Desculpem, Estive a trabalhar com outras plataformas por algum tempo e gostaria de retomar o PostGreSql mas, não estou a conseguir aceder à Lista. (Consultar a Lista) Alguém pode ajudar-me. Obrigado Mário Agostinho Reis ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Valor do campo no Before Insert
Puxa sabia que existia outras formas. Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para o campo no disparo da inserção?? Se eu informar um id diferente, ele não vai sobregravar?? (só para confirmar) -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line 2009/8/14 JotaComm jota.c...@gmail.com: Olá, Pensei na seguinte solução. Veja se atende a sua solução: CREATE RULE rule_exemplo AS ON INSERT TO usuario DO UPDATE usuario SET per_id=perfil.per_id FROM perfil WHERE perfil.per_desc='Usuario'; Exemplo de utilização: INSERT INTO usuario(usu_id,usu_usename) VALUES (1,'JP'); Ao realizar este INSERT automaticamente o campo per_id da tabela usuario é preenchido com per_id da tabela perfil onde a condição é per_desc='Usuario'. 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com O Fabrizio já respondeu e provavelmente dará certo (testarei assim que chegar em casa). Mas como vc perguntou do objetivo é o seguinte: Tabela perfil Campos per_id, per_descr Tabela usuario Campos usu_id, usu_username, per_id Na tabela perfil tenho um registro cuja descrição é Usuário Sempre que incluir um novo registro na tabela usuario, o campo per_id da tabela deverá ser preenchido com o valor do campo per_id da tabela perfil, cuso per_descr seja igual a Usuário -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line 2009/8/13 JotaComm jota.c...@gmail.com: Olá, Nilson Fiquei um pouco confuso. Você poderia discorrer um pouco mais sobre qual o seu objetivo com esta função? 2009/8/13 Nilson Chagas nilson.chagas.si...@gmail.com Pessoal, Não sou dba, e estou apenas gatinhando no postgresql. Preciso de uma trigger no before insert da tabela (ou talvez alguém tenha até uma outra solução). Estou tentando algo assim: CREATE OR REPLACE FUNCTION fc_perfil_usuario() RETURNS trigger AS $BODY$begin -- verifica se o campo per_id é nulo IF NEW.per_id IS NULL THEN -- busca o id na tabela perfil SELECT per_id into perfil FROM perfil where per_descr = 'Usuário'; END IF; -- campo per_id da tabela usuário NEW.per_id := perfil; RETURN NEW; end$BODY$ LANGUAGE 'plpgsql' VOLATILE; COMMENT ON FUNCTION fc_perfil_usuario() IS 'Se o campo perfil do usuario estiver nulo a função busca o id da descrição usuario'; Qual é a maneira correta de se fazer isto?? -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line ___ 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 http://www.dextra.com.br/postgres ___ 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 Espero ter ajudado. []s -- JotaComm http://jotacomm.wordpress.com http://www.dextra.com.br/postgres ___ 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] Tabela como parâmetro de função
Amigos, Estou com um problema: preciso parametrizar o nome de uma tabela em uma função! Então, quando escrevo, dentro da função, o seguinte código: SELECT INTO var_resposta SUM(campo) FROM $1 return var_resposta; Considerando que $1 contem o nome da tabela, cujos dados devem ser retornados, o postgres informa que isso caracteriza um erro de sintaxe! Alguém sabe qual a sintaxe apropriada para este objetivo? -- Abraços, Alex. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Relation with OID XXXX does not exists
Pessoal, preciso de uma ajuda para solucionar um problema que se estende a vários dias. Temos um modelo de banco de dados que é utilizado em mais de 200 clientes, todos para uma base OLTP de um sistema ERP. Em nenhum outro cliente este problema aparece, somente em um cliente que roda Windows 2003 Server e o banco PostgreSQL 8.2.13. A estrutura física compreende 8 VIEWS (cada uma relacionada a uma entidade independente). Para exibir as informações de venda (que envolve estas 8 VIEWS) existe uma outra VIEW superior chamada FATURAMENTO_VIEW_SRC, que relaciona todas as demais para trazer resultados analiticos. Esta view superior foi montada para servir relatórios de faturamento, e é materializada em uma tabela com a mesma estrutura através de TRIGGERS. Pois bem... ocorre um comportamento anormal em um cliente, apenas neste cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando - ocorre um erro: Relation with OID 184407 does not exists Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... SELECT FROM O pior de tudo, é que este OID não existe na tabela pg_class. Acontece ao executar um comando INSERT, se depois do erro eu tentar executá-lo novamente com os mesmos valores, tudo segue-se normalmente. Eu já tentei fazer um backup completo do banco, realizar um DROP DATABASE, depois restaurá-lo novamente para verificar se isso corrige o problema, mas não tive sucesso. Alguém tem alguma idéia? NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui na empresa e aqui não conseguimos simular o problema. -- Tiago J. Adami Dois Vizinhos - Paraná - Brasil ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Valor do campo no Before Insert
Olá, Nilson 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com Puxa sabia que existia outras formas. Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para o campo no disparo da inserção?? Sim. Toda inserção que estiver na tabela ele chama rule e executa o comando UPDATE. Se eu informar um id diferente, ele não vai sobregravar?? (só para confirmar) Irá gerar um nova entrada (linha) na tabela. -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line 2009/8/14 JotaComm jota.c...@gmail.com: Olá, Pensei na seguinte solução. Veja se atende a sua solução: CREATE RULE rule_exemplo AS ON INSERT TO usuario DO UPDATE usuario SET per_id=perfil.per_id FROM perfil WHERE perfil.per_desc='Usuario'; Exemplo de utilização: INSERT INTO usuario(usu_id,usu_usename) VALUES (1,'JP'); Ao realizar este INSERT automaticamente o campo per_id da tabela usuario é preenchido com per_id da tabela perfil onde a condição é per_desc='Usuario'. 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com O Fabrizio já respondeu e provavelmente dará certo (testarei assim que chegar em casa). Mas como vc perguntou do objetivo é o seguinte: Tabela perfil Campos per_id, per_descr Tabela usuario Campos usu_id, usu_username, per_id Na tabela perfil tenho um registro cuja descrição é Usuário Sempre que incluir um novo registro na tabela usuario, o campo per_id da tabela deverá ser preenchido com o valor do campo per_id da tabela perfil, cuso per_descr seja igual a Usuário -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line 2009/8/13 JotaComm jota.c...@gmail.com: Olá, Nilson Fiquei um pouco confuso. Você poderia discorrer um pouco mais sobre qual o seu objetivo com esta função? 2009/8/13 Nilson Chagas nilson.chagas.si...@gmail.com Pessoal, Não sou dba, e estou apenas gatinhando no postgresql. Preciso de uma trigger no before insert da tabela (ou talvez alguém tenha até uma outra solução). Estou tentando algo assim: CREATE OR REPLACE FUNCTION fc_perfil_usuario() RETURNS trigger AS $BODY$begin -- verifica se o campo per_id é nulo IF NEW.per_id IS NULL THEN -- busca o id na tabela perfil SELECT per_id into perfil FROM perfil where per_descr = 'Usuário'; END IF; -- campo per_id da tabela usuário NEW.per_id := perfil; RETURN NEW; end$BODY$ LANGUAGE 'plpgsql' VOLATILE; COMMENT ON FUNCTION fc_perfil_usuario() IS 'Se o campo perfil do usuario estiver nulo a função busca o id da descrição usuario'; Qual é a maneira correta de se fazer isto?? -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line ___ 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 http://www.dextra.com.br/postgres ___ 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 Espero ter ajudado. []s -- JotaComm http://jotacomm.wordpress.com http://www.dextra.com.br/postgres ___ 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 http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tabela como parâmetro de função
Olá, Alex Para você fazer isso você precisar usar SQL dinâmico. De uma olhada em [1]: [1] http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN 2009/8/14 Alex Paulo alexpauloolive...@gmail.com Amigos, Estou com um problema: preciso parametrizar o nome de uma tabela em uma função! Então, quando escrevo, dentro da função, o seguinte código: SELECT INTO var_resposta SUM(campo) FROM $1 return var_resposta; Considerando que $1 contem o nome da tabela, cujos dados devem ser retornados, o postgres informa que isso caracteriza um erro de sintaxe! Alguém sabe qual a sintaxe apropriada para este objetivo? -- Abraços, Alex. ___ 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 http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Valor do campo no Before Insert
2009/8/14 JotaComm jota.c...@gmail.com: Olá, Nilson 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com Puxa sabia que existia outras formas. Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para o campo no disparo da inserção?? Sim. Toda inserção que estiver na tabela ele chama rule e executa o comando UPDATE. Se eu informar um id diferente, ele não vai sobregravar?? (só para confirmar) Irá gerar um nova entrada (linha) na tabela. Aqui você me confundiu. Se eu fizer um insert into usuario (usu_id, usu_username) values (1, 'teste') Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id da tabela usuario. E se eu fizer insert into usuario (usu_id, usu_username, per_id) values (1, 'teste', 10) Ele vai criar uma nova linha?? Ps.: Perdão pela ignorancia. -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Relation with OID XXXX does not exists
Olá, Tiago Você deu uma olhada no log de atividades. Aparece mais alguma informação? Você verificou se não existe algum índice ou tabela corrompida ou alguma coisa do tipo? 2009/8/14 Tiago Adami adam...@gmail.com Pessoal, preciso de uma ajuda para solucionar um problema que se estende a vários dias. Temos um modelo de banco de dados que é utilizado em mais de 200 clientes, todos para uma base OLTP de um sistema ERP. Em nenhum outro cliente este problema aparece, somente em um cliente que roda Windows 2003 Server e o banco PostgreSQL 8.2.13. A estrutura física compreende 8 VIEWS (cada uma relacionada a uma entidade independente). Para exibir as informações de venda (que envolve estas 8 VIEWS) existe uma outra VIEW superior chamada FATURAMENTO_VIEW_SRC, que relaciona todas as demais para trazer resultados analiticos. Esta view superior foi montada para servir relatórios de faturamento, e é materializada em uma tabela com a mesma estrutura através de TRIGGERS. Pois bem... ocorre um comportamento anormal em um cliente, apenas neste cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando - ocorre um erro: Relation with OID 184407 does not exists Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... SELECT FROM O pior de tudo, é que este OID não existe na tabela pg_class. Acontece ao executar um comando INSERT, se depois do erro eu tentar executá-lo novamente com os mesmos valores, tudo segue-se normalmente. Eu já tentei fazer um backup completo do banco, realizar um DROP DATABASE, depois restaurá-lo novamente para verificar se isso corrige o problema, mas não tive sucesso. Alguém tem alguma idéia? NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui na empresa e aqui não conseguimos simular o problema. -- Tiago J. Adami Dois Vizinhos - Paraná - Brasil ___ 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 http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Valor do campo no Before Insert
Nilson, 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com 2009/8/14 JotaComm jota.c...@gmail.com: Olá, Nilson 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com Puxa sabia que existia outras formas. Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para o campo no disparo da inserção?? Sim. Toda inserção que estiver na tabela ele chama rule e executa o comando UPDATE. Se eu informar um id diferente, ele não vai sobregravar?? (só para confirmar) Irá gerar um nova entrada (linha) na tabela. Aqui você me confundiu. Se eu fizer um insert into usuario (usu_id, usu_username) values (1, 'teste') Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id da tabela usuario. E se eu fizer insert into usuario (usu_id, usu_username, per_id) values (1, 'teste', 10) Ele vai criar uma nova linha?? Ao executar desta forma você fara o INSERT porém após esta operação de INSERT é chamada uma RULE de UPDATE e assim o seu registro inserido será atualizado pela RULE. Se você não quiser que ela funcione assim, no final da RULE coloque a seguinte condição AND usuario.per_id IS NULL, assim ele não atualizará o valor do insert quando você informa o para per_id. Ps.: Perdão pela ignorancia. -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line ___ 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 http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Valor do campo no Before Insert
2009/8/14 JotaComm jota.c...@gmail.com: Nilson, 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com 2009/8/14 JotaComm jota.c...@gmail.com: Olá, Nilson 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com Puxa sabia que existia outras formas. Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para o campo no disparo da inserção?? Sim. Toda inserção que estiver na tabela ele chama rule e executa o comando UPDATE. Se eu informar um id diferente, ele não vai sobregravar?? (só para confirmar) Irá gerar um nova entrada (linha) na tabela. Aqui você me confundiu. Se eu fizer um insert into usuario (usu_id, usu_username) values (1, 'teste') Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id da tabela usuario. E se eu fizer insert into usuario (usu_id, usu_username, per_id) values (1, 'teste', 10) Ele vai criar uma nova linha?? Ao executar desta forma você fara o INSERT porém após esta operação de INSERT é chamada uma RULE de UPDATE e assim o seu registro inserido será atualizado pela RULE. Se você não quiser que ela funcione assim, no final da RULE coloque a seguinte condição AND usuario.per_id IS NULL, assim ele não atualizará o valor do insert quando você informa o para per_id. Puxa, agora ficou bem claro e vai funcionar como preciso. Abusando um pouco mais de vocês. create rule, ou trigger?? Posso ter problema com performance, visto que os dois podem fazer o mesmo serviço?? -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico Twitter: avozdoevangelho http://www.amados.com.br http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico On-Line ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Relation with OID XXXX does not exists
Infelizmente não há nenhuma informação adicional. O erro aparece nos logs logo após a execução do INSERT que é disparado pelo TRIGGER. Realmente, esqueci de comentar, este é um banco de dados que foi recuperado de um servidor anterior onde o disco rígido apresentou problemas físicos (bad block), então a única forma de recuperar o banco foi configurando a opção ZERO_DAMAGED_PAGES = ON e fazendo um backup. A princípio o banco não está corrompido, pois fizemos o backup em arquivo texto plano para depois restaurá-lo novamente, e apagamos todos os objetos (exceto as tabelas com dados) para recriá-los posteriormente. E o erro persiste. Uma informação adicional: recebi agora a pouco um comunicado por parte do cliente que a seguinte mensagem está sendo exibida, alternando com esta do OID: Error while executing the query; ERROR: could not open relation 1663/191861/229966: Permission denied; SELECT * FROM PCCDPITE WHERE ITEM = '003214'; Ou seja, um simples SELECT executado na abertura do cadastro de produtos. Se fechar o aplicativo, entrar novamente e executar, o erro não aparece mais. Acredito que estes dois erros tenham a mesma causa, mas já não sei mais o que pode ser... -- Tiago J. Adami Dois Vizinhos - Paraná - Brasil 2009/8/14 JotaComm jota.c...@gmail.com Olá, Tiago Você deu uma olhada no log de atividades. Aparece mais alguma informação? Você verificou se não existe algum índice ou tabela corrompida ou alguma coisa do tipo? 2009/8/14 Tiago Adami adam...@gmail.com Pessoal, preciso de uma ajuda para solucionar um problema que se estende a vários dias. Temos um modelo de banco de dados que é utilizado em mais de 200 clientes, todos para uma base OLTP de um sistema ERP. Em nenhum outro cliente este problema aparece, somente em um cliente que roda Windows 2003 Server e o banco PostgreSQL 8.2.13. A estrutura física compreende 8 VIEWS (cada uma relacionada a uma entidade independente). Para exibir as informações de venda (que envolve estas 8 VIEWS) existe uma outra VIEW superior chamada FATURAMENTO_VIEW_SRC, que relaciona todas as demais para trazer resultados analiticos. Esta view superior foi montada para servir relatórios de faturamento, e é materializada em uma tabela com a mesma estrutura através de TRIGGERS. Pois bem... ocorre um comportamento anormal em um cliente, apenas neste cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando - ocorre um erro: Relation with OID 184407 does not exists Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... SELECT FROM O pior de tudo, é que este OID não existe na tabela pg_class. Acontece ao executar um comando INSERT, se depois do erro eu tentar executá-lo novamente com os mesmos valores, tudo segue-se normalmente. Eu já tentei fazer um backup completo do banco, realizar um DROP DATABASE, depois restaurá-lo novamente para verificar se isso corrige o problema, mas não tive sucesso. Alguém tem alguma idéia? NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui na empresa e aqui não conseguimos simular o problema. -- Tiago J. Adami Dois Vizinhos - Paraná - Brasil ___ 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 http://www.dextra.com.br/postgres ___ 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] Relation with OID XXXX does not exists
Olá, Tiago 2009/8/14 Tiago Adami adam...@gmail.com Infelizmente não há nenhuma informação adicional. O erro aparece nos logs logo após a execução do INSERT que é disparado pelo TRIGGER. Realmente, esqueci de comentar, este é um banco de dados que foi recuperado de um servidor anterior onde o disco rígido apresentou problemas físicos (bad block), então a única forma de recuperar o banco foi configurando a opção ZERO_DAMAGED_PAGES = ON e fazendo um backup. A princípio o banco não está corrompido, pois fizemos o backup em arquivo texto plano para depois restaurá-lo novamente, e apagamos todos os objetos (exceto as tabelas com dados) para recriá-los posteriormente. E o erro persiste. Uma informação adicional: recebi agora a pouco um comunicado por parte do cliente que a seguinte mensagem está sendo exibida, alternando com esta do OID: Error while executing the query; ERROR: could not open relation 1663/191861/229966: Permission denied; SELECT * FROM PCCDPITE WHERE ITEM = '003214'; Aqui podemos perceber que o usuário tem problemas de permissão de acesso. Como estão as permissões de acesso do diretório data e os seus subdiretórios? Ou seja, um simples SELECT executado na abertura do cadastro de produtos. Se fechar o aplicativo, entrar novamente e executar, o erro não aparece mais. Acredito que estes dois erros tenham a mesma causa, mas já não sei mais o que pode ser... -- Tiago J. Adami Dois Vizinhos - Paraná - Brasil 2009/8/14 JotaComm jota.c...@gmail.com Olá, Tiago Você deu uma olhada no log de atividades. Aparece mais alguma informação? Você verificou se não existe algum índice ou tabela corrompida ou alguma coisa do tipo? 2009/8/14 Tiago Adami adam...@gmail.com Pessoal, preciso de uma ajuda para solucionar um problema que se estende a vários dias. Temos um modelo de banco de dados que é utilizado em mais de 200 clientes, todos para uma base OLTP de um sistema ERP. Em nenhum outro cliente este problema aparece, somente em um cliente que roda Windows 2003 Server e o banco PostgreSQL 8.2.13. A estrutura física compreende 8 VIEWS (cada uma relacionada a uma entidade independente). Para exibir as informações de venda (que envolve estas 8 VIEWS) existe uma outra VIEW superior chamada FATURAMENTO_VIEW_SRC, que relaciona todas as demais para trazer resultados analiticos. Esta view superior foi montada para servir relatórios de faturamento, e é materializada em uma tabela com a mesma estrutura através de TRIGGERS. Pois bem... ocorre um comportamento anormal em um cliente, apenas neste cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando - ocorre um erro: Relation with OID 184407 does not exists Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... SELECT FROM O pior de tudo, é que este OID não existe na tabela pg_class. Acontece ao executar um comando INSERT, se depois do erro eu tentar executá-lo novamente com os mesmos valores, tudo segue-se normalmente. Eu já tentei fazer um backup completo do banco, realizar um DROP DATABASE, depois restaurá-lo novamente para verificar se isso corrige o problema, mas não tive sucesso. Alguém tem alguma idéia? NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui na empresa e aqui não conseguimos simular o problema. -- Tiago J. Adami Dois Vizinhos - Paraná - Brasil ___ 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 http://www.dextra.com.br/postgres ___ 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 http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Of-Topic
2009/8/14 Mário Reis mariodosr...@gmail.com: Estive a trabalhar com outras plataformas por algum tempo e gostaria de retomar o PostGreSql mas, não estou a conseguir aceder à Lista. (Consultar a Lista) Vá em: https://listas.postgresql.org.br/cgi-bin/mailman/options/pgbr-geral - informe seu e-mail e senha; - altere as opções de recebimento de e-mail (particularmente Mail delivery). Para consultar o histórico da lista vá em: http://listas.postgresql.org.br/pipermail/pgbr-geral/ Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Interpretação do explain analyse
Oi Rauni, Obrigado pela sua explicação, vou testar isso aqui, existe alguma outra possibilidade sem criar as tmp tables?? Pouco provável. Criei índices para todas as combinaçoes de campos usadas na consulta, além de tentar mexer na sintaxe dela para ver se o otimizador tentava outro plano. Nada funcionou, mesmo em tabelas sem atualização, com CLUSTER, VACUUM e ANALYZE. Talvez (eu disse TALVEZ) o otimizador resolva usar um índice se você trocar essa consulta gigante pelas 28 consultas individuais, uma para cada linha, o que deixará o desempenho delas juntas muito melhor do que o dessa consulta. Sim, também acho que contraria o bom senso, mas como estamos falando do otimizador do Postgres, as chances são boas. Atenciosamente, Mozart Hasse ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Relation with OID XXXX does not exists
As permissões estão certas. Tudo funciona bem, os erros não acontecem sempre - isso que me deixa furioso. Encontrei algumas referências na internet sobre a possibilidade de ser o programa antivírus, que está bloqueando o acesso aos arquivos do PostgreSQL. Vamos desabilitá-lo temporariamente para avaliar os resultados. -- Tiago J. Adami Dois Vizinhos - Paraná - Brasil 2009/8/14 JotaComm jota.c...@gmail.com Olá, Tiago 2009/8/14 Tiago Adami adam...@gmail.com Infelizmente não há nenhuma informação adicional. O erro aparece nos logs logo após a execução do INSERT que é disparado pelo TRIGGER. Realmente, esqueci de comentar, este é um banco de dados que foi recuperado de um servidor anterior onde o disco rígido apresentou problemas físicos (bad block), então a única forma de recuperar o banco foi configurando a opção ZERO_DAMAGED_PAGES = ON e fazendo um backup. A princípio o banco não está corrompido, pois fizemos o backup em arquivo texto plano para depois restaurá-lo novamente, e apagamos todos os objetos (exceto as tabelas com dados) para recriá-los posteriormente. E o erro persiste. Uma informação adicional: recebi agora a pouco um comunicado por parte do cliente que a seguinte mensagem está sendo exibida, alternando com esta do OID: Error while executing the query; ERROR: could not open relation 1663/191861/229966: Permission denied; SELECT * FROM PCCDPITE WHERE ITEM = '003214'; Aqui podemos perceber que o usuário tem problemas de permissão de acesso. Como estão as permissões de acesso do diretório data e os seus subdiretórios? Ou seja, um simples SELECT executado na abertura do cadastro de produtos. Se fechar o aplicativo, entrar novamente e executar, o erro não aparece mais. Acredito que estes dois erros tenham a mesma causa, mas já não sei mais o que pode ser... -- Tiago J. Adami Dois Vizinhos - Paraná - Brasil 2009/8/14 JotaComm jota.c...@gmail.com Olá, Tiago Você deu uma olhada no log de atividades. Aparece mais alguma informação? Você verificou se não existe algum índice ou tabela corrompida ou alguma coisa do tipo? 2009/8/14 Tiago Adami adam...@gmail.com Pessoal, preciso de uma ajuda para solucionar um problema que se estende a vários dias. Temos um modelo de banco de dados que é utilizado em mais de 200 clientes, todos para uma base OLTP de um sistema ERP. Em nenhum outro cliente este problema aparece, somente em um cliente que roda Windows 2003 Server e o banco PostgreSQL 8.2.13. A estrutura física compreende 8 VIEWS (cada uma relacionada a uma entidade independente). Para exibir as informações de venda (que envolve estas 8 VIEWS) existe uma outra VIEW superior chamada FATURAMENTO_VIEW_SRC, que relaciona todas as demais para trazer resultados analiticos. Esta view superior foi montada para servir relatórios de faturamento, e é materializada em uma tabela com a mesma estrutura através de TRIGGERS. Pois bem... ocorre um comportamento anormal em um cliente, apenas neste cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando - ocorre um erro: Relation with OID 184407 does not exists Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... SELECT FROM O pior de tudo, é que este OID não existe na tabela pg_class. Acontece ao executar um comando INSERT, se depois do erro eu tentar executá-lo novamente com os mesmos valores, tudo segue-se normalmente. Eu já tentei fazer um backup completo do banco, realizar um DROP DATABASE, depois restaurá-lo novamente para verificar se isso corrige o problema, mas não tive sucesso. Alguém tem alguma idéia? NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui na empresa e aqui não conseguimos simular o problema. -- Tiago J. Adami Dois Vizinhos - Paraná - Brasil ___ 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 http://www.dextra.com.br/postgres ___ 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 http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___
Re: [pgbr-geral] Tabela como parâmetro de função
OBRIGADO!!! 2009/8/14 JotaComm jota.c...@gmail.com Olá, Alex Para você fazer isso você precisar usar SQL dinâmico. De uma olhada em [1]: [1] http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN 2009/8/14 Alex Paulo alexpauloolive...@gmail.com Amigos, Estou com um problema: preciso parametrizar o nome de uma tabela em uma função! Então, quando escrevo, dentro da função, o seguinte código: SELECT INTO var_resposta SUM(campo) FROM $1 return var_resposta; Considerando que $1 contem o nome da tabela, cujos dados devem ser retornados, o postgres informa que isso caracteriza um erro de sintaxe! Alguém sabe qual a sintaxe apropriada para este objetivo? -- Abraços, Alex. ___ 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 http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Abraços, Alex. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Interpretação do explain analyse
Legal, Os textos são bastante atualizados, existe bastante update e insert, delete não. estou usando o pg 8.3 autovacum então acho que é automatico ne? o analyse eu não rodo nao. é o analyse que atualiza as estatisticas? Nei 2009/8/14 Mozart Hasse mozart.ha...@usa.net tentava outro plano. Nada funcionou, mesmo em tabelas sem atualização, com CLUSTER, VACUUM e ANALYZE. Talvez (eu disse TALVEZ) o otimizador resolva usar um índice se você trocar essa consulta gigante pelas 28 consultas individuais, uma para cada linha, o que deixará o desempenho delas juntas muito melhor do que o dessa consulta. Sim, também acho que contraria o bom senso, mas como estamos falando do otimizador do Postgres, as chances são boas. Atenciosamente, -- Nei Rauni Santos nra...@gmail.com +55 41 85020985 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Interpretação do explain analyse
Opa, Sim, é o analyze que é o responsável por atualizar as estatísticas do banco. 2009/8/14 Nei Rauni Santos nra...@gmail.com Legal, Os textos são bastante atualizados, existe bastante update e insert, delete não. estou usando o pg 8.3 autovacum então acho que é automatico ne? o analyse eu não rodo nao. é o analyse que atualiza as estatisticas? Nei 2009/8/14 Mozart Hasse mozart.ha...@usa.net tentava outro plano. Nada funcionou, mesmo em tabelas sem atualização, com CLUSTER, VACUUM e ANALYZE. Talvez (eu disse TALVEZ) o otimizador resolva usar um índice se você trocar essa consulta gigante pelas 28 consultas individuais, uma para cada linha, o que deixará o desempenho delas juntas muito melhor do que o dessa consulta. Sim, também acho que contraria o bom senso, mas como estamos falando do otimizador do Postgres, as chances são boas. Atenciosamente, -- Nei Rauni Santos nra...@gmail.com +55 41 85020985 ___ 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 http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Postgresql 8.2.4 melhorá config uração - Lentidão exporádicas
veja se no momento de lentidão o sistema está utilizando memória swap, quanto aos parâmetros,eu seria mais cauteloso na definição de *work_mem*, pois se muitas conexões fizerem consultas grandes (até seu limite de 220) vc vai 'estourar' em muito a memória disponível. sendo um servidor dedicado, vc pode ajustar shmmax para os 8G (ou próximo a isso); monitore a memória nos momentos de lentidao utilizando 'top' e 'free'. att. Walter - Gutemberg Sarlo - Hotmail gutembergsco...@hotmail.com escreveu: De: Gutemberg Sarlo - Hotmail gutembergsco...@hotmail.com Para: pgbr-geral@listas.postgresql.org.br Enviadas: Quinta-feira, 13 de Agosto de 2009 10:20:40 (GMT-0300) Auto-Detected Assunto: [pgbr-geral] Postgresql 8.2.4 melhorá configuração - Lentidão exporádicas Pessoal, bom dia! Estou com alguns problemas e dificuldade em identificar causas momentanias de lentidão do banco, penso que talvez seja alguma coisa ligada as configurações do banco e semafaros do Linux, gostaria da experiência de vocês para orientação para tentar chegar numa configuração mais equalizada a demanda e equipamento. Demanda pesada de consultas e transações de manutenção, aplicação web (30%) e client Server (70%). O Vacuum é executado toda madrugada automaticamente via script: su root -c vacuumdb -U $vU -h $vH -z -f -v -d $vB /home/postgresql/logs/vacuumdb2.txt Dell PowerEdge 1800 Xeon 8GB - HD scsi (dedicado) OpenSuse 10.3 Postgresql 8.2.4 == Sysctl.conf == kernel.shmall = 2147483648 kernel.shmmax = 2147483648 kernel.shmmni = 309329920 kernel.sem = 250 32000 100 128 #kernel.disable_cap_mlock = 1 fs.file-max = 65536 #net.ipv4.ip_local_port_range = 1024 65000 #net.core.rmem_default = 16777216 #1048576 #net.core.rmem_max = 16777216 #1048576 #net.core.wmem_default = 16777216 #262144 net.core.wmem_max = 16777216 #262144 vm.overcommit_memory = 2 vm.overcommit_ratio = 70 == Postgresql.conf == max_connections = 220 # (change requires restart) shared_buffers = 1024MB # min 128kB or max_connections*16kB max_prepared_transactions = 3 # can be 0 or more work_mem = 512MB# min 64kB maintenance_work_mem = 1024MB # min 1MB max_fsm_pages = 204800 # min max_fsm_relations*16, 6 bytes each vacuum_cost_delay = 100 # 0-1000 milliseconds //GS 200 fsync = on # turns forced synchronization on or off wal_sync_method = fsync # the default is the first option full_page_writes = on # recover from partial page writes wal_buffers = 128kB # min 32kB commit_delay = 500 # range 0-10, in microseconds //GS 1000 commit_siblings = 5 # range 1-1000 checkpoint_segments = 32# in logfile segments, min 1, 16MB each //GS 8 checkpoint_timeout = 5min # range 30s-1h checkpoint_warning = 30s# 0 is off enable_bitmapscan = on enable_hashagg = on enable_hashjoin = on enable_indexscan = on enable_mergejoin = on enable_nestloop = on enable_seqscan = on enable_sort = on enable_tidscan = on random_page_cost = 2.0 # same scale as above //GS 1 - antes 4.0 effective_cache_size = 2GB stats_command_string = on update_process_title = on stats_start_collector = on # needed for block or row stats stats_block_level = off stats_row_level = on autovacuum = off# enable autovacuum subprocess? deadlock_timeout = 1s max_locks_per_transaction = 64 # min 10 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.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] Postgresql 8.2.4 melhorá config uração - Lentidão exporádicas
Walter Maier Neto escreveu: sendo um servidor dedicado, vc pode ajustar shmmax para os 8G (ou próximo a isso); Ugh? Uma máquina com 8 GB para que utilizar shmmax com 8GB? Eu não recomendaria ter esse valor mais do que 4GB. Além disso, o shmall deve ser ajustado de acordo também. -- Euler Taveira de Oliveira http://www.timbira.com/ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral