Gestión de parámetros en BBDD multitenant
A partir de la versión de BBDD 21c ya no habrá opción: la arquitectura de las BBDD deberá ser de tipo multitenant. Si bien es cierto que con la 19c podemos seguir usando la arquitectura no multitenant, lo mejor sería empezar a habituarnos a la nueva arquitectura si no lo hemos hecho aún. Al empezar a usar esta nueva arquitectura, que básicamente permite fusionar varias BBDD en una, empiezan a surgir dudas sobre su funcionamiento y una de las más comunes es la gestión de la parametrización.
En BBDD no multitenant los parámetros se leen de un fichero de texto llamado init<SID>.ora o de otro en formato binario llamado spfile<SID>.ora, teniendo preferencia este último en caso de disponer de ambos y no indicar específicamente cuál queremos usar al arrancar la instancia. El spfile es el recomendado y tiene la ventaja de permitir cambiar parámetros una vez arrancada la instancia para que estos persistan en siguientes reinicios. En el mundo multitenant podemos tener varias BBDD Pluggable dentro de una misma BBDD Contenedor. ¿Cómo se gestionan en este caso los parámetros? ¿Podemos tener diferentes parámetros para cada BBDD Pluggable?
En primer lugar hay que recordar que los parámetros de una BBDD definen su funcionamiento, permitiéndonos ajustarlo a nuestras necesidades. Podemos definir la memoria que le asignamos, el número máximo de procesos, el método para seleccionar los planes de ejecución, el formato en que nos mostrará fechas y números o activar/desactivar parches entre muchos otros. En la versión 19c tenemos más de 480 parámetros (o más de 5.400 si contamos los “ocultos”).
Hay parámetros que se definen al crear la BBDD y no se pueden cambiar, otros se pueden cambiar pero sólo siguiendo un procedimiento estricto y otros se pueden modificar de manera relativamente fácil cuando nos convenga. De la misma manera, hay parámetros que deben ser los mismos para toda la BBDD; otros, se pueden modificar a nivel de BBDD Pluggable o de instancia y, finalmente, hay parámetros que se pueden modificar a nivel de sesión. Algunos, para que surjan efecto, nos obligan a reiniciar la BBDD, la pluggable, la instancia o reconectar la sesión, mientras que otros tiene efecto inmediato.
Para la BBDD Contenedor todo es igual que para una BBDD no multitenant. Podemos tener el init<SID>.ora, el spfile<SID>.ora y los parámetros que indiquemos en ellos los va a usar durante el arranque para configurar la instancia y los heredarán por defecto las sesiones de usuario. Si usamos el fichero spfile para los parámetros, los cambios que hagamos podrán ser almacenados en él y persistirán entre reinicios de la BBDD Contenedor.
Hay que tener en cuenta que hay ciertos parámetros que tan solo se pueden definir a nivel de BBDD Contenedor y que las BBDD Pluggable conectadas a ella van a “heredar”, mientras que otros, en cambio, pueden ser modificados a nivel de cada una de las BBDD Pluggable que tengamos y, en consecuencia, podrán coincidir o no con los de la BBDD Contenedor.
Los parámetros específicos que queramos tener en las diferentes BBDD Pluggable no quedarán almacenados en ningún fichero como en el caso de la BBDD Contenedor, si no en la tabla SYS.PDB_SPFILE$ ubicada en el diccionario de la BBDD Contenedor. En esta tabla tendremos una fila por cada tripleta de “parámetro, valor del parámetro y UID de la BBDD Pluggable a que aplica” (también dispone de otros campos que indican por ejemplo si el parámetro es activo o se ha eliminado).



