Análisis de sentencias SQL en Oracle
Cuando ejecutamos una sentecia SQL, ésta tendrá que pasar por varias fases antes de que sea ejecutada por Oracle. El primer paso consiste en analizar la consulta SQL a través de 2 funciones:
- Análisis Sintáctico
- Análisis Semántico
Ambos subprocesos se ejecutaran siempre, en todas las consultas SQL que realicemos en lo que se conoce como SOFT PARSE:
Análisis Sintáctico
En esta parte, Oracle comprueba que la instrucción SQL es una sentencia SQL válida, es decir que no se salta ninguna regla de la definición de consultas del lenguaje SQL.
Análisis Semántico
Durante esta parte de la fase de análisis se tienen en cuenta los objetos de la base de datos. Se comprueba por ejemplo que las tablas y las columnas de las que se hace referencia en la instrucción SQL en realidad existen en la base de datos, se controla si el usuario que ejecuta la consulta tienen acceso a los objetos y los privilegios adecuados, así como si existen ambiguedades a la hora de referenciar un determinado objeto.
Hasta ahora hemos visto solo la primera fase del análisis de la consulta, pero existe una fase más por la que no necesariamente pasan todas las consultas. Lo siguiente que hará Oracle es comprobar si la consulta que estamos ejecutando se encuentra o no en la “Shared Pool” intentando saber si dicha consulta ha sido procesada por una sesión anterior.
En caso de que la consulta se encuentra en la “Shared Pool” (haya sido ya anteriormente procesada), la fase de análisis de la consulta habrá terminado, obviando la ejecución de las fases de “Optimización” y “carga del plan en la memoria” (Row Source Generation). En el caso de llegar a este paso estaremos hablando de un análisis en el cual se han ejecutado todos los pasos, lo que se conoce como HARD PARSE.