Re: [pgbr-geral] Error pgbadger
Em 21 de março de 2018 17:09, Uellinton Mendesescreveu: > Danilo > > Você acessa o servidor como root e executa um processo manual pra gerar os > reports? > > Abs, > Uellinton > Acesso como root e executo o comando manualmente, como também já coloquei o comando em um script e agendei no crontab, em ambos os casos dá o mesmo problema. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Error pgbadger
Em 21 de março de 2018 15:42, Uellinton Mendesescreveu: > Olá Danilo, > > Você deve estar usando Linux. > > Qual usuário o processo está usando para criar os arquivos? > > Verifique com " ulimit -n " o máximo de arquivos que pode ser aberto pelo > usuário corrente. o Default é 1024. > > Em limits.conf adicione > [usuario do processo] softnofile 2048 > [usuario do processo] hard nofile 2048 > > Mas verifique porque o pgbadger realmente precisa abrir tantos arquivos > (muitos logfiles por exemplo). Tente não exagerar no limite de arquivos > abertos. > > Abs > > *Uellinton Mendes* > No caso estou gerando com 316, totalizando no máximo 20Gb (cada arquivo possui no máximo 65Mb), será que é por causa do tamanho dos arquivos? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Error pgbadger
Pessoal, Estou gerando o report do pgbadger, porém, durante a geração ocorre o seguinte erro: "Error in tempfile() using /tmp/tmp_pgbadger.bin: Could not create temp file /tmp/tmp_pgbadgerBz_o.bin: Too many open files at /usr/bin/pgbadger line 1524" e o report não é gerado. Penso que seja a quantidade de arquivos de log do postgres, sendo isso, qual o limite de arquivos? Estou gerando com as opções "-q" e "-j4" []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Delete
Em 18 de dezembro de 2017 18:32, Fábio Telles Rodriguez < fabio.tel...@gmail.com> escreveu: > vamos imaginar que a tabela 't' tem o campo 'id' que você quer remover as > 20 mil linhas: > > postgres=# create table t (id integer); > CREATE TABLE > postgres=# insert into t select * from generate_series(1,150); > LOG: temporary file: path "pg_tblspc/581531196/PG_9.3_ > 201306121/pgsql_tmp/pgsql_tmp29753.0", size 2100 > INSERT 0 150 > > Agora vou criar uma tabela temporária que tenha 20 mil registros > aleatórios. Serão os registros que eu vou querer apagar da tabela 't' > > postgres=# create temporary table f (id integer); > CREATE TABLE > postgres=# insert into f select round(random()*150) from > generate_series(1,2); > INSERT 0 2 > > Agora eu faço o DELETE dos registros que escolhi: > > postgres=# delete from t where exists (select 1 from f where f.id=t.id); > DELETE 19866 > > Ou seja, eu prefiro fazer um SUBSELECT para apagar tudo. > > A minha tabela possui uma outra com históricos, então eu tenho o seguinte cenário: Tabela principal com 79 colunas, 1,5 milhões de registros e 596 MB de tamanho; Tabela de historico com 20 colunas, 10 milhões de registros e 1,2 GB de tamanho; Para excluir os registros da tabela principal, eu tenho que excluir primeiro na tabela de historicos, então eu excluí os 20 mil registros utilizando o operador "IN" e o delete foi rápido, porém, na tabela principal não, o campo utilizado no delete não é a PK mas um índice único. Será que pode ter ocorrido algum problema na tabela principal como um índice corrompido? No explain utilizando o "IN" eu tenho: Delete on tabela_a (cost=25.50..96449.56 rows=20059 width=6) Utilizando o método proposto pelo Telles eu tenho: Delete on tabela_a (cost=356.43..1324.56 rows=843680 width=12) []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Delete
Pessoal, Qual seria a melhor prática para deletar 20 mil registros em uma tabela com 1,5 milhões de registros, vale ressaltar que o campo condicional do delete é a pk da tabela: a) Deletar os 20 mil de uma só vez com a condição "IN" no WHERE; b) Fazer um loop na aplicação e deletar um por vez; c) Outra técnica (qual?); Existe alguma forma de melhorar a rapidez do delete? Algum parâmetro no .conf? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Retornar apenas números
Em 2 de novembro de 2017 07:58, Felipe Rigotti -SBsistemas < fel...@sbsistemas.com.br> escreveu: > Em 2 de novembro de 2017 02:33, Danilo Silva <danilo.dsg.go...@gmail.com> > escreveu: > >> Pessoal, >> >> Tenho um campo do tipo text onde são armazenados letras+números ou >> somente números, exemplo: "PT145896ZZ" ou "116485". >> >> Como posso fazer uma consulta para retornar apenas as linhas onde >> contenham apenas números, no exemplo acima, queria retornasse apenas >> "116485". >> >> []s >> Danilo >> >> ___ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > > Bom dia talvez usando uma expressão regular: > > select campo > from tabela > where campo ~'^[0-9]+$' > > E se você quiser extrair os números inclusive das colunas que tenham > letras, aí você pode usar *regexp_replace* > > Felipe obrigado, funcionou perfeitamente. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Retornar apenas números
Pessoal, Tenho um campo do tipo text onde são armazenados letras+números ou somente números, exemplo: "PT145896ZZ" ou "116485". Como posso fazer uma consulta para retornar apenas as linhas onde contenham apenas números, no exemplo acima, queria retornasse apenas "116485". []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Delete ou Update em dois registros identicos
Danilo Gomes Em 16 de outubro de 2017 15:32, Edelson Regis de Limaescreveu: > Olá Flávio. > > Mas com esse exemplo você está supondo que na tabela exista o campo "id" > que seria uma chave única, correto? > O problema é que nessa tabela que mencionei não sei porque raios não > existe essa chave única. Tem um campo id, auto incremento, que seria essa > chave única, mas não sei como o sistema conseguiu inserir dois registros > identicos, inclusive o valor do id... > Então eu teria que ver se dá para identificar de outra maneira, pela > posição física do registro, sei lá... > Não sei se isso é possível... rs > > Você tem duas opções: a) se a tabela possuir o campo OID (essa coluna normalmente fica invisível, depende do método de criação da tabela), você pode deletar por esse registro, exemplo: SELECT OID, col_a, col_ b FROM tabela, e depois deletar: DELETE FROM tabela WHERE (OID = ?) b) se a tabela não for muito grande, você pode adicionar uma nova coluna com o tipo sendo serial: ALTER TABLE tabela ADD COLUMN cod_delete serial. Com isso você consegue deletar através do código dessa coluna. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Range de horas
Em 8 de agosto de 2017 11:32, Fábio Telles Rodriguezescreveu: > Dê uma olhada aqui: https://www.postgresql.org/ > docs/9.6/static/functions-srf.html > > Fácil fácil > KK, mais fácil que isso? creio que não existe. Não sabia que o generate_series podia utilizar time. Valeu Fábio...serviu perfeitamente. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Range de horas
Pessoal, Num período das 08:00 as 18:00, preciso montar um range a cada 30 minutos, por exemplo: 08:00 08:30 09:00 09:30 . . . 17:00 17:30 18:00 É possível? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consultas com AND entre relação N x N
Em 14 de julho de 2017 16:40, Kauan Mocelinescreveu: > Boa tarde, estou com um problema no postgresql que não consigo resolver, > tenho a seguinte relação n x n: > > *tb_aditivo* > cod_aditivo > > *tb_aditivo_motivo_aditivo* > cod_aditivo_motivo_aditivo > cod_aditivo > cod_motivo_aditivo > > *tb_motivo_aditivo* > cod_motivo_aditivo > > > Na minha pesquisa informo 3 cod_motivo_aditivo = (2,4,8), preciso retornar > o cod_aditivo referente a EXATAMENTE estes 3 motivos. > > Não testei, mas tente assim: SELECT cod_aditivo FROM ( SELECT tb_aditivo_motivo_aditivo.cod_aditivo, string_agg(tb_aditivo_motivo_aditivo.cod_motivo_aditivo::text,',' ORDER BY tb_aditivo_motivo_aditivo.cod_motivo_aditivo) AS cod_motivo_aditivo FROM tb_aditivo_motivo_aditivo WHERE (tb_aditivo_motivo_aditivo.cod_motivo_aditivo IN (2,4,8)) GROUP BY tb_aditivo_motivo_aditivo.cod_aditivo ) AS aditivos WHERE (cod_motivo_aditivo = '2,4,8') []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Problemas com pg_stop_backup
Em 14 de junho de 2017 18:18, Euler Taveira <eu...@timbira.com.br> escreveu: > 2017-06-14 12:26 GMT-03:00 Danilo Silva <danilo.dsg.go...@gmail.com>: > >> 2017-06-14 12:22:30 BRT [15481-330] @@ [] LOG: archive command failed >> with exit code 23 >> 2017-06-14 12:22:30 BRT [15481-331] @@ [] DETAIL: The failed archive >> command was: /var/lib/pgsql/pgopen/archivecomand.sh >> "pg_xlog/0001259000A8" "0001259000A8" >> >> Verifiquei que o archive >> >> 0001259000A8 realmente não existe e o pg_stop_backup ainda >> está sendo executado. Tem alguma coisa que eu possa fazer? >> > > Não existe no pg_xlog mas foi arquivado? Ou não existe no pg_xlog e não > foi arquivado? BTW, qual é a versão do postgres? Isso está parecendo um bug > no script archivecomand.sh. > Versão 9.3.4. O arquivo não existe mais no pg_xlog, porém ele foi arquivado. Fiz um teste, copiei o arquivo 0001259000A8 para a pasta pg_xlog aí no log mostrou erro em outro arquivo 0001259000A9, que também já foi arquivado. Uma dúvida, eu consigo saber quais são os arquivos que o postgres está tentando arquivar? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Problemas com pg_stop_backup
Em 14 de junho de 2017 11:50, Euler Taveira <eu...@timbira.com.br> escreveu: > Em 14 de junho de 2017 11:48, Danilo Silva <danilo.dsg.go...@gmail.com> > escreveu: > >> >> Reparei que deu problema na comunicação entre os servidores no >> archive_command, já corrigi esse problema, tenho que aguardar ele efetuar o >> arquivamento do que estava pendente? >> > > Sim. Como eu disse, para se ter um backup consistente é necessário > arquivar todo WAL gerado entre o pg_start_backup e pg_stop_backup. > Euler, No log do postgres está aparecendo: sending incremental file list rsync: link_stat "/var/lib/pgsql/9.3/data/pg_xlog/0001259000A8" failed: No such file or directory (2) sent 18 bytes received 12 bytes 20.00 bytes/sec total size is 0 speedup is 0.00 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6] sending incremental file list rsync: link_stat "/var/lib/pgsql/9.3/data/pg_xlog/0001259000A8" failed: No such file or directory (2) sent 18 bytes received 12 bytes 60.00 bytes/sec total size is 0 speedup is 0.00 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6] 2017-06-14 12:22:30 BRT [15481-330] @@ [] LOG: archive command failed with exit code 23 2017-06-14 12:22:30 BRT [15481-331] @@ [] DETAIL: The failed archive command was: /var/lib/pgsql/pgopen/archivecomand.sh "pg_xlog/0001259000A8" "0001259000A8" Verifiquei que o archive 0001259000A8 realmente não existe e o pg_stop_backup ainda está sendo executado. Tem alguma coisa que eu possa fazer? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Problemas com pg_stop_backup
Em 13 de junho de 2017 08:38, Euler Taveira <eu...@timbira.com.br> escreveu: > 2017-06-12 16:37 GMT-03:00 Danilo Silva <danilo.dsg.go...@gmail.com>: > >> >> Executei o pg_start_backup('teste',true); >> >> Logo em seguida executei o pg_stop_backup() mas o comando não é >> terminado, recebo essas mensagens: >> >> NOTICE: pg_stop_backup cleanup done, waiting for required WAL segments >> to be archived >> WARNING: pg_stop_backup still waiting for all required WAL segments to >> be archived (60 seconds elapsed) >> > > Isso quer dizer que ainda falta arquivar alguns segmentos do WAL. Esses > segmentos precisam ser arquivados para que você tenha um backup íntegro > (backup íntegro é composto da cópia física com todos os segmentos do WAL > que foram gerados entre o pg_start_backup e pg_stop_backup). Monitore o > > pg_stat_archiver para saber se o arquivamento está falhando (se estiver, > corrija para que o pg_stop_backup termine). Se sua versão for inferior a > 9.4, você pode verificar as falhas no log. A partir da versão 10, o > pg_stop_backup tem um parâmetro para não esperar concluir o arquivamento > (assim, o retorno é imediato). > Euler, A mensagem exibida é: NOTICE: pg_stop_backup cleanup done, waiting for required WAL segments to be archived WARNING: pg_stop_backup still waiting for all required WAL segments to be archived (60 seconds elapsed) DICA: Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments a versão é 9.3 Reparei que deu problema na comunicação entre os servidores no archive_command, já corrigi esse problema, tenho que aguardar ele efetuar o arquivamento do que estava pendente? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Problemas com pg_stop_backup
Pessoal, Executei o pg_start_backup('teste',true); Logo em seguida executei o pg_stop_backup() mas o comando não é terminado, recebo essas mensagens: NOTICE: pg_stop_backup cleanup done, waiting for required WAL segments to be archived WARNING: pg_stop_backup still waiting for all required WAL segments to be archived (60 seconds elapsed) DICA: Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments. WARNING: pg_stop_backup still waiting for all required WAL segments to be archived (120 seconds elapsed) DICA: Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments. WARNING: pg_stop_backup still waiting for all required WAL segments to be archived (240 seconds elapsed) DICA: Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments. O que devo fazer? []s Danilo Gomes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] VACUUM FULL
Em 26 de janeiro de 2017 13:53, Fabrízio de Royes Mello < fabri...@timbira.com.br> escreveu: > On 26-01-2017 12:19, Danilo Silva wrote: > > Pessoal, > > > > Atualmente utilizo a versão 9.3 com replicação nativa para um escravo, > > fazendo cópia dos archives para o escravo + servidor de backup. > > > > Como podemos identificar a necessidade ou não de rodar um VACUUM FULL? > > > > Se vc der uma pesquisada no histórico [1] desta lista irá encontrar > diversas discussões a respeito de como detectar inchaço de objetos > OK, achei no histórico [1] um tópico onde fala que podemos nos basear pela view pg_stat_all_tables (coluna n_dead_tup) para verificar a eficiência do autovacuum, mas em relação a coluna n_dead_tup, qual número seria relevante, fazer valer a pena, para executarmos um VACUUM FULL? Pergunto isso pois estou com problemas de espaço em disco, então estamos tentando tirar cada Mb de onde der pra tirar, mas não queremos comprometer a eficiência do banco. > > > Em média, quanto tempo leva para o espaço em disco ocupado pelo VACUUM > > FULL ser liberado? > > > > Difícil mensurar isso porque, por exemplo, seu servidor pode estar > retendo wal files porque seu procedimento de archive pode estar > demorando por latência de rede ou algo do gênero. Com archive_mode > ligado e o archive_command devidamente configurado o PostgreSQL só irá > reciclar o wal (remover segmentos antigos do pg_xlog) quando o > arquivamento for bem sucedido. Entao se vc faz um "scp" ou "rsync", por > exemplo, o sinal de que o segmento foi copiado com sucesso para outro > local só será enviado ao PostgreSQL após o comando ser executado. > > Note que eu apenas "imaginei" um cenário baseado nas informações que > você forneceu, mas existem outras variáveis a considerar. > Quais seriam essas variáveis? [1] https://listas.postgresql.org.br/pipermail/pgbr-geral/2015-March/040234.html []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] VACUUM FULL
Pessoal, Atualmente utilizo a versão 9.3 com replicação nativa para um escravo, fazendo cópia dos archives para o escravo + servidor de backup. Como podemos identificar a necessidade ou não de rodar um VACUUM FULL? Como teste, rodei o VACUUM FULL apenas em uma tabela de 700mb e o diretório pg_xlog cresceu 400mb a mais e levou um tempo para ser liberado esse espaço adicional, esse comportamento é normal? Em média, quanto tempo leva para o espaço em disco ocupado pelo VACUUM FULL ser liberado? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Instalação do PostgreSQL em Mac
Pessoal, Vocês teriam um tutorial de instalação do postgres no mac (versão yosemite)? Qual a melhor forma de instalar? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Copiar registros de um banco para outro sem repetir campos únicos
Em 24 de novembro de 2016 16:13, Saraiva Silvaescreveu: > Exemplo, > Tenho dois bancos exatamente iguais onde existe uma tabela PESSOA com os > campos (num_registro, nome, email, telefone). O campo num_registro não é > auto incremento. > Preciso pegar os registros que estão em uma base e colocar na outra. Como > o campo num_registro é unique, tenho que garantir que os registros que > estão sendo inseridos não usem o o valor que está armazenado, ao invés > disso os registros inseridos devem receber novos valores para o campo > num_registro, começando a partir do próximo valor que está no banco de > destino. > > Preciso fazer isso com um sql genérico. > Talvez não seja a melhor solução, mas você pode criar uma trigger na tabela de destino que verifique se aquele código já existe, se existir, ele gera outro, caso contrário, mantem o mesmo. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] PG Restore demorando muito
Em 18 de novembro de 2016 09:08, Marcell Ribeiroescreveu: > Bom dia galera, estou fazendo um pg restore mas está demorando cerca de 7 > horas pra restaurar apenas um tar de 60gb, > > Que parâmetros eu poderia mudar no postgresql.conf pra melhorar isso? Já > pesquisei no google e alterei alguns mas ainda não deu certo não sei por > que. > Dê uma olhada em [1] e veja se ajuda. []s Danilo [1] https://savepoint.blog.br/2012/10/22/acelerando-a-importacao-de-dados-no-postgresql/ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Pgbadger
> > Em qua, 12 de out de 2016 às 00:36, Danilo Silva < > danilo.dsg.go...@gmail.com> escreveu: > >> Pessoal, >> >> Instalei o pgbadger e gerei um relatório com o comando: pgbadger -f >> stderr -v /var/lib/postgresql/9.3/main/pg_log/postgresql-Mon.log -o >> /var/www/pg_segunda.html (a diretiva log_filename está como >> 'postgresql-%a.log') >> >> O relatório mostrou as estatísticas de um dia de atividade do banco, qual >> a melhor forma de obter as estatísticas de um modo geral? Terei que gerar >> executar o comando diariamente? Existem outras formas de gerar o relatório? >> > > Teoricamente, sim, você terá que executar o comando toda vez que você > quiser que um log seja analisado. > > Note que você pode gerar um único relatório para todos os logs que você > tem num diretório usando caracteres coringa, como postgresql-*.log > > Legal Flavio, valeu pela dica... Qual seria a melhor configuração do postgresql.conf, em relação ao pgbadger, para que eu possa gerar um relatório o mais analítico possível? Como por exemplo queries lentas e/ou uso de índicies? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Pgbadger
Pessoal, Instalei o pgbadger e gerei um relatório com o comando: pgbadger -f stderr -v /var/lib/postgresql/9.3/main/pg_log/postgresql-Mon.log -o /var/www/pg_segunda.html (a diretiva log_filename está como 'postgresql-%a.log') O relatório mostrou as estatísticas de um dia de atividade do banco, qual a melhor forma de obter as estatísticas de um modo geral? Terei que gerar executar o comando diariamente? Existem outras formas de gerar o relatório? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Servidor lento
2016-09-17 14:15 GMT-03:00 Antonio Cesar: > Boa tarde, > > O servidor do meu cliente depois de uma queda de energia ficou muito lento > algum pode me ajudar com alguma informação do que pode ter acontercido. > Verifique se não ficou alguma transação preparada pendente de COMMIT ou ROLLBACK. Dê uma olha na view pg_prepared_statements []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Programa para imprimir as tabelas e seus relacionamentos
> > Acredito que você quis dizer DER (Diagrama entidade relacionamento). >> > Putz, é DER, valeu por me lembrar :) Pessoal, vou avaliar as indicações que vocês enviaram, retorno depois com os resultados. Por ora, obrigado a todos. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Programa para imprimir as tabelas e seus relacionamentos
Pessoal, Quais programas existem atualmente no mercado (que funcionem para o PostgreSQL) que imprima as tabelas com seus campos e relacionamentos, se não me falha a memória, quero que imprima o MER da minha base. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Particionamento
Pessoal, Em uma consulta, envolvendo tabelas particionadas, o postgres considera a trigger da tabela pai ou o check constraint das tabelas filhas para ir direto na tabela onde estão os dados? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Balanceamento de carga
Pessoal, Atualmente, considerando um servidor master e outro slave (replicação nativa), o que é recomendado para balanceamento de carga apenas? PostgreSQL 9.3, S.O Debian []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Alterar tablespace
Em 18 de abril de 2016 17:23, Matheus de Oliveira <matioli.math...@gmail.com > escreveu: > > 2016-04-18 14:55 GMT-03:00 Danilo Silva <danilo.dsg.go...@gmail.com>: > >> Preciso mover toda a base para uma outra partição, qual seria a melhor >> solução, criar uma outra tablespace e executar um alter database alter >> tablespace? > > > Não vejo uma necessidade de tablespace necessariamente, você poderia > simplesmente mover o diretório PGDATA para o novo local. > Matheus, não entendi essa colocação, pois o diretorio padrão, /var/lib/postgresql/9.3/main/, está em uma partição, já o diretorio da tablespace está em outro, e somente uma base está neste diretório. A base postgres, por exemplo, está no diretorio padrão. > > A forma de fazer isso varia dependendo do seu SO/Distro e forma como > instalou o PostgreSQL. > Debian 7, PostreSQL 9.3 instalado via apt-get []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Alterar tablespace
Em 18 de abril de 2016 16:00, Sebastian Webber <sebast...@swebber.me> escreveu: > > > Em 18 de abril de 2016 14:55, Danilo Silva <danilo.dsg.go...@gmail.com> > escreveu: > >> Pessoal, >> > > Boa tarde! > > >> >> Meu cluster possui apenas 1 base dados, e toda a base está em apenas uma >> tablespace. >> >> Preciso mover toda a base para uma outra partição, qual seria a melhor >> solução, criar uma outra tablespace e executar um alter database alter >> tablespace? >> > > é uma opção válida. se você tem janela para manutenção eu recomendo que > você pare, extenda o disco e inicie o banco novamente, se não tem vc pode > fazer um novo tablespace em outro disco (conforme proposto) ou até, caso > use LVM, extender o volume em outro disco. > > Prefira o que que for mais seguro (ou tem menos chances de falhar) antes > do mais rápido. > > Criando uma nova tablespace, e levando em consideração que a base está com 140 Gb, é possível presumirmos quanto tempo levará o alter tablespace? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Alterar tablespace
Pessoal, Meu cluster possui apenas 1 base dados, e toda a base está em apenas uma tablespace. Preciso mover toda a base para uma outra partição, qual seria a melhor solução, criar uma outra tablespace e executar um alter database alter tablespace? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Desempenho de índices
Pessoal, Existe diferença entre criar índices assim: CREATE INDEX foo_c1_idx ON foo (campo1); CREATE INDEX foo_c2_idx ON foo (campo2); ou assim: CREATE INDEX foo_idx ON foo (campo1,campo2); Ambas as formas terão o mesmo desempenho? []s Danilo ___ 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: Ajustar Seqüência Serial.
Em 26 de janeiro de 2016 10:56, Pauloescreveu: > Olá Pessoal, > > > > Tenho um ERP onde sempre fazemos conversão de dados de outros sistemas > para nosso banco. > > Ocorre em alguns casos de conversão estou tendo problemas com o START do > Serial. > > Preciso do comando que ajuste automaticamente as Seqüências dos Seriais. > > > > Alguém pode dar uma dica ? > > > ALTER SEQUENCE nome_sequencia RESTART WITH novo_valor; []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Restore de schema 8.0 em 9.3
Pessoal, Efetuei o dump (utilizando versão 9.3) do schema de uma base versão 8.0, ao efetuar o restore desse schema, é apresentado alguns erros, como esse: 2015-12-17 14:22:54 BRST [5888-23] LOG: comando: CREATE FUNCTION lo_in(cstring) RETURNS lo LANGUAGE c IMMUTABLE STRICT AS '$libdir/lo', 'lo_in'; 2015-12-17 14:22:54 BRST [5888-21] ERRO: não pôde encontrar função "lo_in" no arquivo "/usr/lib/postgresql/9.3/lib/lo.so" Como posso resolver esse erro (ambos servidores são linux)? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Restore de schema 8.0 em 9.3
Em 17 de dezembro de 2015 14:50, Fabrízio de Royes Mello < fabri...@timbira.com.br> escreveu: > On 17-12-2015 14:33, Danilo Silva wrote: > > Pessoal, > > > > Efetuei o dump (utilizando versão 9.3) do schema de uma base versão 8.0, > > ao efetuar o restore desse schema, é apresentado alguns erros, como esse: > > > > > > 2015-12-17 14:22:54 BRST [5888-23] LOG: comando: CREATE FUNCTION > > lo_in(cstring) RETURNS lo > > LANGUAGE c IMMUTABLE STRICT > > AS '$libdir/lo', 'lo_in'; > > > > 2015-12-17 14:22:54 BRST [5888-21] ERRO: não pôde encontrar função > > "lo_in" no arquivo "/usr/lib/postgresql/9.3/lib/lo.so" > > > > Como posso resolver esse erro (ambos servidores são linux)? > > > > Nessa sua base 8.0 vc está usando a contrib/lo... > Pergunta básica, como saber se está usando? > > Instale o pacote "contrib" da 9.3 e veja se funciona. > Bem, eu instalei via repositório: aptitude install postgresql-contrib-9.3 []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Erro de codificação
Pessoal, Estou tentando efetuar um COPY via psql local de um arquivo, porém recebo a mensagem: "sequência de bytes é inválida para codificação "UTF8": 0x80" Tanto client_encoding e server_encoding estão como UTF8, já o arquivo, executando um file -i mostra como "text/plain; charset=utf-8". Qual forma correta de importar esse arquivo? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Erro de codificação
Em 26 de novembro de 2015 15:31, Glauco Torresescreveu: > > > > > Pessoal, >> >> Estou tentando efetuar um COPY via psql local de um arquivo, porém recebo >> a mensagem: "sequência de bytes é inválida para codificação "UTF8": 0x80" >> >> Tanto client_encoding e server_encoding estão como UTF8, já o arquivo, >> executando um file -i mostra como "text/plain; charset=utf-8". >> >> Qual forma correta de importar esse arquivo? >> >> []s >> Danilo >> >> > > No comando COPY você esta passando o ENCODING? > > Um exemplo de como ser usado. > COPY xyz FROM '/pasta/xyz.TXT' using delimiters '@' ENCODING 'UTF8' ; > > > Efetuei como indicado, porém, apresentou o mesmo erro. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Erro de codificação
Em 26 de novembro de 2015 15:55, Glauco Torres <torres.gla...@gmail.com> escreveu: > > > No dia 26 de novembro de 2015 às 15:47, Danilo Silva < > danilo.dsg.go...@gmail.com> escreveu: > >> Em 26 de novembro de 2015 15:31, Glauco Torres <torres.gla...@gmail.com> >> escreveu: >> >>> >>> >>> >>> >>> Pessoal, >>>> >>>> Estou tentando efetuar um COPY via psql local de um arquivo, porém >>>> recebo a mensagem: "sequência de bytes é inválida para codificação "UTF8": >>>> 0x80" >>>> >>>> Tanto client_encoding e server_encoding estão como UTF8, já o arquivo, >>>> executando um file -i mostra como "text/plain; charset=utf-8". >>>> >>>> Qual forma correta de importar esse arquivo? >>>> >>>> []s >>>> Danilo >>>> >>>> >>> >>> No comando COPY você esta passando o ENCODING? >>> >>> Um exemplo de como ser usado. >>> COPY xyz FROM '/pasta/xyz.TXT' using delimiters '@' ENCODING 'UTF8' ; >>> >>> >>> Efetuei como indicado, porém, apresentou o mesmo erro. >> >> >> []s >> Danilo >> >> >> > Quando você executa os comandos SHOW client_encoding; e SHOW > server_encoding; estão retornando como UTF8 ? > > Já que segundo você o file -i do arquivo já esta como UTF8, caso não > esteja você pode usar o iconv para isso. > > Está tudo como UTF8: SHOW client_encoding: UTF8 SHOW server_encoding: UTF8 file -i: text/plain; charset=utf-8 []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Erro de codificação
Em 26 de novembro de 2015 16:02, Danilo Silva <danilo.dsg.go...@gmail.com> escreveu: > Em 26 de novembro de 2015 15:55, Glauco Torres <torres.gla...@gmail.com> > escreveu: > >> >> >> No dia 26 de novembro de 2015 às 15:47, Danilo Silva < >> danilo.dsg.go...@gmail.com> escreveu: >> >>> Em 26 de novembro de 2015 15:31, Glauco Torres <torres.gla...@gmail.com> >>> escreveu: >>> >>>> >>>> >>>> >>>> >>>> Pessoal, >>>>> >>>>> Estou tentando efetuar um COPY via psql local de um arquivo, porém >>>>> recebo a mensagem: "sequência de bytes é inválida para codificação "UTF8": >>>>> 0x80" >>>>> >>>>> Tanto client_encoding e server_encoding estão como UTF8, já o arquivo, >>>>> executando um file -i mostra como "text/plain; charset=utf-8". >>>>> >>>>> Qual forma correta de importar esse arquivo? >>>>> >>>>> []s >>>>> Danilo >>>>> >>>>> >>>> >>>> No comando COPY você esta passando o ENCODING? >>>> >>>> Um exemplo de como ser usado. >>>> COPY xyz FROM '/pasta/xyz.TXT' using delimiters '@' ENCODING 'UTF8' ; >>>> >>>> >>>> Efetuei como indicado, porém, apresentou o mesmo erro. >>> >>> >>> []s >>> Danilo >>> >>> >>> >> Quando você executa os comandos SHOW client_encoding; e SHOW >> server_encoding; estão retornando como UTF8 ? >> >> Já que segundo você o file -i do arquivo já esta como UTF8, caso não >> esteja você pode usar o iconv para isso. >> >> Está tudo como UTF8: > > SHOW > > client_encoding: UTF8 > SHOW server_encoding: UTF8 > file -i: text/plain; charset=utf-8 > > > Um detalhe, o arquivo foi gerado no ms sqlserver []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Insert antes de raise exception
Pessoal, Dentro de uma função que retorna uma trigger, é possível efetuar um insert antes de um raise exception? Por exemplo IF condicao THEN INSERT tabela_log... RAISE EXCEPTION ''; RETURN NULL; END IF; RETURN NEW; A intenção é gravar em uma tabela de log a tentativa de insert. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Insert antes de raise exception
Em 24 de novembro de 2015 11:50, Flavio Henrique Araque Gurgel < fha...@gmail.com> escreveu: > Pessoal, >> >> Dentro de uma função que retorna uma trigger, é possível efetuar um >> insert antes de um raise exception? >> >> Por exemplo >> >> IF condicao THEN >> INSERT tabela_log... >> RAISE EXCEPTION ''; >> RETURN NULL; >> END IF; >> RETURN NEW; >> >> A intenção é gravar em uma tabela de log a tentativa de insert. >> > > Quando você faz o RAISE EXCEPTION o que você faz é justamente... uma > exceção. Logo, um rollback é feito obrigatoriamente. > > Para fazer o que você quer, tem que tratar a exceção, um bloco assim no > fim da função pode te ajudar: > EXCEPTION > WHEN unique_violation THEN > INSERT INTO tabela_log... ; > RETURN outro_valor; > END; > > Lembre-se de tratar seu RETURN na chamada da função, porque você *não* > terá tratamento do rollback de outros comandos numa mesma transação, neste > caso. > > Legal Flavio, vou testar, obrigado. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipos de dados
Em 21 de novembro de 2015 13:05, Tiago José Adamiescreveu: > Em 21 de novembro de 2015 11:26, Osvaldo Kussama > escreveu: > > Em 21/11/15, Luciano Reis escreveu: > >> Bom dia pessoal, eu fiz uma busca sobre tipos de dados para campos > >> específicos no PostgreSQL para gravar CEP,CPF, CNPJ, telefones e valores > >> monetários e encontrei opiniões muito diversas uns defendem que CPF tem > de > >> ser guardado como string outros não. > >> É um primeiro projeto que eu vou iniciar usando o PostgreSQL e não sei > >> tomar essa decisão, como não encontrei nada concreto e fundamentado > estou > >> recorrendo a comunidade. > > > > Creio que todos estes campos sejam numéricos e portanto devem ser > > armazenados como números (inteiro ou decimal de precisão arbitrária). > > Eu pratico a seguinte regra: mesmo que o valor seja numérico, se não > for utilizado para cálculos matemáticos e não for monetário, eu > prefiro armazenar em VARCHAR, e geralmente com um limite maior do que > o atributo exige: para CPF e CNPJ eu uso VARCHAR(20), por exemplo. > > Costumo usar um campo varchar(14) para considerar CPF e CNPJ, onde o dado é gravado já formato, retirando-se os pontos e traços, etc. Também utilizo uma CHECK CONSTRAINT para garantir que sejam gravados dados com 11 ou 14 digitos, ou seja, dados com quantidade de digitos diferentes de 11 e 14 não serão gravados. Devemos considerar que o tipo de dado INT não é recomendado para guardar informações como CPF e CNPJ, pois caso a informação contenha zeros a esquerda, esses zeros serão ignorados e não teremos uma informação íntegra. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Migrar 8.0 para 9.3
Pessoal, É possível migrar um banco na versão 8.0.15 diretamente para a versão 9.3 ou 9.4? Tentei efetuar na 9.3, porém apresentou alguns erros, como por exemplo: CREATE FUNCTION lo_in(cstring) RETURNS lo LANGUAGE c IMMUTABLE STRICT AS '$libdir/lo', 'lo_in'; ERRO: não pôde encontrar função "lo_in" no arquivo "/usr/lib/postgresql/9.3/lib/lo.so" Algumas tabelas possuem campos do tipo "large object" para guardar imagens, será necessário efetuar alguma configuração do lado da versão 9.3, ou devo instalar algo? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Instalação do postgres 9.3 em opensuse
Em 17 de novembro de 2015 13:46, Guimarães Faria Corcete DUTRA, Leandro < l...@dutras.org> escreveu: > 2015-11-17 13:41 GMT-02:00 Danilo Silva <danilo.dsg.go...@gmail.com>: > > > > A versão 9.3 do postgres roda no openSuse 11.3 ? > > Sim, por que não? > > > > É possível instalar via repositório? pois não achei nada no google > > Apesar de ser raro, às vezes vale mais a pena ir para fontes > específicas de informação. No caso, o sítio da Novell e > http://postgresql.org/ > > Particularmente, eu prefiro instalar via repositório, mas no caso do openSuse, não achei nenhum repositório para adicionar, o pior é que não estou acostumado com openSuse, mas é o que tem pra hoje :) []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Instalação do postgres 9.3 em opensuse
Pessoal, A versão 9.3 do postgres roda no openSuse 11.3 ? É possível instalar via repositório? pois não achei nada no google, e o padrão desta versão do openSuse é a versão 8.4. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Bloquear usuário durante atualização
Pessoal, Para que eu possa atualizar o sistema, é necessário que nenhum usuário esteja logado no banco. A minha dúvida é: apenas o comando ALTER DATABASE foo CONNECTION LIMIT 0 resolveria? Se o usuário já estiver logado, após rodado o comando descrito, esse usuário conseguirá executar algum comando? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Gerar dicionário de dados
Pessoal, É possível gerarmos um dicionário de dados através das tabelas de catálogos? Se sim, qual seria o comando. Utilizando ferramentas de terceiros, qual seria a mais indicada para esta geração? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] pg_log parâmetros de coleta de logs
Em 9 de novembro de 2015 11:25, Joel Benelliescreveu: > Bom dia, > > Estou desenvolvimento um trabalho em um servidor de testes que tem > aproximadamente 400 DB referentes a vários sistema. > > Devido ao volume de dados de log gerados, necessito coletar os logs a > partir de um parâmetro (ou conjunto de parâmetros) como database name, > application name, user name, ..., enfim qualquer coisa ..., para o que > postgresql-XXX.log tenha somente o conteúdo com dados relacionados a este > parâmetro. > > Quando necessito obter informações específicas dentro do arquivo de log, eu costumo gerar outros arquivos de log a partir do arquivo original, por exemplo com o comando: cat postgresql-Mon.log | grep nome_base >> logdatabase.log Com o comando acima, será gravado no arquivo "logdatabase.log" toda linha que contenha a palavra "nome_base". Não sei dizer se isso resolveria o seu caso, mas para minha necessidade, serviu perfeitamente, é claro que você precisa ajustar o parâmetro log_line_prefix. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Extrair meses de um período
> > > select date_part('month',data) from where data >= 01/01/2015 and > data <= 30/09/2015 group by date_part('month',data) > > Obrigado pela resposta, porém, no meu caso, não estou envolvendo nenhuma tabela, tenho apenas o período, e atráves dele extrair os meses. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Extrair meses de um período
Pessoal, É possível extrairmos os meses de um período de datas? Por exemplo: período 01/01/2015 a 30/09/2015, extrair os mesmo 01,02,03,04,05,06,07,08,09. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Extrair meses de um período
2015-10-26 19:06 GMT-02:00 Osvaldo Kussama <osvaldo.kuss...@gmail.com>: > Em 26/10/15, Danilo Silva<danilo.dsg.go...@gmail.com> escreveu: > > Pessoal, > > > > É possível extrairmos os meses de um período de datas? Por exemplo: > período > > 01/01/2015 a 30/09/2015, extrair os mesmo 01,02,03,04,05,06,07,08,09. > > > > > =# SELECT extract(month from a) mes FROM > generate_series('2015-01-01'::date, '2015-09-30'::date, '1 month') AS > s(a); > mes > - >1 >2 >3 >4 >5 >6 >7 >8 >9 > (9 rows) > > Obrigado a todos pela ajuda. Solucionado com a utilização do generate_series. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Erro ao importar arquivo
Pessoal, Tenho um arquivo CSV e ao importá-lo com o comando copy dá o seguinte erro: ERRO: sequência de bytes é inválida para codificação "UTF8": 0xa6 CONTEXTO: COPY baseativa, linha 571427 Minha base, 9.3.9 (LINUX) está em UTF-8, o psql também está em UTF-8. Devido ao tamanho do arquivo (330 MB) fica complicado tentar corrigir diretamente no arquivo. Existe uma maneira mais rápida de corrigir os caracteres ilegíveis pelo UTF-8? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] testar latencia AWS
Em 24 de setembro de 2015 09:30, Flavio Henrique Araque Gurgel < fha...@gmail.com> escreveu: > Bom dia Pessoal >> para apimentar um pouco mais, ja que fui eu quem iniciou a thread, >> abaixo segue as latências enviado pelo pessoal da representante da >> Amazon no Brasil. >> no nosso caso vai ficar complicado utilizar os datacenter fora do >> Brasil, devido nosso ERP (delphi) ser em duas camadas, com o aplicativo >> na maquina do cliente apontando o banco para o datacenter. Neste caso >> teríamos que utilizar Terminal Server. >> Atualmente nosso banco está no datacenter da UOLDIVEO e temos uma >> latência media de 40s e os clientes reclamam as vezes da lentidão. >> > > Aplicação cliente-servidor sofre muito com latência até o banco de dados, > normalmente são péssimas candidatas a ir pra nuvem. As diversas consultas > necessárias para montar uma tela, por exemplo, multiplica a latência. > Exemplo: > > Uma tela que precise de 5 consultas. Se a latência é de 40ms, isso dá > 200ms, sem contar o tempo de executar as consultas no servidor e mais o > processamento local com os dados retornados. Se considerarmos BEGIN et > COMMIT, junta mais 80ms. > > No exemplo acima, se a latência for de 200ms (usuário no Brasil e servidor > nos EUA), seu tempo só de latência sobe para 1,4 segundos! Uma eternidade. > > Sim, é inviável no seu caso. > > Se vocês gostariam mesmo de ir pra "nuvem", sugiro reescrever uma > aplicação web, onde o servidor de aplicação fica próximo do banco de dados. > Nesse caso, o cliente não sente ou sente muito pouco a latência, uma vez > que a quantidade de idas e vindas se reduz à requisição da página e o > retorno dela. As idas e vindas aplicação-banco de dados são sempre rápidas, > normalmente inferiores a 10ms. > > Taí, não precisa ser bidu pra calcular o efeito da latência usando dados > aproximados. > > Claro que sua solução de "terminal server" tem um efeito parecido de > redução de latência, como uma aplicação web. > > > No passado tive problema com a latência, mesmo utilizando uma aplicação web, o usuário reclamava de lentidão, pois fazia-se leitura de código de barras, e o usuário era mais rápido que a aplicação. Nesse processo de leitura, a aplicação fazia algumas validações, o problema era que cada validação representava uma requisição ao banco de dados, então multiplicando cada requisição pela latência, esse processo todo levava quase 2 segundos (que eternidade)... A solução foi tirar as validações da aplicação e colocar no banco de dados, pois assim a aplicação fazia apenas uma requisição, o banco de dados processava e retornava o que tinha que retornar, com isso, conseguimos reduzir para apenas alguns milissegundos o processo e deixar o cliente feliz :) Douglas, analise todo o processo e tente reduzir a quantidade de requisições que a aplicação faz ao banco de dados, com isso você conseguirá reduzir o tempo total do processo. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Como usar sequences (era "sem assunto")
Em 21 de setembro de 2015 10:00, Flavio Henrique Araque Gurgel < fha...@gmail.com> escreveu: > Galera, >> > > Bom dia, coloque sempre um assunto em suas mensagens, por favor. > > Estou tendo um problema com uma sequence criada automaticamente no banco >> de dados utilizando o tipo de campo SERIAL. Ao tentar usar a sequence, >> recebo a seguinte mensagem: >> >> sql> select currval('revisions_id_seq') >> [2015-09-21 09:53:10] [55000] ERROR: currval of sequence >> "revisions_id_seq" is not yet defined in this session >> > > Você precisa sempre gerar um valor para sua sequência antes de chamar a > função curval. > No seu caso, acho que você precisa fazer um > SELECT nextval('revisions_id_seq'); > e depois você pode chamar curval quantas vezes precisar. > > Alguma idéia? Pesquisei um montão de lugares, e só aparece página de PHP >> fazendo Go Horse na solução. Nada efetivo para que na hora de criar a >> sequence no cliente eu não tenha o mesmo erro. >> > > Não sei o que é "Go Horse". Mas a solução taí em cima. > > Preciso uma solução que fique dentro da DDL para não ter problemas. >> > > Nada muda na sua DDL, só suas DML e DQL. > > > Talvez o que o colega esteja querendo é obter o valor da sequence após um insert, sendo isso, acrescente no final do comando insert a instrução "RETURNING campo_da_sequence" Supondo que o campo que receberá a sequence chama-se idcodigo, o comando ficaria assim: INSERT tabela (campos) VALUES (valores) RETURNING idcodigo; Lembrando que o campo, no meu exemplo idcodigo, não precisa estar presente no comando insert, ou seja, não precisa conter na instrução, apenas no returning. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Identificar pg_start_backup e pg_stop_backup
Pessoal, Como podemos identificar se o comando pg_start_backup foi executado? Após ser executado o comando pg_start_backup, é possível saber se foi executado o comando pg_stop_backup? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Identificar pg_start_backup e pg_stop_backup
Em 10 de setembro de 2015 14:08, Franklin Anderson de Oliveira Souza < frankli...@gmail.com> escreveu: > na versão 9.3 em diante é mais interessante usar o pg_basebackup não é ?! > > Em 10 de setembro de 2015 13:41, Flavio Henrique Araque Gurgel < > fha...@gmail.com> escreveu: > >> Pessoal, Como podemos identificar se o comando pg_start_backup foi executado? Após ser executado o comando pg_start_backup, é possível saber se foi executado o comando pg_stop_backup? >>> >>> select pg_is_in_backup(); >>> Retorna verdadeiro se estiver em modo de backup (foi feito >>> pg_start_backup mas ainda não foi feito pg_stop_backup). >>> >> >> Só um detalhe que esqueci, esta função foi implementada na versão 9.3. >> >> Em versões anteriores, uma opção é verificar se existe o arquivo >> backup_label dentro do diretório de dados. Se ele existir, o banco está em >> modo de backup (ou foi parado a força no meio de um backup). Este arquivo >> continua sendo gerado nas versões que dispoem da função pg_is_in_backup(). >> >> Obrigado!!! []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Tempo de execução do backup físico
Pessoal, Em um cluster com +- 180 GiB, o que deveríamos levar em consideração para determinarmos se o tempo do backup físico (utilizando rsync) está elevado ou não? Semana passada, levou 3 horas, hoje, levou quase 5 horas. Se utilizar o pg_basebackup ao invés do rsync, terei ganho de tempo? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Diferença condicional para campos boolean
Pessoal, Existe diferença entre os where abaixo? WHERE campo_boolean IS TRUE WHERE campo_boolean = TRUE []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Update ou select
Em 19 de agosto de 2015 09:13, Dickson S. Guedes lis...@guedesoft.net escreveu: Em 19 de agosto de 2015 00:28, Danilo Silva danilo.dsg.go...@gmail.com escreveu: Pessoal, Considerando: pedido | item 1| ABC 1| XYZ 2| XPTO Tenho uma rotina de integração onde, para cada item do pedido, eu preciso indicar o recebimento do pedido, sendo efetuado um update na tabela de pedidos dizendo que aquele pedido foi recebido. Terei que utilizar uma trigger para isso e a minha dúvida é: Para cada insert na tabela de itens efetuar o update da tabela de pedidos OU Para cada insert na tabela de itens, fazer um select na tabela de pedidos para saber se o pedido já foi recebido, e caso não tenha sido recebido, efetuar o update. Creio que efetuar o select antes será melhor para evitar os buracos que o update causa e assim diminuir as ações do autovacuum na tabela de pedidos. Não respondendo diretamente sua pergunta mas apenas salientando que você pode testar no próprio UPDATE, antes de fazer o SELECT, algo como: UPDATE pedidos SET recebido = true WHERE codigo_pedido = XYZ AND NOT recebido; Putz, é verdade, caraca esqueci que posso fazer desta forma, deve ter sido o horário :) Valeu... []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Update ou select
Pessoal, Considerando: pedido | item 1| ABC 1| XYZ 2| XPTO Tenho uma rotina de integração onde, para cada item do pedido, eu preciso indicar o recebimento do pedido, sendo efetuado um update na tabela de pedidos dizendo que aquele pedido foi recebido. Terei que utilizar uma trigger para isso e a minha dúvida é: Para cada insert na tabela de itens efetuar o update da tabela de pedidos OU Para cada insert na tabela de itens, fazer um select na tabela de pedidos para saber se o pedido já foi recebido, e caso não tenha sido recebido, efetuar o update. Creio que efetuar o select antes será melhor para evitar os buracos que o update causa e assim diminuir as ações do autovacuum na tabela de pedidos. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Backup físico com rsync
Pessoal, Atualmente meu backup físico utilizando o pg_basebackup leva em torno de 2 horas para ser concluído (ambiente linux com postgres 9.3). Efetuei alguns testes (em um cluster menor) utilizando o rsync para efetuar a cópia, ou seja, tudo manual (pg_start_backup, rsync, pg_stop_backup). Após alguns dias, simulando a realidade de cópia física com rsync, efetuei o restore, e aparentemente tudo ocorreu normalmente sem problemas. A minha dúvida está na confiabilidade, se eu colocar esse método em produção poderei ter problemas? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] pg_basebackup
Pessoal, É possível executar o pg_basebackup com a opção -D apontando para um servidor de backups? algo como: pg_basebackup -D ip_servidor_backup []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] pg_basebackup
2015-07-28 11:27 GMT-03:00 Euler Taveira eu...@timbira.com.br: On 27-07-2015 10:29, Danilo Silva wrote: É possível executar o pg_basebackup com a opção -D apontando para um servidor de backups? algo como: pg_basebackup -D ip_servidor_backup Não. Execute o pg_basebackup no servidor de backups. Não me recordo, mas para ter somente o pg_basebackup instalado no servidor, preciso apenas instalar a contrib? ou terei que efetuar uma instalação padrão (completa) do postgres? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] UPDATE recursivo
Em 13 de julho de 2015 21:12, Cleiton Luiz Domazak cleitondoma...@gmail.com escreveu: Boa noite. Não sei se alguém já precisou disso. Preciso fazer um UPDATE em várias tabelas em um campo chave, porém existe relacionamento entre elas via FK, e preciso gerar o script de UPDATE desses campos dinamicamente, pois não quero engessar o script, caso alguma tabela seja adicionada ou removida do banco, o script deve continuar funcionando. Ou se existir uma ferramenta que pelo menos monte essa hierarquia. Segue um exemplo: CREATE TABLE pai ( id bigint NOT NULL, value character varying(255), CONSTRAINT pai_pkey PRIMARY KEY (id) ); CREATE TABLE filho ( id bigint NOT NULL, id_pai bigint,integridade CONSTRAINT filho_pkey PRIMARY KEY (id), CONSTRAINT filho_id_pai_fkey FOREIGN KEY (id_pai) REFERENCES pai (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ); CREATE TABLE neto ( id bigint NOT NULL, id_filho bigint, CONSTRAINT neto_pkey PRIMARY KEY (id), CONSTRAINT neto_id_filho_fkey FOREIGN KEY (id_filho) REFERENCES filho (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ); Para eu realizar o UPDATE na tabela PAI eu teria que primeiro fazer um UPDATE na tabela FILHO que por sua vez depende de um UPDATE na tabela NETO (sim, nome bizarro só pra identificar :D), e eu não tenho como garantir quantos níveis eu tenho. Troque suas constraints para MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT, assim quando o id da tabela pai for alterado, as tabelas que fazem referencia a tabela pai também serão alterados. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ajuda com for
CREATE OR REPLACE FUNCTION dah.wdetcad() RETURNS TRIGGER AS $body$ declare i integer; BEGIN for i in 1..(select max(codempresa) from configura WHERE codhotel 1) loop INSERT INTO detcad select i, new.codgrupo, new.codfuncresp ; end loop; RETURN NEW(); END; $body$ LANGUAGE plpgsql; Coloque o max em uma variável e a função ficaria: CREATE OR REPLACE FUNCTION dah.wdetcad() RETURNS TRIGGER AS $body$ declare i integer; vmax integer; BEGIN select max(codempresa) from configura WHERE codhotel 1 INTO vmax; for i in 1..vmax loop INSERT INTO detcad select i, new.codgrupo, new.codfuncresp ; end loop; RETURN NEW(); END; $body$ LANGUAGE plpgsql; Obs: não testei a função. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Operações que ativam o autovacuum
Pessoal, Operações de inserts *teoricamente* não ativa o autovacuum, mas updates e deletes sim. Operações de rollback podem ativar? Enfim, quais operações podem ativar o autovacuum? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Driver de conexão com SqlServer
Em 2 de junho de 2015 10:59, Fabrízio de Royes Mello fabri...@timbira.com.br escreveu: On 02-06-2015 10:46, Danilo Silva wrote: Pessoal, Qual seria o melhor driver de conexão do Sqlserver com o PostgreSQL? No caso, o sqlserver enviará os dados para o postgres através de transações. Pelo que entendi vc irá fazer uma conexão apartir do SQLServer para o PostgreSQL? Se sim, então creio que vc precisará utilizar o driver ODBC [1] de acordo com a versão do PostgreSQL que vc irá conectar. Utilizo a versão 9.3, neste caso, a última versão do odbc é a psqlodbc_09_03_0400.zip a qual foi instalada no servidor onde está o sqlserver. Selects, inserts ocorrem normalmente, o problema está quando um insert é feito dentro de uma transação: BEGIN TRANSACTION; INSERT INTO COMMIT; Quando executado os comandos acima, o erro retornado é: ( 1 row(s) affected) Msg 8522, Level 18, State 1, Line 7 Microsoft Distributed Transaction Coordinator (MS DTC) has stopped this transaction. Creio que o problema não está no postgres, ficarei grato se puderem me ajudar. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Driver de conexão com SqlServer
Pessoal, Qual seria o melhor driver de conexão do Sqlserver com o PostgreSQL? No caso, o sqlserver enviará os dados para o postgres através de transações. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] pg_stat_replication
Pessoal, Li na documentação mas não entendi muito bem, vocês poderiam explicar o que quer dizer as colunas sent_location, , write_location, flush_location, replay_location da view pg_stat_replication (PostgreSQL 9.3). []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Relacionamento entre tabelas - integer e array
Pessoal, Tenho as tabela cargos e funcionários: CREATE TABLE _cargos ( car_codcargo integer[], car_nome text NOT NULL, CONSTRAINT _car_pk PRIMARY KEY (car_codcargo) ); INSERT INTO _cargos VALUES (1,'MECANICO'),(2,'SOLDADOR'),(3,'AUXILIAR'),(4,'VENDEDOR'),(5,'CONTADOR'); CREATE TABLE _funcionarios ( fun_codfunc serial, fun_codcargo integer[] NOT NULL, fun_nome text NOT NULL, CONSTRAINT _fun_pk PRIMARY KEY (fun_codfunc) ); INSERT INTO _funcionarios VALUES (1,ARRAY[1],'AAA'); INSERT INTO _funcionarios VALUES (2,ARRAY[1],'AAB'); INSERT INTO _funcionarios VALUES (3,ARRAY[1,2],'AAC'); É possível criar relacionamento entre as duas tabelas, para que seja possível somente inserir na tabela funcionario códigos de cargos que existam na tabela cargos? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Instalação do postgres em windows
Em 15 de maio de 2015 11:14, Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org escreveu: Em 15 de maio de 2015 11:06, Danilo Silva danilo.dsg.go...@gmail.com escreveu: Estou tentando instalar a versão 9.3.6 em windows server 2008 Meus pêsames. Pelo MS Windows, porque o PostgreSQL funciona até nessa joça. porém, logo no início dá erro de Microsoft VC++ runtime installer. Qual erro exatamente? There has been an error. An error ocoured executing the Microsoft VC++ runtime installer []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Limite de procedimentos dentro de uma transação
Pessoal, Dentro de um processo de atualização da aplicação, considerando o seguinte cenário: BEGIN; INSERT UPDATE... CREATE... INSERT... COMMIT ou ROLLBACK; Existe algum limite de procedimentos dentro de uma transação? Considerando que ninguém estará acessando o banco, posso ter algum problema em relação ao tempo que a transação ficará aberta? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Limite de procedimentos dentro de uma transação
2015-05-08 0:06 GMT-03:00 Euler Taveira eu...@timbira.com.br: On 07-05-2015 23:36, Danilo Silva wrote: Certo, se eu entendi, neste caso um insert gera um id, um update, outro id, um novo insert, outro id, e assim por diante? É o que eu tentei^H^H^H^H^H^H escrevi, não? Euler, eu não entendi a sua resposta de agora, você refere-se a sua resposta anterior, onde fala sobre os 2^32-2 ? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Limite de procedimentos dentro de uma transação
Em 7 de maio de 2015 22:35, Euler Taveira eu...@timbira.com.br escreveu: On 07-05-2015 20:29, Danilo Silva wrote: Existe algum limite de procedimentos dentro de uma transação? 2^32-2 comandos que escrevem (como por exemplo, INSERT, UPDATE e DELETE). Comandos SELECT não entram nesta contagem. Considerando que ninguém estará acessando o banco, posso ter algum problema em relação ao tempo que a transação ficará aberta? Transações longas não são recomendadas principalmente se o seu agrupamento de bancos de dados consumir muitos (bilhões) id de transação durante o tempo que a transação permanecer aberta. Normalmente isso pode levar meses ou anos. Certo, se eu entendi, neste caso um insert gera um id, um update, outro id, um novo insert, outro id, e assim por diante? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Prepare transaction
Pessoal, Gostaria de uma ajuda sobre o comando PREPARE TRANSACTION, para quê ele serve? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ferramenta de modelagem com bom recurso para criar funções
Entendo... Criar as tabelas e suas restrições e relacionamentos é até tranquilo, mas acho que na hora de se criar outros elementos ficaria meio complicado. Tipo, geralmente na hora de criar uma função, uma view, ou qualquer coisa que você criar após as tabelas estarem prontas, fica complicado se você precisar de algumas informações da qual você não lembra de pronto, tipo, qual o tipo de dado você definiu para um campo X na tabela Y. Procurar essa informação em um arquivo de. sei la. 700 linhas de código é osso. No diagrama você teria uma representação gráfica de tudo, ficando muito mais fácil encontrar. Por mais que o editor tenha recursos para localizar palavras através de regex, acho que ainda não seria tão prático quanto. Ao invés de procurar em um arquivo, não seria mais fácil ir direto na tabela em questão e saber qual o tipo do campo? Na verdade acho que o problema das ferramentas de modelagem está no fato de não existirem opções descentes para PorstgreSQL, principalmente livres. O SQL Server tem sua ferramenta de administração front-end, e é onde os DBAs MS desenvolvem seus projetos. Mas eu não tenho problemas em sair na mão com o editor não, até porque como estou escrevendo essa aplicação em python, já estou acostumado ao trabalho braçal. Só fico pensando se caso eu resolva mandar o modelador pro inferno e partir pra unha não terei perda de produtividade. Eu sou novo no PostgreSQL, tento desenvolver nele como em sempre fiz no SQL Server. Qual é o roteiro que vocês mais habituados com ele seguem para modelar uma base de dados? Tipo escreve o script inteiro na unha, funções, view, etc, e depois roda o código e corrige os possíveis erros? Ou modelam por partes, tipo, escreve o script das tabelas, restrições e relacionamentos, roda, depois cria scripts individuais para as funções, view, e as roda separadamente? Sei que tem ferramentas que *podem* ajudar no desenvolvimento, mas eu, particularmente, escrevo todos os meus projetos na unha, tanto projetos de banco de dados quanto os projetos das aplicações (php por exemplo), prefiro assim, pelo menos não fico dependente. No caso do postgres, utilizo apenas o pgadmin para executar os comandos, nada de botão direito do mouse...new table por exemplo. Não conheço a administração do SQL Server, mas fico imaginando o seguinte: o que será que acontece se um DBA SQL Server tiver que administrar uma base sem o front-end, ou seja, tiver que executar tudo na unha? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Uso de tablespace
Pessoal, Com a exceção de organização, qual benefício em utilizar tablespace, estando esta no mesmo disco? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Diferença entre campos do tipo string
Pessoal, Existe diferença entre os campos do tipo varchar(n) e text? Qual seria a limitação de caracteres para estes tipos? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Diferença entre campos do tipo string
Em 15 de abril de 2015 10:09, Flavio Henrique Araque Gurgel fha...@gmail.com escreveu: Existe diferença entre os campos do tipo varchar(n) e text? Fisicamente, não há diferença. Logicamente, o varchar tem a limitação no número de caracteres (n) mas é apenas uma verificação no momento em que se insere ou se altera o valor. Qual seria a limitação de caracteres para estes tipos? 1 GiB, não caracteres, afinal alguns caracteres em algumas codificações são multi-byte. Sempre tive essa dúvida, pois até então pensava que o varchar tivesse uma limitação de 255 caracteres, por isso seguia uma regra minha: se o tamanho é fixo e menor que 255 caracteres uso char, se o tamanho for variável de até 255 utilizo varchar, fora isso uso text. Mas por sua resposta estava errado, pois não tem diferenças entre varchar e text, apenas limitação de espaço a ser armazenado. Obrigado. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Uso de tablespace
Em 15 de abril de 2015 10:10, Flavio Henrique Araque Gurgel fha...@gmail.com escreveu: Com a exceção de organização, qual benefício em utilizar tablespace, estando esta no mesmo disco? Nenhum. Por acaso você está fazendo alguma prova on-line e obtendo resposta na lista? (curiosidade apenas aqui) Não, apenas uma dúvida que tinha, pois terei que migrar algumas bases e levantaram a questão de usar tablespace, mas até então disponibilizaram apenas um disco para o postgres. Obrigado. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] pgbouncer
Pessoal, Preciso garantir um máximo de 1000 conexões simultâneas, então penso em utilizar o pgbouncer para efetuar um pool das conexões e tentar diminuir os acessos diretos ao postgres. Para este cenário, qual seria os valores ideais ou próximos para: max_connections (postgresql.conf)? pool_mode (pgbouncer.ini)? max_client_conn (pgbouncer.ini)? default_pool_size (pgbouncer.ini)? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Segurança dos dados
Pessoal, Existe alguma maneira de bloquear a visualização das functions e o seu conteúdo? Quero me refereir a um bloqueio total, mesmo para os superusuários, sendo o acesso somente mediante a uma senha por exemplo. Sei que existe meios de bloquear o acesso ao esquema por exemplo, até funcionaria, mas a questão é que qualquer pessoa com acesso root ao servidor poderia alterar o pg_hba.conf e conectar via superusuário sem utilização de senha, mas existe alguma forma de barrar isso, ou seria somente re-compilando o código fonte do postgres? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Histórico de DML
Pessoal, Qual a melhor maneira de guardar todos os inserts, updates e deletes que ocorrem em todas as tabelas de uma determinada base de dados? Em relação aos updates, preciso ter um histórico do que foi alterado, apresentando em um relatório quais campos sofreram alteração de um determinado registro, algo como valor anterior valor atual. Pensei em criar uma cópia da tabela, que serviria para guardar os registros alterados, seria a melhor solução? A versão 9.4 tem algo relacionado a isso? []s Danilo Gomes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Desabilitar parâmetros enable_*
Pessoal, Pode acontecer casos em que devemos deixar (pelo menos para a sessão) os parâmetros enable_seqscan, enable_mergejoin e enable_hashjoin desabilitados para termos uma melhor performance no retorno dos dados de uma consulta? Pergunto porque isso está acontecendo comigo, entendo que esses parâmetros devem ficar habilitados para o postgres decidir qual melhor caminho a fazer. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tempo de backup
Em 3 de março de 2015 12:07, Euler Taveira eu...@timbira.com.br escreveu: On 03-03-2015 11:47, Danilo Silva wrote: Em 3 de março de 2015 11:00, Euler Taveira eu...@timbira.com.br escreveu: Existem métodos onde podemos acelerar o tempo para execução? No pg_basebackup somente a opção --checkpoint=fast. Se você optar por não compactar (opção --gzip) também vai levar menos tempo, porém, vai ocupar mais espaço. Certo, fiz um teste em uma base com 16GB (base + tablespaces): com a opção -Z 9 levou 38 minutos e no final o diretorio ficou com 1,8GB sem a opção -Z9 levou 8 minutos e no final o diretorio ficou com 13GB. Neste caso, onde está os outros 3GB? Pergunto isso para tentar saber se irá reduzir os 300GB que estão em produção. Como você não mostrou o comando utilizado fica difícil saber porque a diferença foi tão grande. Baseado no que você descreveu, com mais compressão (9) leva mais tempo para produzir um arquivo menor. 38 minutos = pg_basebackup -U replicador -P -c fast -v -D /backup/database/ -Ft -Z 9 08 minutos = pg_basebackup -U replicador -P -c fast -v -D /backup/database/ -Ft []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Tempo de backup
Pessoal, Considerando que o diretório $PGDATA está com 300GB, utilizando o método de backup físico com o pg_basebackup: O hardware influencia consideravelmente? o que mais impacta, cpu, disco ou memória? Existem métodos onde podemos acelerar o tempo para execução? É possível estimarmos quanto tempo levará para efetuar o backup? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tempo de backup
Em 3 de março de 2015 11:00, Euler Taveira eu...@timbira.com.br escreveu: Existem métodos onde podemos acelerar o tempo para execução? No pg_basebackup somente a opção --checkpoint=fast. Se você optar por não compactar (opção --gzip) também vai levar menos tempo, porém, vai ocupar mais espaço. Certo, fiz um teste em uma base com 16GB (base + tablespaces): com a opção -Z 9 levou 38 minutos e no final o diretorio ficou com 1,8GB sem a opção -Z9 levou 8 minutos e no final o diretorio ficou com 13GB. Neste caso, onde está os outros 3GB? Pergunto isso para tentar saber se irá reduzir os 300GB que estão em produção. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Transações por hora
Em 2 de março de 2015 17:11, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-03-02 17:08 GMT-03:00 Danilo Silva danilo.dsg.go...@gmail.com: Essas transações são independentes da quantidade de comandos? Por exemplo: em uma única transação eu executo vários comandos, como inserts, updates, deletes, etc, a coluna xact_commit irá considerar tudo como uma transação apenas? Isso, uma transação só. É possível saber quantos arquivos WAL foram gerados para essas transações? Você pode pegar a posição atual do WAL usando a função pg_xlog_insert_location. Recupere e salve, depois de um tempo recupere novamente e use a pg_xlog_location_diff para saber em bytes a diferença entre os dois. Se quiser saber em número de segmentos do WAL, basta dividir por 16MB. Valeu... []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tablespaces em backup físico
Em 2 de março de 2015 17:09, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-03-02 17:02 GMT-03:00 Danilo Silva danilo.dsg.go...@gmail.com: E esse método pode também ser utilizado como PITR, certo?, bastando criar o recovery.conf após as extração de todos os diretórios... Correto. Valeu... []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tablespaces em backup físico
Em 2 de março de 2015 10:42, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-03-02 10:27 GMT-03:00 Danilo Silva danilo.dsg.go...@gmail.com: Quando possuímos tablespaces para: pg_xlog, indíces e mariores tabelas, ao efetuarmos o backup físico on-line, devemos backpear as tablespace do pg_xlog e dos índices, ou somente das tabelas? Você deve executar o backup de todos tablespaces, incluindo índices. Quanto ao pg_xlog, não é necessário incluí-lo caso você já esteja realizando o arquivamento dos logs de transação, o que é o recomendado. Para facilitar, você pode usar o pg_basebackup [1]. Caso esteja fazendo o backup com ferramentas externas, não se esqueça do pg_start_backup e pg_stop_backup. [1] http://www.postgresql.org/docs/current/static/app-pgbasebackup.html Para utilizar o pg_basebackup é necessário ter a mesma estrutura de diretorios? Por exemplo, a tablespace está em /database/indice/, no meu servidor onde ficará os backups eu preciso ter um diretório /database/indice/ ? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Tablespaces em backup físico
Pessoal, Quando possuímos tablespaces para: pg_xlog, indíces e mariores tabelas, ao efetuarmos o backup físico on-line, devemos backpear as tablespace do pg_xlog e dos índices, ou somente das tabelas? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tablespaces em backup físico
Em 2 de março de 2015 12:37, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-03-02 12:31 GMT-03:00 Euler Taveira eu...@timbira.com.br: On 02-03-2015 11:53, Danilo Silva wrote: Para utilizar o pg_basebackup é necessário ter a mesma estrutura de diretorios? Por exemplo, a tablespace está em /database/indice/, no meu servidor onde ficará os backups eu preciso ter um diretório /database/indice/ ? Para o backup, não. Quanto a restauração, você deve ter o mesmo caminho ao restaurar. Ou, na versão 9.4 é possível usar a opção --tablespace-mapping, para mapear novos caminhos para os tablespaces. Utilizo a versão 9.3, logo não tenho essa opção :( Pelo o que eu entendi da documentação, eu não posso direcionar a saída do backup para o mesmo servidor (quando utiliza tablespaces), é isso mesmo? Colocando a saída para outro servidor, eu não precisarei criar, antecipadamente, os diretórios das tablespaces? Ou seja, somente precisarei criar os diretórios quando houver a necessidade de restauração? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tablespaces em backup físico
Em 2 de março de 2015 14:37, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-03-02 14:07 GMT-03:00 Danilo Silva danilo.dsg.go...@gmail.com: Ou, na versão 9.4 é possível usar a opção --tablespace-mapping, para mapear novos caminhos para os tablespaces. Utilizo a versão 9.3, logo não tenho essa opção :( Pelo o que eu entendi da documentação, eu não posso direcionar a saída do backup para o mesmo servidor (quando utiliza tablespaces), é isso mesmo? Se você usar o formato tar, não precisa. Efetuei esse teste: postgres@laptop:~$ time pg_basebackup -U replicador -P -c fast -v -D /backup/pgsql/ -Ft -z 13505678/13505678 kB (100%), 4/4 tablespaces NOTA: pg_stop_backup concluído, todos os segmentos do WAL foram arquivados pg_basebackup: base backup completed real 9m47.891s user 6m58.115s sys 0m11.935s postgres@laptop:/backup$ ls -lh pgsql/ total 1,9G -rw-rw-r-- 1 postgres postgres 361 Mar 2 15:14 3511277.tar.gz -rw-rw-r-- 1 postgres postgres 63M Mar 2 15:14 3511278.tar.gz -rw-rw-r-- 1 postgres postgres 7,1K Mar 2 15:14 3511279.tar.gz -rw-rw-r-- 1 postgres postgres 1,8G Mar 2 15:23 base.tar.gz Agora a dúvida, como restauro estando desta forma? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tablespaces em backup físico
Em 2 de março de 2015 16:56, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-03-02 16:37 GMT-03:00 Danilo Silva danilo.dsg.go...@gmail.com: postgres@laptop:/backup$ ls -lh pgsql/ total 1,9G -rw-rw-r-- 1 postgres postgres 361 Mar 2 15:14 3511277.tar.gz -rw-rw-r-- 1 postgres postgres 63M Mar 2 15:14 3511278.tar.gz -rw-rw-r-- 1 postgres postgres 7,1K Mar 2 15:14 3511279.tar.gz -rw-rw-r-- 1 postgres postgres 1,8G Mar 2 15:23 base.tar.gz Agora a dúvida, como restauro estando desta forma? base.tar.gz é o PGDATA, os demais são os oids dos tablespaces, para ver o local destes, extraia primeiro o base.tar.gz, em seguida veja os links simbólicos no diretório pg_tblspc (ls -l ou readlink), cada um deles vai ser um arquivo com o mesmo número dos .tar.gz's acima, basta extraí-los no mesmo local apontado pelo link simbólico, ou ainda você pode extrair onde desejar e apenas recriar o link simbólico. Show de bola... E esse método pode também ser utilizado como PITR, certo?, bastando criar o recovery.conf após as extração de todos os diretórios... []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Transações por hora
Em 2 de março de 2015 10:37, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-03-02 10:32 GMT-03:00 Ariel Alves arielalves...@gmail.com: Senhores, tem como saber quantas transações por hora efetivamente estou fazendo no meu cluster? Essa informação vai servir para dimensionar hardware para futuras maquinas. Você pode a cada hora consultar a view pg_stat_database, a soma das colunas xact_commit+xact_rollback vão te dar um valor aproximado de quantas transações foram realizadas, daí basta pegar a diferença a cada hora. Essas transações são independentes da quantidade de comandos? Por exemplo: em uma única transação eu executo vários comandos, como inserts, updates, deletes, etc, a coluna xact_commit irá considerar tudo como uma transação apenas? É possível saber quantos arquivos WAL foram gerados para essas transações? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Iniciar transação dentro de função
Pessoal, Tenho a seguinte função: CREATE OR REPLACE FUNCTION f_baixa_manifesto() RETURNS text AS $$ DECLARE variaveis... BEGIN FOR ... LOOP /* iniciar transação */ FOR ... LOOP instruções de inserts e updates... */ END LOOP; /* fim da transação, executando um commit ou rollback */ END LOOP; RETURN ...; END; $$ LANGUAGE plpgsql; Como posso inciar uma transação dentro de um loop? Sendo que ao final do loop irei executar um commit ou rollback. Tentei utilizar um begin work mas deu erro de sintaxe. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Comando copy
Pessoal, Tenho 2 dúvidas referente ao comando copy: 1ª: O postgres está instalado no linux. Estando eu no pgadmin no windows, eu executo o comando COPY tabela TO 'C:\tabela.sql', porém ocorre erro: ERROR: relative path not allowed for COPY to file. Como seria o caminho do arquivo, uma vez que quero que o arquivo fique no windows? 2ª: A tabela possui uma coluna do tipo bytea, o comando copy possui alguma restrição para colunas com esse tipo de dados? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Comando copy
O comando COPY busca/salva arquivos no servidor de banco de dados e não no cliente. Para enviar/receber dadas com o COPY que estejam no cliente você deve usar `COPY ... FROM stdin` ou `COPY ... TO stdout`. Não sei quanto ao pgAdmin, mas o psql oferece o comando \copy, que faz a leitura/escrita do arquivo e envia/recebe do servidor usando stdin/stdout. Beleza... 2ª: A tabela possui uma coluna do tipo bytea, o comando copy possui alguma restrição para colunas com esse tipo de dados? Não. Funciona normalmente. Então eu posso usar o copy normalmente, sem precisar adicionar nada em específico por causa do bytea? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Pessoal, Estou executando esse select: SELECT ped_data , SUM(CASE WHEN ped_coddepto = 3 THEN 1 ELSE 0 END) AS fiscal , SUM(CASE WHEN ped_coddepto = 5 THEN 1 ELSE 0 END) AS dsi , SUM(CASE WHEN ped_coddepto = 7 THEN 1 ELSE 0 END) AS agendamento , SUM(CASE WHEN ped_coddepto = 4 THEN 1 ELSE 0 END) AS logistica , SUM(CASE WHEN ped_coddepto = 6 THEN 1 ELSE 0 END) AS transportadora , COUNT(*) AS total FROM pedido WHERE (ped_data '2008-10-24') GROUP BY ped_data ORDER BY 1; E obtenho esse resultado: ped_data| fiscal | dsi | agendamento | logistica | transportadora | total -++-+-++--+--- 2008-10-20 | 1 | 0 |1 | 0 | 0 | 2 2008-10-21 | 1 | 0 |0 | 0 | 0 | 1 2008-10-22 | 2 | 0 |2 | 0 |0 | 4 2008-10-23 | 0 | 1 |0 | 0 |0 | 1 (4 registros) Onde cada coluna (com exceção de ped_data e total) representa um departamento, ou seja, o resultado me mostra o total por data e departamento. O problema é que isso está totalmente manual, se for criado um novo departamento terei que alterar a select para contemplar o novo departamento, existe a possibilidade de deixar algo mais natural, sem necessidade de alterar o select a cada novo departamento criado? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenando conforme itens na clausula in
Em 6 de janeiro de 2015 22:19, Marcelo Florindo marceloflori...@gmail.com escreveu: Boa noite colegas, Eu tenho este sql: Select * from fabricante where id in (10,14,29,49,20) Preciso que o select venha na mesma ordem do in, alguma ideia? Crie uma função que faça a ordenação: CREATE OR REPLACE FUNCTION fordenacao(vfield text,vin text) RETURNS text AS $$ DECLARE vorder integer DEFAULT 1; vindice integer; vcodigo integer[] DEFAULT string_to_array(vin,',')::integer[]; vordenacao text DEFAULT ''; BEGIN FOR vindice IN array_lower(vcodigo,1)..array_upper(vcodigo,1) LOOP vordenacao := vordenacao||' WHEN '||vcodigo[vindice]::text||' THEN '||vorder::text; vorder := vorder + 1; END LOOP; vordenacao := '(CASE '||vfield||' '||vordenacao||' END)'; RETURN vordenacao; END; $$ LANGUAGE plpgsql; Select * from fabricante where id in (10,14,29,49,20) ORDER BY fordenacao('id','10,14,29,49,20') Não sei dizer se é a melhor solução...mas vale a ajuda. Não esqueça de analisar a performance... []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Window functions
Pessoal, é possível utilizar window function para melhorar a select abaixo:? SELECT (SELECT COUNT(*) FROM orcamento_venda WHERE (orv_codemp = 1) AND (orv_codfilial = 1)) AS totorv , (SELECT COUNT(*) FROM orcamento_venda WHERE (orv_codemp = 1) AND (orv_codfilial = 1) AND (orv_codsituacao = 5)) AS total , (SELECT string_agg(orv_codorcamento::text,',') FROM orcamento_venda WHERE (orv_codemp = 1) AND (orv_codfilial = 1) AND (orv_codsituacao = 5)) AS codigos , (ROUNDSELECT COUNT(*) FROM orcamento_venda WHERE (orv_codemp = 1) AND (orv_codfilial = 1) AND (orv_codsituacao = 5)) * 100)::numeric / (SELECT COUNT(*) FROM orcamento_venda WHERE (orv_codemp = 1) AND (orv_codfilial = 1))::numeric),2)) AS percentual []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral