Saltar al contenido

¿Cuál es la diferencia entre vista av$ y su equivalente dba_?

Queremos enseñarte la mejor información que hallamos por todo internet. Deseamos que te sea útil y si deseas comentarnos cualquier detalle que nos pueda ayudar a crecer hazlo con libertad.

Solución:

La forma más fácil de pensarlo es:

  • DBA_ / USER_ / ALL_ las vistas se basan en el diccionario de datos; no están disponibles si la base de datos no está montada y abierta.

  • V$ las vistas tienden a ejecutarse en la instancia y, por lo tanto, pueden estar disponibles si la base de datos no está montada o no está montada y abierta, según la naturaleza de la vista.

Usando tu ejemplo:

  • V$TABLESPACE es una vista sobre X$KCCTSque es una estructura de memoria interna.
  • DBA_TABLESPACES es una vista en la tabla del diccionario de datos SYS.TS$

Además de las diferencias que Adam Musch enumeró, hay algunas diferencias más entre las vistas dba_ y las vistas v$ que vale la pena mencionar, ya que son posibles trampas si no está al tanto de estas diferencias:

1) La mayoría (pero no todas) las vistas v$ no son técnicamente vistas en absoluto, pero son sinónimos de vistas v_$. Esta es una distinción importante ya que no puede otorgar/revocar permisos contra sinónimos:

sqlplus / as sysdba

grant select on v$tablespace to user1;
   SQL Error: ORA-02030: can only select from fixed tables/views

select table_name from dba_synonyms where synonym_name = 'V$TABLESPACE';
   TABLE_NAME
   -------------
   V_$TABLESPACE

grant select on V_$TABLESPACE to user1;
   grant succeeded.

2) Puede ejecutar consultas de flashback contra dba_views. Sin embargo, la ejecución de consultas flashback en vistas de v$ devuelve datos actuales (documentos 12.1 sobre el uso de la tecnología Flashback de Oracle):

No puede recuperar datos anteriores desde una vista de rendimiento dinámico (V$). Una consulta en dicha vista devuelve datos actuales.

Puede realizar consultas sobre datos pasados ​​en static vistas del diccionario de datos, como *_TABLES.

Como señaló Adam Musch, las vistas v$ se ejecutan directamente en la instancia, mientras que las vistas dba_ se ejecutan en el diccionario de datos. Una vez que comprenda eso, tiene sentido por qué existe esta limitación. Aún así, yo De Verdad Desearía que la consulta de flashback contra las vistas de v $ arrojara un error en lugar de no funcionar silenciosamente, ya que este problema puede pasar desapercibido durante bastante tiempo …

Finalizando este artículo puedes encontrar los comentarios de otros gestores de proyectos, tú incluso tienes el poder mostrar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *