[26ai] Mandatory Profile
![[26ai] Mandatory Profile](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1769696516840%2F41345bc4-94f0-4d5e-8288-15ca1f814db9.png&w=3840&q=75)
Ingeniero informático, Oracle ACE, DBA y Arquitecto OCI, con más de 15 años de experiencia en plataformas Oracle. Certificado en OCI Certified Architect Professional y OCI Migration and Integration Certified Professional.
Search for a command to run...
![[26ai] Mandatory Profile](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1769696516840%2F41345bc4-94f0-4d5e-8288-15ca1f814db9.png&w=3840&q=75)
Ingeniero informático, Oracle ACE, DBA y Arquitecto OCI, con más de 15 años de experiencia en plataformas Oracle. Certificado en OCI Certified Architect Professional y OCI Migration and Integration Certified Professional.
No comments yet. Be the first to comment.
El artículo también se encuentra publicado en Ingles English version. En este pequeño artículo vamos a ver la creación de Temporary Tablespace Groups, pero antes de meternos en faena, vamos a dar una pequeña pincelada de que se trata esta opción. Aun...
En el artículo de hoy vamos a ver las Calendar functions en 26ai, diseñadas para simplificar la "vida" a los desarrolladores. Antes de su existencia, esto se resolvía con ingeniosas combinaciones usan
![[26ai] SQL: Calendar functions/Aggregation Filters "CALENDAR"](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F587e3328-9877-4c7a-aad7-7811e251f81e.png&w=3840&q=75)
En el artículo de hoy vamos a ver como podemos recrear una PDB$Seed de manera fácil en caso que se quede corrupta y no tengamos backup. sys@> alter pluggable database PDB$SEED open read only; alter pl
![[OCI] Recreación PDB$SEED](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F289ede5b-558c-4f93-b5c0-fa04680c91ca.png&w=3840&q=75)
El artículo también se encuentra publicado en Ingles English version. En el artículo de hoy vamos a ver como podemos clonar una PDB usando RMAN Active Duplicate o bien usando una instrucción DDL entre
![[OCI] Clone PDB](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F8ce0c665-4a5d-459d-91cf-ffe3f47d8176.png&w=3840&q=75)
El artículo también se encuentra publicado en Ingles English version. En el artículo de hoy voy a compartir un sh que utilizo para ver de una manera rápida los jobs que se ejecutan desde Oracle Databa
![[OCI] Check Jobs DBCli](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F1376a869-58fa-491e-926a-a6ead08f9c80.png&w=3840&q=75)
El artículo también se encuentra publicado en Ingles English version. En el artículo de hoy vamos a ver la nueva sintaxis introducida para simplificar aún más los joins evitando errores comunes, hacie
![[26ai] JOIN_TO_ME](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F16a23f6e-ec4c-4f0a-9529-2c8a2af2ef5e.png&w=3840&q=75)
El artículo también se encuentra publicado en Ingles English version.
En este pequeño artículo vamos a ver los Mandatory Profile.
Aunque no es una novedad en 26ai, sino que fue en la 21c, vamos a proceder a configurarlo en la última release de Oracle.
Este tipo de Profile pueden ser creados dentro de CDB$Root para luego asignarse a las distintas PDBs. Otro punto a tener en cuenta, es que si necesitamos modificarlos, debemos realizarlo a nivel de CDB$ROOT, no de PDB, usando common users, no local users.
Además, las políticas definidas en el Profile se aplicarán a todos los usuarios de la PDB.
¿Qué parámetros puedo usar? A diferencia de un Profile, donde tenemos multitud de parámetros para configurar, aquí solo podemos definir dos, son:
Password_verify_function para forzar la complejidad de la contraseña por medio de la función que tenga asignada. Valor por defecto es null.
Password_grace_time permite especificar un periodo de gracia para aquellas cuentas que violen la complejidad de las contraseñas. Valor por defecto es 0.
Lo primero que vamos hacer es definir la función que asignaremos al parámetro password_verify_function.
SQL>
CREATE OR REPLACE FUNCTION VALIDATION_BUSINESS(username varchar2,
password varchar2,
old_password varchar2)
return boolean IS
BEGIN
if not ora_complexity_check(password, chars => 8, digit => 4) then
return(false);
end if;
return(true);
END;
/
Function created.
Cómo podemos ver, estoy definiendo la función VALIDATION_BUSINESS dentro de CDB$Root con el objetivo de que todas las contraseñas de los usuarios tengan al menos una longitud de 8 caracteres “chars => 8” y 4 dígitos “digit=>4“.
Definimos el Mandatory Profile usando los siguientes parámetros:
PASSWORD_VERIFY_FUNCTION para asignarle la función que hemos creado en el punto anterior.
PASSWORD_GRACE_TIME para dar al usuario un periodo de gracia de 5 días para cambiar la contraseña.
SQL>
CREATE MANDATORY PROFILE C##VALIDATION_BUSINESS
LIMIT
PASSWORD_VERIFY_FUNCTION VALIDATION_BUSINESS
PASSWORD_GRACE_TIME 5
CONTAINER = ALL;
Profile created.
Como último paso sería modificar el parámetro MANDATORY_USER_PROFILE.
Aquí podemos hacer dos cosas, si queremos que el cambio afecte a todas las PDB, debemos ajustar ese parámetro a nivel de CDB$ROOT; pero si queremos que solo se aplique a una PDB específica, entonces debemos modificarlo directamente dentro de esa PDB.
SQL> show parameter MANDATORY_USER_PROFILE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
mandatory_user_profile string
SQL> ALTER SYSTEM SET MANDATORY_USER_PROFILE=C##VALIDATION_BUSINESS;
System altered.
SQL> show parameter MANDATORY_USER_PROFILE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
mandatory_user_profile string C##VALIDATION_BUSINESS
Espero que os guste. ¡Nos vemos en el próximo artículo!