O executável postgres é o verdadeiro processo servidor que processa os comandos do PostgreSQL. Normalmente não é chamado diretamente; em vez dele um servidor multiusuário postmaster é ativado.
A segunda forma mostrada acima é como o postgres é chamado pelo postmaster (somente conceitualmente, porque o postmaster e o postgres são, de fato, o mesmo programa); não deve ser chamado diretamente desta maneira. A primeira forma chama o servidor diretamente em modo monousuário interativo. A utilização mais freqüente deste modo é durante a inicialização pelo initdb. Algumas vezes é utilizado para depuração ou para recuperação de desastre.
Quando chamado em modo interativo a partir da shell, o usuário pode entrar com comandos e os resultados são exibidos na tela, mas em uma forma que é mais útil para os desenvolvedores do que para os usuários finais. Deve-se notar que executar o servidor em modo monousuário não é muito apropriado para a depuração do servidor, porque não vai acontecer nenhuma comunicação entre processos e bloqueio genuínos.
Ao executar o servidor autônomo, o usuário da sessão será definido como o usuário com o identificador 1. Este usuário não necessita existir, portanto o servidor autônomo pode ser usado para recuperar manualmente certos tipos de danos acidentais dos catálogos do sistema. Poderes implícitos de superusuário são concedidos ao usuário com identificador igual a 1 no modo autônomo.
Quando o postgres é iniciado pelo postmaster, herda todas as opções definidas para este. Adicionalmente, opções específicas do postgres podem ser passadas pelo postmaster usando a chave -o.
Pode-se evitar digitar a maior parte destas opções usando um arquivo de configuração. Consulte o Guia do Administrador para obter detalhes. Algumas opções (seguras) também podem ser definidas pelo cliente ao se conectar, de um modo dependente do aplicativo. Por exemplo, se a variável de ambiente PGOPTIONS estiver definida, então os clientes baseados na libpq passam esta cadeia de caracteres para o servidor, que vai interpretá-la como uma opção de linha de comando do postgres.
As opções -A, -B, -c, -d, -D, -F e --name possuem o mesmo significado que têm para o postmaster.
Define o estilo padrão da data como "European", indicando que a regra "dia precedendo o mês" (em vez de mês precedendo o dia) deve ser usada para interpretar a entrada de datas ambíguas, e que o dia precede o mês em certos formatos de exibição de data. Consulte o Guia do Usuário do PostgreSQL para obter mais informações.
Envia toda a saída de depuração e de erros para o nome_do_arquivo. Se o processo servidor estiver executando sob o postmaster então esta opção será ignorada, e a stderr herdada do postmaster será usada.
Ignora os índices do sistema ao varrer/atualizar as tuplas do sistema. O comando REINDEX para as tabelas/índices do sistema requer que esta opção seja utilizada.
Exibe a informação de tempo e outras estatísticas ao final de cada comando. Útil para efetuar medições ou para definir o número de buffers.
Especifica a quantidade de memória a ser usada pelas ordenações e hashes internos antes de recorrer a arquivos temporários em disco. O valor é especificado em kilobytes, sendo o valor padrão 512 kilobytes. Observe que para uma consulta complexa, diversas ordenações e/ou hashes podem ser executados em paralelo, podendo cada um utilizar o tanto de memória_para_ordenação kilobytes antes de começar a escrever os dados em arquivos temporários.
Especifica o nome do banco de dados a ser acessado. Se for omitido o padrão é o nome do usuário.
Exibe todos os comandos.
Desativa o uso do caractere de nova-linha como delimitador do comando.
Existem várias outras opções que podem ser especificadas, usadas principalmente para fins de depuração, que estão mostradas aqui somente para o uso pelos desenvolvedores de sistema do PostgreSQL. A utilização de qualquer uma destas opções é altamente desaconselhada. Além disso, qualquer uma destas opções poderá mudar ou desaparecer em versões futuras sem nenhum aviso.
Proíbe o uso de um método de varredura ou de junção em particular: s e i desativam as varreduras seqüenciais e de índices respectivamente, enquanto que n, m e h desativam as junções de laço-aninhado, mesclagem e hash respectivamente.
Note: Nem as varreduras seqüenciais nem as junções de laço aninhado podem ser desativadas completamente; as opções -fs e -fn simplesmente desencorajam o otimizador de usar estes tipos de plano se houver alguma outra alternativa.
Proíbe a execução da consulta, mas mostra a árvore do plano.
Permite modificar a estrutura das tabelas do sistema. Usado pelo initdb.
Indica que este servidor foi inicializado pelo postmaster fazendo suposições diferentes sobre o gerenciamento do buffer pool, descritores de arquivos, etc...
Exibe estatísticas de tempo para cada comando, relacionando com cada um dos principais módulos do sistema. Esta opção não pode ser usada junto com a opção -s.
Especifica o número da versão do protocolo cliente/servidor a ser usado por esta sessão em particular.
Tão logo esta opção seja encontrada, o processo adormece a quantidade especificada de segundos, dando ao desenvolvedor tempo para ligar o depurador ao processo servidor.
Inicie o servidor autônomo com um comando do tipo:
postgres -D $PGDATA outras_opções meu_bd
Forneça o caminho correto para a área de banco de dados com -D, ou garanta que a variável de ambiente PGDATA esteja definida. Também especifique o nome do banco de dados em que deseja trabalhar.
Normalmente, o servidor autônomo trata o caractere de nova-linha como término da entrada; não existe inteligência com relação ao ponto-e-vírgula, como existe no psql. Para continuar um comando por várias linhas, deve-se digitar uma contrabarra (\) logo antes de cada nova-linha, exceto a última.
Mas se for usada a chave de linha de comando -N, o caractere de nova-linha não termina a entrada do comando. O servidor vai ler a entrada padrão até a marca de fim-de-arquivo (EOF) e, então, vai processar a entrada como sendo a cadeia de caracteres de um único comando. A seqüência contrabarra nova-linha não recebe tratamento especial neste caso.
Para sair da sessão tecle EOF (geralmente Control+D). Se for usado o -N, então dois EOFs consecutivos são necessários para sair.
Observe que o servidor autônomo não fornece funcionalidades sofisticadas para edição de linha (não existe o histórico dos comandos, por exemplo).