No contexto do aplicativo pg_dump no PostgreSQL, analise as afirmativas a seguir. I. O acionamento do pg_dump deve ser feito no servidor onde o PostgreSQL está instalado. II. Na recuperação do backup, o banco de dados não pode existir, uma vez que é totalmente recriado. III. As informações a respeito de roles e tablespaces do banco de dados não são incluídas no backup. Está correto somente o que se afirma em:
- A)II;
A alternativa sustenta que apenas a afirmativa II estaria correta. O problema é que a II generaliza indevidamente: o backup gerado por pg_dump é lógico e pode ser restaurado em um banco já existente, especialmente quando se usa formatos como o custom com pg_restore; só em situações específicas, como scripts que criam o banco no momento da restauração, é que a existência prévia pode ser incompatível. Como a II não é verdadeira de forma absoluta, a opção A fica incorreta.
- B)III;
A alternativa afirma que somente a afirmativa III está correta. Isso procede porque o pg_dump faz backup de um banco específico e não leva consigo objetos globais do cluster, como as definições de roles e tablespaces, que são tratadas por ferramentas como o pg_dumpall. Portanto, a opção B reflete corretamente o alcance do utilitário.
- C)I e II;
A alternativa diz que as afirmativas I e II estariam corretas. A I é falsa porque o pg_dump é uma ferramenta cliente e pode ser executado de outra máquina, desde que haja acesso ao servidor PostgreSQL. A II também é falsa, pois a restauração não exige, como regra, que o banco esteja ausente; o dump pode ser carregado em um banco já criado.
- D)I e III;
A alternativa sustenta que I e III são verdadeiras. A III realmente está certa, porque pg_dump não exporta a definição de roles nem de tablespaces, que são dados globais do cluster e ficam fora do escopo do dump de um banco. Mas a I está errada, pois o utilitário não precisa ser acionado no próprio servidor onde o PostgreSQL está instalado, bastando um cliente com conectividade ao banco.
- E)II e III.
A alternativa afirma que II e III estariam corretas. A III está correta pelo mesmo motivo de o pg_dump não incluir roles e tablespaces, mas a II falha ao dizer que o banco de destino não pode existir em hipótese alguma. Na prática, a recuperação de um dump lógico pode ocorrer sobre um banco já existente, de modo que a alternativa fica incorreta.
Gabarito: B
O pg_dump é a ferramenta de backup lógico do PostgreSQL. Ele gera um arquivo com a estrutura e os dados de um banco específico, e você pode executá-lo a partir de outra máquina, desde que tenha acesso ao servidor. Ou seja, ele não precisa ser acionado obrigatoriamente no computador onde o PostgreSQL está instalado. Isso já derruba a afirmativa I. Na restauração, o banco de dados de destino não precisa, por regra, estar inexistente. Dependendo do formato e do comando usado, você pode restaurar em um banco já criado, ou criar um novo e então carregar o dump. Então a afirmativa II também está errada: a ideia de que o banco “não pode existir” é exagerada e não corresponde ao uso normal do pg_dump. A afirmativa III é a correta porque o pg_dump faz backup de um banco individual, mas não leva junto as informações globais do cluster, como roles e tablespaces. Esses elementos normalmente ficam fora do dump e exigem ferramentas/comandos próprios, como o pg_dumpall para objetos globais. Por isso, no conjunto, somente a III está certa, e o gabarito é a letra B.