2009/9/4 Mauro Sérgio da Silva <[email protected]>:
>
> Até ai tudo bem. O problema é que a base de dados em questão possui mais de
> 80000 tabelas. A função retorna
> o erro:
>
> PL/pgSQL function "f_addcolumn_isaftermarket" line 20 at EXECUTE statement
> ERROR:  out of shared memory
> HINT:  You might need to increase max_locks_per_transaction.

Eu acho que o problema é que como funções rodam em uma única
transação, cada alteração de tabela está criando uma trava (lock) que
consome memória compartilhada (pois todos os backends precisam saber),
e consequentemente exaurindo sua memória compartilhada.

A solução é não criara tantas locks, fazendo as alterações em pedaços,
ou fazer fora do PL/pgSQL, como através de um arquivo texto com a DDL.

Seria bem simples fazer com o psql e depois com um shell gerar essa
DDL. Nem precisa de uma linguagem.

Roberto
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a