Pular para o conteúdo principal

Dicionário de Dados - Estruturas Lógicas de Banco de Dados - Estruturas de Armazenamento no Oracle


#44
O dicionário de dados armazena todas informações referentes ao banco de dados, tanto da estrutura física, quanto da estrutura lógica.

As informações armazenadas no dicionário de dados são chamadas de metadados, que é, dados sobre dados. Isso significa que ele armazena informações sobre outros dados do banco de dados. Resumindo, o dicionário de dados é um conjunto de metadados.

As principais informações armazenadas no dicionário de dados são, informações sobre usuários, privilégios e roles, informações de segurança, informações de segmentos (tabelas), restrições de integridade, informações de monitoramento de desempenho, entre outras.

Cada instância do banco de dados deve possuir apenas um dicionário de dados, e se ele não existir o banco de dados não funciona.

Agora que você sabe a importância do dicionário de dados e o que ele armazena, vamos descobrir como ele é criado, atualizado e como podemos acessar as informações dele.

O dicionário de dados é criado apenas uma vez e isso ocorre quando o banco de dados é criado. O dicionário de dados é um conjunto de segmentos (tabelas e índices) e cada segmento pertence somente a um dos tablespaces SYSTEM ou SYSAUX, o funcionamento dos segmentos do dicionario de dados é parecido com qualquer outro segmento que você cria no banco de dados, a única diferença entre os segmentos do dicionário de dados dos demais segmentos é que nos segmentos do dicionário de dados as tabelas são criadas dinâmicamente na criação do banco de dados e ninguém tem permissão de acessa-las diretamente, não há nada que impeça um DBA curioso acessar diretamente, mas se realizar alterações nessas tabelas pode ocasionar erro irreversível e com isso perder todo o banco de dados.

O acesso ao dicionário de dados é somente para leitura e é realizado somente através de um conjunto de Views, essas Views possuem apenas três formatos que definem os graus de permissão, esses formatos são reconhecidos através dos seus prefixos, os prefixos são, DBA_ , ALL_ , USER_.

Significado dos prefixos:

- USER_ apresenta objetos que pertencentes ao usuário que esta consultando a view. Isso significa que a mesma consulta apresenta resultados diferentes para usuários diferentes.

- ALL_ apresenta objetos aos quais o usuário tem acesso, o resultado apresenta as próprias tabelas do usuário que esta acessando e as tabelas que o usuário tenha permissão para ver.

- DBA_ apresenta todos os objetos do banco de dados, independente de quem criou.

Exemplo de uso da View:

select * from USER_TABLES;
select * from ALL_TABLES;
select * from DBA_TABLES;


Se um usuário sem permissão tentar acessar uma determinada tabela, será informado que a tabela não existe. Essas Views são criadas como parte do processo de criação do banco de dados, contém um grande número de pacotes PL/SQL que são fornecidos pelo Oracle para ajudar os administradores de banco de dados no gerenciamento do banco.

Somente é possível instânciar e acessar o dicionário de dados, após a abertura do tablespace SYSTEM, para abertura do tablespace SYSTEM é usado o arquivo de controle (controlfile), esse arquivo de controle é responsável por listar todos os arquivos de dados e a quais tablespace cada um pertence. Somente após instância o dicionário de dados é possível abrir o banco de dados.

O dicionário de dados é atualizado somente pelo próprio Oracle e de forma interna. Essas atualizações acontecem toda vez que o banco executa uma instrução DDL ou DCL. Para reelembrar quais são essas instruções acesse esse post https://wdsdba.blogspot.com.br/2018/02/linguagens-internas-oracle-linguagens.html .

Exemplo de atualização do dicionário de dados é quando você executa a instrução CREATE TABLE, com isso será inserido linhas nas tabelas do dicionário de dados com as informações referentes a tabela criada, suas colunas, seus índices e as permissões.

