Qual é a diferença geral entre uma v$
exibição e seu dba_
equivalente? Tomemos, por exemplo, v$tablespace
e dba_tablespaces
.
relate perguntas
-
Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?
-
ORDER BY usando prioridades personalizadas para colunas de texto
-
Interface sqlplus confortável? [fechado]
-
Como encontrar as instruções SQL mais recentes no banco de dados?
-
Como posso consultar nomes usando expressões regulares?
A maneira mais fácil de pensar nisso é:
DBA_ / USER_ / ALL_
as visualizações são construídas no dicionário de dados - elas não estarão disponíveis se o banco de dados não estiver montado e aberto.V$
as exibições tendem a ser executadas na instância e, portanto, podem estar disponíveis se o banco de dados não estiver montado ou não estiver montado e aberto, dependendo da natureza da exibição.Usando seu exemplo:
V$TABLESPACE
é uma visão emX$KCCTS
, que é uma estrutura de memória interna.DBA_TABLESPACES
é uma visualização na tabela do dicionário de dadosSYS.TS$
Além das diferenças que Adam Musch listou, existem mais algumas diferenças entre dba_ views e v$ views que vale a pena mencionar, pois são possíveis problemas se você não estiver ciente dessas diferenças:
1) A maioria (mas não todas) das visualizações v$ não são tecnicamente visualizações, mas são sinônimos de visualizações v_$. Esta é uma distinção importante, pois você não pode conceder/revogar permissões contra sinônimos:
2) Você pode executar consultas de flashback em exibições dba_. No entanto, a execução de consultas de flashback em visualizações v$ retorna os dados atuais (12.1 docs on Using Oracle Flashback Technology) :
Como apontou Adam Musch, as exibições v$ são executadas diretamente na instância, enquanto as exibições dba_ são executadas no dicionário de dados. Depois de entender isso, faz sentido por que essa limitação está em vigor. Ainda assim, eu realmente gostaria que a consulta de flashback em v $ views retornasse um erro em vez de não funcionar silenciosamente, pois essa pegadinha pode passar despercebida por algum tempo ...