Aplicación de creación o reemplazo de vistas en SQL
En primer lugar, las tablas y vistas del diccionario de Oracle se pueden dividir básicamente en tres niveles.
Tabla 1.X$
Esta parte de la tabla es la base para ejecutar la base de datos Oracle. La aplicación Oracle la crea dinámicamente cuando se inicia la base de datos.
Esta parte de la tabla es muy importante para la base de datos, por lo que Oracle no permite que usuarios distintos de SYSDBA accedan directamente a ella y no permite autorización explícita.
Si se muestra autorización, recibirá el siguiente error:
SQL gt autoriza seleccionar en x$ksppi para eygle
Gt seleccionar autoriza para eygle p>
Error en la línea 1:
ORA-02030: solo se puede seleccionar entre tablas/vistas fijas
2.GV$ y V $ vistas
A partir de Oracle8, se introdujo la vista GV$, que significa V$ global.
Salvo algunos casos especiales, cada vista V$ tiene su correspondiente vista GV$.
La vista GV$ se genera para satisfacer las necesidades del entorno OPS. En el entorno OPS, consultar la vista GV$ devolverá toda la información de la instancia. Cada vista V$ se basa en la vista GV$ establecida después de agregar la columna INST ID y solo contiene la información de la instancia de conexión actual.
Tenga en cuenta que cada vista V$ contiene declaraciones similares a las siguientes:
donde inst_id = USERENV('instance')
For Limitar el retorno de la instancia actual información.
Comencemos con GV$FIXED_TABLE y V$FIXED_TABLE.
SQL gt selecciona view_definition de v_$fixed_view_definition
donde view_name ='V$FIXED_TABLE';
View_definition
-
Seleccione nombre, ID de objeto, tipo y número de tabla de GV$FIXED_TABLE
donde inst_id = USERENV('instancia')
Aquí vemos que se crea V$FIXED_TABLE basado en GV$FIXED_TABLE.
SQL gt selecciona view_definition de v_$fixed_view_definition
donde view_name ='GV$FIXED_TABLE';
View_definition
-
seleccione inst_id, kqftanam, kqftaobj, TABLE, indx de x$kqfta
Unir todo
seleccione inst_id, kqfvinam, kqfviobj, VIEW, 65537 de x$kqfvi p>
Unir todos
select inst_id, kqfdtnam, kqfdtobj, TABLE, 65537 from x$kqfdt
De esta manera encontramos la tabla basada en la instrucción X$ Create para la vista GV$FIXED_TABLE creada.
3.Vista GV_$, V_$ y sinónimos V$, GV$
Estas vistas se crean a través de catalog.ql.
Cuando se ejecuta catalog.sql:
Crear o reemplazar la vista v_$fixed_table con select * de v $fixed_table
Crear o reemplazar la vista v_$fixed_table Reemplazar sinónimo público v$fixed_table
Crear o reemplazar la vista gv_$fixed_table con select * de gv$fixed_table
Crear o reemplazar el sinónimo público gv$ para gv_$fixed_table tabla _ fija
Observamos que primero se crean las primeras vistas V_$ y GV_$ y se crean las dos vistas V_$ y gv_$.
Luego cree sinónimos basados en la vista V_$.
Entonces, de hecho, la vista V$ a la que normalmente accedemos es en realidad sinónimo de vista V_$.
La vista V_$ se basa en la vista V$ real (que se basa en la tabla X$).
La vista v$fixed_view_definition es un punto de entrada para que estudiemos las relaciones entre objetos de Oracle. Una comprensión cuidadosa del mecanismo del diccionario de datos de Oracle nos ayudará a comprender y aprender en profundidad el conocimiento de la base de datos de Oracle.
Ir más allá
1).Tabla X$
Respecto a la tabla X$, también podemos vislumbrar su información de creación desde el diccionario de datos.
Primero, verificamos la tabla bootstrap$, que registra la información básica y la información del controlador para el inicio de la base de datos.
SQL gtselect * desde bootstrap $;
Fila # OBJ # SQL_TEXT