Escolar Documentos
Profissional Documentos
Cultura Documentos
Apresentação
Para poder funcionar o PostGreSql armazena suas informações em seu diretório de
dados, que pode ser definido através da variável de ambiente pgdata.
Além disso organiza seus dados em base de dados (database) que servem de
contêiner para todos os objetos de um banco de dados.
Nesta aula iremos estudar exatamente estes elementos.
Objetivos
1
Conteúdo online
2
Fig1 Estrutura do PGdata
3
Fig 2 Subdiretórios de Base
O nome dos subdiretórios corresponde ao OID da base que pode ser obtido ao
se fazer uma consulta ao catálogo (Fig3) com o comando
SELECT oid, datname FROM pg_database;
4
arquivos temporários: com nome no o formato tNNN_filenode, sendo
que o PID do processo que o está usando corresponde ao NNN.
1.3. pg_xlog.
Contem os arquivos de controle de transação e do Log do sistema, o WAL.
Os arquivos deste diretório possuem as seguintes características:
16 MB é o tamanho de cada um;
O seu nome é composto per um número hexadecimal
Os arquivos são reciclados após cada checkpoint os arquivos são reciclados
1.4. pg_log.
Neste diretórios são armazenados os log de erros
1.5. pg_tblspc.
Contem os links simbólicos para a localização real das tablespaces
5
pgdata/pg_multixact;
pgdata/pg_subtrans;
pgdata/pg_twophase.
6
[ [ WITH ] [ OWNER [=] dono_do_banco_de_dados ]
[ TEMPLATE [=] modelo ]
[ ENCODING [=] codificação ]
[ TABLESPACE [=] espaço_de_tabelas ] ]
Onde:
7
Além disso foi criado o subdiretório 16408 na diretório base ( fig5)
8
Vamos verificar sua criação
SELECT oid, datname FROM pg_database;
Note que o OID do database é 16412 tendo sido criado um subdiretório com
este nome no diretório base
9
Note que apesar de ter mudado de nome o OID do banco continua sendo
16412, ou seja, o mesmo que correspondia a aula2 e o subdiretório em base
continua sendo o mesmo
Sintaxe:
DROP DATABASE nome
Vejamos um exemplo:
Vamos apagar o banco de dados aula.
Conectado em outro banco de dados emita o comando
Drop database aula;
10
Após eliminar a base de dados voce poderá confirmar que o banco não consta
mais no catálogo com o comando:
SELECT oid, datname FROM pg_database;
11
Existe no cluster também o template0, um segundo banco modelo.
Inicialmente este banco possui os mesmo objetos de template1, ou seja
aqueles pré-definidos pela instalação do servidor. Este banco nunca deve ser
modificado após a instalação ou execução do initdb, dependo de como o SGBD
foi instalado.
Se voce desejar criar um novo banco apenas com os elementos padrão, sem
as alterações realizadas em template1 no comando CREATE DATABASE deve
especificar que o modelo a ser utilizado é o template0. O comando para isso
seria :
CREATE DATABASE nome_do_banco_de_dados TEMPLATE template0;
Caixa de Atenção
Isto é particularmente útil quando você por exemplo está realizando a
restauração de uma cópia de segurança de um banco de dados feita com
pg_dump
Este procedimento evita eventuais conflitos entre a cópia de segurança e
adições que foram realizadas em template1
Fim caixa de atenção
Podem ser criados bancos de modelos adicionais, na realidade, qualquer
banco pode ser usado como modelo para outro , basta especifica-lo no
parâmetro TEMPLATE de CREATE DATABASE.
Isto não dever ser entendido como um forma de copiar uma base de dados
para outra. O banco utilizado como modelo deve esta inativo, ou seja, nenhum
usuário pode estar conectado a ele. O ideal é que o banco utilizado como
modelo seja somente de leitura e não sofra alterações.
Em pg_database existem duas colunas que indicam se o banco se destina a
servir de modelo (datistemplate) e se podem ser realizadas novas conexões
no banco de dados (datallowconn).
O Comando que nos mostrará estas informações é:
select oid, datname,datistemplate,datallowconn from pg_database;
12
Analisando o retorno você pode reparar que a base postgres este com F (false)
em datistemplete , portanto não deve ser usada como modelo enquanto as
outras duas estão com T (true) e portanto podem ser utilizadas.
Já na coluna datallowconn a única base com F(false) é template0, isso é feito
para evitar que ele sofra modificações.
Após preparar um modelo ou fazer alguma alteração em template1 você deve
executar o comando VACUUM FREEZE ou VACUUM FULL FREEZE nesta
base de dados. Ao se fazer isso garante-se que todas as linhas do banco de
dados serão congeladas e manterão sua consistência em relação aos ID de
transação.
Link VACUUM
Posteriormente na disciplina veremos para que serve o comando VACUUM e
suas implicações.
Fim LINK VACUUM
Caixa de Atenção
template1 e template0 são bancos de dados como outros quaisquer, não tendo
nenhum status especial além do fato do nome template1 ser o default o modelo
no comando CREATE DATABASE,
Fim Caixa de Atenção
4. PGADMIN4
Podemos gerenciar nossa bases de dados utilizando o PGAdmin4
A figura 7 mostra a estrutura de arvore da ferramenta
Nesta Estrutura podemos notar dentro de PostGreSql 12, que é o cluster criado pela
instalação as entradas Database, LoginGroup Roles e Tablespaces
13
FIG8 Estrutura de Arvore do PgAdmin
14
a. Clique com o botão direito em database e selecione Create Database
15
d. A aba SQL mostra o comando que será executado, basta então clicar em
save
16
e. Uma vez criada a base ela aparece na arvore de administração
17
b. O servidor solicitará confirmação, clique em OK e o database será eliminado.
Atividades
Gabarito comentado
18
O comando ser utilizado é:
Create Database atividade1;
Gabarito Comentado:
O comando ser utilizado é:
Drop Database atividade1;
19
Atividade3: Utilizando o PGADMIN crie o database atividade 3 com codificação
win1252 e utilizando como modelo o template0
Confirme a criação do banco
Gabarito Comentado:
a. Clique com o botão direito em database e selecione Create Database
20
c. A seguir na aba definition escolhe o valor para os diversos parâmetros de
criação
21
Atividade 4: Utilizando o PGADIMIN elimine a base de dados atividade3 e confirme
sua eliminação
Gabarito Comentado:
a. Para eliminar um database clique com o botão direito no seu nome e escolha
DROP
22
c. O database desaparecerá da arvore de administração
Referências
Manual do PostGreSql
Santos E. V. Administração do PostGreSql 1ª.Ed 2017
Caiut F – Administração de Banco de Dados 1ª.Ed 2015
Próximos passos
Explore +
23
Documentação oficial do PGAdmin4
https://www.pgadmin.org/docs/pgadmin4/development/
Livro PostGreSql
https://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico
24