Todas as ações a serem executadas no banco de dados tem que obrigatoriamente passar pelo dicionário de dados para validação, exemplo, ao realizar uma simples consulta a qualquer tabela do banco de dados, o servidor Oracle deve primeiramente consultar o dicionário de dados, para saber se a tabela existe, e as colunas que a compõem e as permissões do usuário que esta acessando. Como o dicionário de dados é sempre requisitado, então, para evitar muitos acessos I/O ao dicionário de dados, existe o Cache de Dicionário de Dados que fica dentro da memória Shared Pool, esse cache armazena as consultas e validações recentes, desta forma melhora o desempenho quando for realizada outra consulta. O Cache de Dicionário de Dados já foi explicado em um post anterior referente ao Shared Pool que fica nesse link https://wdsdba.blogspot.com.br/2018/02/shared-pool-estruturas-de-memoria-no.html .

Se tiverem dúvidas realizem um INSERT nos comentários e depois dê um COMMIT que depois respondo.

Abraço e bons estudos.

Comentários

Postagens mais visitadas deste blog

Conhecendo a arquitetura do Banco de Dados Oracle

#15 Vamos focar mais no ambiente de banco de dados mais comum, que é uma instância em um computador, abrindo um banco de dados armazenado em discos locais. Sempre que for mensionado instância, esta se referindo ao banco de dados em funcionamento. Um banco Oracle é composto por duas estruturas, uma lógica e uma física. A estrutura lógica é chamada de instância e composta por estruturas de memória e processos, a sua existência é temporária na memória RAM e CPU e fica ativa enquanto o banco Oracle estiver ligado, se desligar o banco Oracle toda a informação ou vestígios de sua existência será apagado da memória, ao ligar o banco Oracle a instância é carregada novamente na memória. Os processos que compõem a instância trabalham em segundo plano e fica ativo o tempo todo enquanto a instância estiver ativa. A estrutura física é onde fica armazenado as informações, e uma vez criado, ele existe até que o DBA deliberadamente decida exclui-lo. Quando um banco Oracle é iniciado, na me...

O Cache de Buffer do Banco de dados - Estruturas de Memória no Oracle

#21 Vamos conhecer um pouco mais sobre o Cache de Buffer de Dados. O Cache de Buffer de Dados é o local de trabalho do Oracle, é nessa área que ele executa as SQLs. A função dessa área é otimizar e melhorar o desempenho das instruções DML. O maior gargalo de um banco de dados é o I/O dos arquivos em disco. Mas antes de explicar como funciona o Cache de Buffer de Banco de dados, vamos entender rápidamente o que é bloco, desta forma você não fica perdido, os arquivos de dados que contém os registros que são as linhas da tabela, indices e outros objetos de dados são formatados em blocos de tamanho fixo, o DBA pode definir um tamanho para esses blocos ou deixar de forma automática. A quantidade de linhas por bloco é indefinida, pois, as linhas possuem comprimento variável, o comprimento desta linha dependerá do número de colunas e os tipos de informações definidos para a tabela. De acordo com tamanho das linhas, pode haver várias linhas por bloco ou uma linha pode se estender por vár...

Shared Pool - Estruturas de Memória no Oracle

#23 O Shared Pool é considerada umas das estruturas de memórias mais complexas da SGA, ela é dividida em dezenas de subestruturas e todas são gerenciadas internamente pelo Oracle. Mas nesse momento vamos citar apenas os 4 principais componentes desta estrutura, as demais serão analizadas posteriormente. Quando uma aplicação executa uma DML, vários processos internos no Oracle são realizados até o retorno do resultado para o usuário. E esses 4 componentes tem participação direta na execução da DML e com isso gerando um bom desempenho do banco de dados. Os 4 principais componentes são: - O Cache de Biblioteca - O Cache de Dicionário de Dados - A Área PL/SQL - O Cache de Resultados de Funções PL/SQL e Consultas SQL Agora, vamos conhecer um pouco mais de cada um. - O Cache de Biblioteca (library cache) Todas instruções DML enviadas pela aplicação devem ser analizadas pelo Oracle. Quem realiza essa análise é o parse, o parse converte o código escrito pelos progra...