Este post é dedicado a um cara muito gente boa que trabalhou comigo.
Ele está tentando se "suicidar", hahaha, brincadeirinha...está estudando para virar um DBA!! Boa sorte Gustavo!!
Ae Douglas...quer dizer Gustavo :P!! se tiver alguma dúvida, é só postar ai nos comments!
Bom sem mais introduções, o assunto de hoje é: Views importantes que todos DBAs deveriam ter tatuadas no corpo!! haha
Seguinte, no oracle existem muitas views importantes...
P: O que é view?
R: View nada mais é do que uma visualização customizada de uma ou mais tabelas ou outras views.
P: Porque importantes?
R: Porque o oracle usa tabelas para armazenar tudo o que acontece no banco, desde a criação de uma tabela, até os logins que são executados.
Vamos dar um exemplo:
Digamos que o usuário HR executa um comando para criar uma tabela:
SQL> CREATE HR.TABLE TBL_EXAMPLE_1 ( 2 id NUMBER(5), 3 txt VARCHAR2(500) 4 ); Table created. SQL> comment on column HR.TBL_EXAMPLE_1.TXT is 'Este e um exemplo de comentario na coluna.'; Comment created.
P: Legal, e agora, como o oracle faz para saber que essa tabela foi criada?
R: Simples...ele armazena essas informações em uma ou várias tabela interna dele.
Sera?? hahaha
bom...para provar isto vamos utilizar algumas views de dicionario chamadas static views ( Views estáticas ).
Elas são chamadas assim porque elas mudam raramente ( somente quando há mudanças no dicionario ).
Entre as existentes, vamos olhar as seguintes:
DBA_* -> Estas views possuem informações sobre tudo que é relevante no banco de dados, e normalmente só deveria ser utilizada por administradores.
ALL_* -> Estas views possuem informações de todos os objetos que um determinado usuário tem acesso.
USER_* -> Estas views possuem informações sobre todos os objetos criado pelo schema.
Ex: DBA_TABLES, ALL_TABLES, USER_TABLES
Reparem que todos os nomes dessas views estão no plural e isso vale para todas as outras.
Chega de enrolar e vamos checar se realmente a informação sobre a tabela que criamos acima está no banco.
Execute a seguinte query:
SQL> Select OWNER, TABLE_NAME 2 From DBA_TABLES 3 Where OWNER = 'HR' 4 And TABLE_NAME = 'TBL_EXAMPLE_1'; OWNER TABLE_NAME -------------------- ------------------------- HR TBL_EXAMPLE_1 one row selected.
Viu....eu não estava enganando voces :P!!
Agora uma questão importante:
P: Preciso decorar TODOS os nomes dessas views?
R: Não, porém deveria saber a maioria delas.
P: E se eu não souber, o que eu faço?
R: Existem sempre a opção de sentar e chorar :P..hahaha mas essa não é lá uma boa opção :P. Na verdade, o oracle possui um tabela onde ele guarda o nome de todas essas tabelas importantes...ufaaa.. thanks Oracle ;)
P: Qual o nome dela? Como faço então?
R: O nome dessa tabela é DICTIONARY:
SQL> describe dictionary Name Null? Type ------------------------- -------- ----------- TABLE_NAME VARCHAR2(30) COMMENTS VARCHAR2(4000)
Digamos que por exemplo voce queria saber qual o nome da tabela onde contém os comentários que foram feitos em uma determinada columa de uma tabela.
Um pouco mais de queries!!:
SQL> SELECT TABLE_NAME, COMMENTS 2 FROM DICTIONARY 3 WHERE TABLE_NAME LIKE 'DBA_%COL%' 4 ORDER BY 1; TABLE_NAME COMMENTS --------------------- --------------------------------------------------------- ... DBA_COLL_TYPES Description of all named collection types in database DBA_COL_COMMENTS Comments on columns of all tables and views DBA_COL_PRIVS All grants on columns in the database ... 44 rows selected.
Bom...agora com 44 linhas não fica muito dificil de achar neh?
Com o passar do tempo, voce acostuma com a lógica nos nomes das tabelas e dai fica mais fácil de achar o nome. ( Ex: .. like 'DBA_%COL%COMMENT%)
Só por curiosidade, vamos ver se o comentario realmente está la? ( teimoso eu né?..hahaha )
SQL> SELECT OWNER, TABLE_NAME, COLUMN_NAME, COMMENTS 2 FROM DBA_COL_COMMENTS 3 WHERE OWNER = 'HR' 4 AND TABLE_NAME = 'TBL_EXAMPLE_1' 5 AND COLUMN_NAME = 'TXT'; OWNER TABLE_NAME COLUMN_NAME COMMENTS -------- ------------- ------------- -------------------------------------------- HR TBL_EXAMPLE_1 TXT Este e um exemplo de comentario na coluna. one row selected.
É...realmente está lá!! :D
Galerinha...eu ia escrever sobre as views de performance, porém o post iria ficar muito grande....então decidi publicar mais um post sobre views, logo coloco o link aqui.
Espero que tenham gostado....sei que explicar não é muito o meu forte!!
Qualquer dúvida, sugestão, melhorias, criticas etc, só postar um comment ai.
Bom...abraços a todos até breve.
Gustavo: keep walking ;)
[]'sss