Data Dictionary e Dynamic Performance Views: Explorando o Coração do Oracle Database
O Data Dictionary e as Dynamic Performance Views são como o coração e o sistema circulatório de um banco de dados Oracle. Eles armazenam e transmitem informações vitais sobre todos os objetos, usuários e a própria estrutura do banco de dados. Se você já se perguntou como o Oracle sabe quem tem permissão para acessar determinado objeto ou como ele monitora o desempenho em tempo real, é aqui que encontramos essas respostas.
Ao longo deste artigo, exploraremos como essas duas peças funcionam, trazendo exemplos práticos e capturas de tela para ilustrar os resultados.
O Que é o Data Dictionary?
O Data Dictionary no Oracle Database é um conjunto de tabelas e views que armazenam informações sobre o banco de dados em si. Ele é automaticamente criado e mantido pelo Oracle assim que o banco é criado. Não se trata de algo que o administrador define manualmente, mas sim algo intrínseco ao funcionamento do Oracle. É como se o banco de dados estivesse constantemente escrevendo suas “memórias” e você pudesse consultá-las quando necessário.
Suponha que você queira ver todas as tabelas que pertencem ao usuário atual. Para isso, podemos usar a view `USER_TABLES`:
SELECT table_name FROM user_tables;
Este é o resultado resumido estando conectado como o usuário SYS, resumido pois os objetos do SYS relata 1539 linhas, ou seja são muitos objetos associados a este usuário.
Este é outro usuário do meu laboratório no qual tem menos objetos associados a ele apenas 4 pouca coisa comparado ao usuário SYS.
Menos ainda é o usuário:
Com apenas 1 objeto vinculado a ele. Todo este esforço em mostrar usuários diferentes é para demonstrar o uso do dicionário de dados e seus usuários.
Esse comando retorna todas as tabelas criadas pelo usuário atual. Se você precisar ver tabelas de outros usuários, pode utilizar a view `ALL_TABLES` e especificar o proprietário:
SELECT table_name
FROM all_tables
WHERE owner = 'NOME_DO_USUARIO';
A beleza do Data Dictionary está no fato de que todas essas views, como `USER_TABLES`, `ALL_TABLES` e até mesmo `DBA_TABLES`, referenciam as mesmas tabelas base por trás. Portanto, cada prefixo (`DBA`, `ALL`, `USER`) fornece diferentes níveis de acesso às informações — uma abordagem flexível que facilita o trabalho de DBAs e desenvolvedores.
Imagine que o Data Dictionary é como o catálogo de uma biblioteca gigante. A view `DBA_TABLES` é o equivalente ao catálogo completo que somente os bibliotecários (DBAs) podem acessar, enquanto `USER_TABLES` é como uma seção de “favoritos” que cada leitor (usuário) pode ver.
O Data Dictionary é criado e mantido automaticamente pelo Oracle — ou seja, o DBA não precisa se preocupar em criá-lo manualmente.
Dynamic Performance Views: Monitoramento em Tempo Real
Se o Data Dictionary é o catálogo estático do Oracle, as Dynamic Performance Views são os sensores em tempo real que monitoram o sistema. Elas têm o prefixo `V$` e oferecem uma visão atualizada do que está acontecendo no banco de dados. Por exemplo, se você quiser ver todas as sessões ativas no momento, a view V$SESSION é o lugar para ir.
Exemplo: Monitorando Sessões Ativas
SELECT sid, serial#, username, status
FROM v$session
WHERE status = 'ACTIVE';
A saída desse comando mostra as sessões que estão ativas no momento (adicionar captura de tela). Essas views são chamadas de views dinâmicas porque os dados que elas exibem estão mudando constantemente à medida que o banco de dados é utilizado.
Imagine um aeroporto. O Data Dictionary seria como o plano mestre do aeroporto, contendo detalhes sobre todos os terminais, portões e a estrutura física. Já as Dynamic Performance Views são como as telas de monitoramento que mostram, em tempo real, os voos que estão chegando, partindo ou atrasados. Sem essas informações dinâmicas, seria impossível gerenciar o tráfego aéreo com eficiência — e o mesmo vale para o Oracle!
Quem é o Dono do Data Dictionary?
O Data Dictionary é propriedade do usuário SYS, que detém os privilégios mais elevados no Oracle Database. O usuário SYSTEM, por sua vez, também possui acesso total a essas informações, mas SYS é o verdadeiro “administrador” dos dados.
SELECT owner, view_name
FROM dba_views
WHERE view_name = 'USER_TABLES';
Aqui, você verá que o proprietário da tabela USER_TABLES é o SYS. Isso confirma que o Oracle centraliza o controle desses dados essenciais em suas mãos mais privilegiadas.
Diferença Entre Base Tables e Views
As TABELAS BASE no Data Dictionary não são diretamente acessíveis para consulta. O Oracle oferece apenas as views sobre essas tabelas para proteger a integridade dos dados. As views, como ‘DBA_TABLES’, ‘USER_TABLES’, e ‘ALL_TABLES’, são o meio de acessar os metadados do banco.
Exemplo: Tentativa de Consulta Direta às Base Tables
Se você tentar consultar diretamente uma tabela base, por exemplo:
Isso resultaria em um erro de permissão, pois o Oracle não permite que os usuários consultem diretamente essas tabelas. Isso garante a integridade e o bom funcionamento do banco de dados, mantendo as operações seguras e consistentes.
Dados dos Usuários no Data Dictionary
O Data Dictionary também armazena informações críticas, como os nomes dos usuários cadastrados no banco de dados. Essas informações podem ser consultadas na view ‘DBA_USERS’:
SELECT username
FROM dba_users;
Aqui, você verá todos os usuários, incluindo DBAs e outros usuários comuns do sistema. Isso é fundamental para o gerenciamento de permissões e auditoria.
O Data Dictionary e as Dynamic Performance Views são ferramentas indispensáveis para qualquer DBA Oracle. Elas fornecem uma vasta gama de informações — desde a estrutura estática do banco de dados até o desempenho em tempo real. Entender como utilizá-las é crucial para garantir que seu ambiente Oracle esteja sempre funcionando da maneira mais eficiente e segura possível.
Ao longo deste artigo, exploramos como acessar e utilizar essas views, e vimos que os pontos levantados na pergunta inicial estão todos conectados à forma como o Oracle organiza, protege e oferece acesso às informações críticas do sistema.