Realización de tareas comunes del sistema para instancias de base de datos de Oracle - Amazon Relational Database Service

Realización de tareas comunes del sistema para instancias de base de datos de Oracle

A continuación, puede encontrar cómo realizar ciertas tareas comunes de DBA relacionadas con el sistema en las instancias de base de datos de Amazon RDS que ejecutan Oracle. Para ofrecer una experiencia de servicio administrado, Amazon RDS no proporciona acceso mediante shell a las instancias de bases de datos y restringe el acceso a ciertos procedimientos y tablas del sistema que requieren privilegios avanzados.

Desconexión de una sesión

Utilice el procedimiento de Amazon RDS para desconectar la sesión actual mediante la finalización del proceso del servidor dedicad rdsadmin.rdsadmin_util.disconnect. El procedimiento disconnect tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

sid

número

El identificador de sesión.

serial

número

El número de serie de la sesión.

method

varchar

'IMMEDIATE'

No

Los valores válidos son 'IMMEDIATE' o 'POST_TRANSACTION'.

En el siguiente ejemplo se desconecta una sesión.

begin rdsadmin.rdsadmin_util.disconnect( sid => sid, serial => serial_number); end; /

Para obtener el identificador de la sesión y el número serie de la sesión, consulte la vista V$SESSION. En el siguiente ejemplo se obtienen todas las sesiones del usuario AWSUSER.

SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';

La base de datos debe estar abierta para utilizar este método. Para obtener más información acerca de cómo desconectar una sesión, consulte ALTER SYSTEM en la documentación de Oracle.

Terminación de una sesión

Para terminar una sesión, utilice el procedimiento de Amazon RDS rdsadmin.rdsadmin_util.kill. El procedimiento kill tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

sid

número

El identificador de sesión.

serial

número

El número de serie de la sesión.

method

varchar

null

No

Los valores válidos son 'IMMEDIATE' o 'PROCESS'. Si especifica IMMEDIATE, tiene el mismo efecto que ejecutar la siguiente instrucción:

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE

Si especifica PROCESS, termina los procesos asociados a una sesión. Solo debe especificar PROCESS si no consigue terminar la sesión mediante el uso de IMMEDIATE.

Para obtener el identificador de la sesión y el número serie de la sesión, consulte la vista V$SESSION. En el siguiente ejemplo se obtienen todas las sesiones del usuario AWSUSER..

SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';

En el ejemplo siguiente se termina una sesión.

BEGIN rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number, method => 'IMMEDIATE'); END; /

En el siguiente ejemplo, se terminan los procesos asociados a una sesión.

BEGIN rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number, method => 'PROCESS'); END; /

Cancelación de una instrucción SQL en una sesión

Utilice el procedimiento de Amazon RDS para cancelar una instrucción SQL en una sesió rdsadmin.rdsadmin_util.cancel.

nota

Este procedimiento se admite para Oracle Database 19c (19.0.0) y todas las versiones principales y secundarias posteriores de RDS for Oracle.

El procedimiento cancel tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

sid

número

El identificador de sesión.

serial

número

El número de serie de la sesión.

sql_id

varchar2

null

No

El identificador SQL de la instrucción SQL.

En el siguiente ejemplo se cancela una instrucción SQL en una sesión.

begin rdsadmin.rdsadmin_util.cancel( sid => sid, serial => serial_number, sql_id => sql_id); end; /

Para obtener el identificador de la sesión, el número de serie de la sesión y el identificador SQL de una instrucción SQL, consulte la vista V$SESSION. En el siguiente ejemplo se obtienen todas las sesiones e identificadores SQL del usuario AWSUSER.

select SID, SERIAL#, SQL_ID, STATUS from V$SESSION where USERNAME = 'AWSUSER';

Activación y desactivación de sesiones restringidas

Utilice el procedimiento de Amazon RDS para activar y desactivar las sesiones restringida rdsadmin.rdsadmin_util.restricted_session. El procedimiento restricted_session tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Descripción

p_enable

booleano

true

No

Establézcalo en true para activar las sesiones restringidas y en false para desactivarlas.

En el siguiente ejemplo se muestra cómo activar y desactivar las sesiones restringidas.

/* Verify that the database is currently unrestricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED /* Enable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => true); /* Verify that the database is now restricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ---------- RESTRICTED /* Disable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => false); /* Verify that the database is now unrestricted again. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED

Vaciado del grupo compartido

Utilice el procedimiento de Amazon RDS para vaciar el grupo compartid rdsadmin.rdsadmin_util.flush_shared_pool. El procedimiento flush_shared_pool no tiene ningún parámetro.

En el siguiente ejemplo se vacía el grupo compartido.

EXEC rdsadmin.rdsadmin_util.flush_shared_pool;

Vaciado de la caché de búfer

Utilice el procedimiento de Amazon RDS para vaciar la caché del búfe rdsadmin.rdsadmin_util.flush_buffer_cache. El procedimiento flush_buffer_cache no tiene ningún parámetro.

En el siguiente ejemplo se vacía la caché de búfer.

EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;

Vaciado de la caché flash inteligente de la base de datos

Para vaciar la caché flash inteligente de la base de datos, utilice el procedimiento rdsadmin.rdsadmin_util.flush_flash_cache de Amazon RDS. El procedimiento flush_flash_cache no tiene ningún parámetro. En el siguiente ejemplo se vacía la caché flash inteligente de la base de datos.

EXEC rdsadmin.rdsadmin_util.flush_flash_cache;

Para obtener más información acerca del uso de la caché flash inteligente de la base de datos con RDS para Oracle, consulte Almacenamiento de datos temporales en un almacén de instancias de RDS para Oracle.

Concesión de privilegios SELECT o EXECUTE para objetos SYS

Por lo general, para transferir privilegios se utilizan los roles, que pueden contener muchos objetos. Utilice el procedimiento de Amazon RDS para conceder privilegios a un solo objet rdsadmin.rdsadmin_util.grant_sys_object. El procedimiento solo concede los privilegios que ya haya obtenido el usuario maestro mediante un rol o una concesión directa.

El procedimiento grant_sys_object tiene los siguientes parámetros.

importante

Para todos los valores de parámetros, utilice mayúsculas a no ser que haya creado el usuario con un identificador que distingue entre mayúsculas y minúsculas. Por ejemplo, si ejecuta CREATE USER myuser o CREATE USER MYUSER, el diccionario de datos almacena MYUSER. Sin embargo, si utiliza comillas dobles en CREATE USER "MyUser", el diccionario de datos almacena MyUser.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_obj_name

varchar2

El nombre del objeto para el que se van a conceder privilegios. El objeto puede ser un directorio, una función, un paquete, un procedimiento, una secuencia, una tabla o una vista. Los nombres de los objetos deben escribirse exactamente como aparecen en DBA_OBJECTS. La mayoría de los objetos del sistema están definidos en mayúsculas, por lo que recomendamos que lo intente como primera opción.

p_grantee

varchar2

El nombre del objeto al que se van a conceder privilegios. El objeto puede ser un esquema o un rol.

p_privilege

varchar2

null

p_grant_option

booleano

false

No

Establézcalo en true para usar la opción de concesión (WITH GRANT OPTION). El parámetro p_grant_option es compatible con 12.1.0.2.v4 y versiones posteriores, todas las versiones 12.2.0.1 y todas las versiones 19.0.0.

En el siguiente ejemplo se le concede el privilegio SELECT sobre el objeto V_$SESSION al usuario USER1.

begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT'); end; /

En el siguiente ejemplo se le concede el privilegio SELECT sobre el objeto V_$SESSION al usuario USER1 con la opción de concesión.

begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT', p_grant_option => true); end; /

Para poder conceder privilegios sobre un objeto, una cuenta debe haber obtenido los privilegios directamente con la opción de concesión o a través de un rol concedido utilizando with admin option. En el caso más común, es posible que desee conceder SELECT para una vista de administración de bases de datos que se haya concedido al rol SELECT_CATALOG_ROLE. Si a su usuario no se le ha concedido ese rol directamente utilizando with admin option, no podrá transferir el privilegio. Si tiene el privilegio de DBA, puede conceder el rol directamente a otro usuario.

En el siguiente ejemplo se conceden SELECT_CATALOG_ROLE y EXECUTE_CATALOG_ROLE a USER1. Dado que se utiliza with admin option, USER1 ahora puede conceder acceso a los objetos SYS que se hayan concedido a SELECT_CATALOG_ROLE.

GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;

No es necesario volver a conceder los objetos que ya se han concedido a PUBLIC. Si utiliza el procedimiento grant_sys_object para volver a conceder acceso, la llamada al procedimiento se realiza correctamente.

Revocación de privilegios SELECT o EXECUTE para objetos SYS

Utilice el procedimiento de Amazon RDS para revocar privilegios a un solo objet rdsadmin.rdsadmin_util.revoke_sys_object. El procedimiento solo revoca los privilegios que ya haya obtenido la cuenta maestra mediante un rol o una concesión directa.

El procedimiento revoke_sys_object tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_obj_name

varchar2

El nombre del objeto para el que se van a revocar privilegios. El objeto puede ser un directorio, una función, un paquete, un procedimiento, una secuencia, una tabla o una vista. Los nombres de los objetos deben escribirse exactamente como aparecen en DBA_OBJECTS. La mayoría de los objetos del sistema están definidos en mayúsculas, por lo que recomendamos que pruebe así primero.

p_revokee

varchar2

El nombre del objeto para el que se van a revocar privilegios. El objeto puede ser un esquema o un rol.

p_privilege

varchar2

null

En el siguiente ejemplo se le revoca el privilegio SELECT sobre el objeto V_$SESSION desde un usuario USER1.

begin rdsadmin.rdsadmin_util.revoke_sys_object( p_obj_name => 'V_$SESSION', p_revokee => 'USER1', p_privilege => 'SELECT'); end; /

Administración de vistas RDS_X$ para instancias de bases de datos de Oracle

Puede que necesite acceder a las tablas fijas SYS.X$, a las que solo se puede acceder mediante SYS. Para crear vistas SYS.RDS_X$ en las tablas X$ aptas, utilice los procedimientos del paquete rdsadmin.rdsadmin_util. A su usuario maestro se le concede automáticamente el privilegio SELECT … WITH GRANT OPTION sobre las vistas RDS_X$.

Los procedimientos rdsadmin.rdsadmin_util están disponibles en las siguientes versiones del motor de base de datos:

  • 21.0.0.0.ru-2023-10.rur-2023-10.r1 y versiones de Oracle Database 21c posteriores

  • 19.0.0.0.ru-2023-10.rur-2023-10.r1 y versiones de Oracle Database 19c posteriores

importante

Internamente, el paquete rdsadmin.rdsadmin_util crea vistas en las tablas X$. Las tablas X$ son objetos internos del sistema que no se describen en la documentación de Oracle Database. Se recomienda probar vistas específicas en la base de datos que utilice fuera de producción y que solo cree vistas en la base de datos de producción sirviéndose de la orientación de Oracle Support.

Enumeración de tablas fijas X$ aptas para su uso en las vistas RDS_X$

Para enumerar tablas X$ aptas para su uso en vistas RDS_X$, utilice el procedimiento de RDS rdsadmin.rdsadmin_util.list_allowed_sys_x$_views. Este procedimiento no acepta parámetros. En las siguientes instrucciones se enumeran todas las tablas X$ aptas (se incluye un ejemplo de resultados).

SQL> SET SERVEROUTPUT ON SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views); 'X$BH' 'X$K2GTE' 'X$KCBWBPD' 'X$KCBWDS' 'X$KGLLK' 'X$KGLOB' 'X$KGLPN' 'X$KSLHOT' 'X$KSMSP' 'X$KSPPCV' 'X$KSPPI' 'X$KSPPSV' 'X$KSQEQ' 'X$KSQRS' 'X$KTUXE' 'X$KQRFP'

La lista de tablas X$ aptas puede cambiar con el tiempo. Para asegurarse de que su lista de tablas fijas X$ aptas esté actualizada, vuelva a ejecutar list_allowed_sys_x$_views periódicamente.

Creación de vistas SYS.RDS_X$

Para crear una vista RDS_X$ en una tabla X$ apta, utilice el procedimiento de RDS rdsadmin.rdsadmin_util.create_sys_x$_view. Solo puede crear vistas para las tablas que figuren en la salida de rdsadmin.rdsadmin_util.list_allowed_sys_x$_views. El procedimiento create_sys_x$_view acepta los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_x$_tbl

varchar2

Nulo

Un nombre de tabla X$ válido. El valor debe ser una de las tablas X$ notificadas por list_allowed_sys_x$_views.

p_force_creation

Booleano

FALSE

No

Un valor que indica si se debe forzar la creación de una vista RDS_X$ que ya exista para una tabla X$. De forma predeterminada, RDS no creará una vista si ya existe. Para forzar la creación, defina este parámetro como TRUE.

En el siguiente ejemplo se crea una vista SYS.RDS_X$KGLOB de la tabla X$KGLOB. El formato del nombre de la vista es RDS_X$tablename.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

La siguiente consulta del diccionario de datos muestra la vista SYS.RDS_X$KGLOB y su estado. A su usuario maestro se le concede automáticamente el privilegio SELECT ... WITH GRANT OPTION sobre esta vista.

SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; OWNER OBJECT_NAME STATUS ------------------------------ ------------------------------ ------------------------------ SYS RDS_X$KGLOB VALID
importante

No se garantiza que las tablas X$ permanezcan iguales antes y después de una actualización. RDS para Oracle elimina y vuelve a crear las vistas RDS_X$ de las tablas X$ durante una actualización del motor. A continuación, concede el privilegio SELECT ... WITH GRANT OPTION al usuario maestro. Tras una actualización, conceda los privilegios necesarios a los usuarios de la base de datos en las vistas RDS_X$ correspondientes.

Enumeración de vistas SYS.RDS_X$

Para enumerar las vistas RDS_X$ existentes, utilice el procedimiento de RDS rdsadmin.rdsadmin_util.list_created_sys_x$_views. El procedimiento muestra solo las vistas que se crearon mediante el procedimiento create_sys_x$_view. En el siguiente ejemplo, se enumeran las tablas X$ que tienen las vistas RDS_X$ correspondientes (se incluye un ejemplo de salida).

SQL> SET SERVEROUTPUT ON SQL> COL XD_TBL_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views); XD_TBL_NAME STATUS ------------------------------ ------------------------------ X$BH VALID X$K2GTE VALID X$KCBWBPD VALID 3 rows selected.

Eliminación de vistas RDS_X$

Para eliminar una vista SYS.RDS_X$, utilice el procedimiento de RDS rdsadmin.rdsadmin_util.drop_sys_x$_view. Solo puede eliminar vistas que figuren en la salida de rdsadmin.rdsadmin_util.list_allowed_sys_x$_views. El procedimiento drop_sys_x$_view acepta el siguiente parámetro.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_x$_tbl

varchar2

Nulo

Un nombre de tabla fija X$ válido. El valor debe ser una de las tablas fijas X$ notificadas por list_created_sys_x$_views.

En el siguiente ejemplo se elimina una vista RDS_X$KGLOB, que se creó en la tabla X$KGLOB.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

El siguiente ejemplo muestra que la vista SYS.RDS_X$KGLOB se ha eliminado (se incluye un ejemplo de salida).

SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; no rows selected

Concesión de privilegios a usuarios no maestros

Puede conceder privilegios SELECT para muchos objetos del esquema SYS utilizando el rol SELECT_CATALOG_ROLE. El rol SELECT_CATALOG_ROLE concede a los usuarios privilegios SELECT para las vistas del diccionario de datos. En el siguiente ejemplo se concede el rol SELECT_CATALOG_ROLE a un usuario denominado user1.

GRANT SELECT_CATALOG_ROLE TO user1;

Puede conceder privilegios EXECUTE para muchos objetos del esquema SYS utilizando el rol EXECUTE_CATALOG_ROLE. El rol EXECUTE_CATALOG_ROLE concede a los usuarios privilegios EXECUTE para los paquetes y los procedimientos del diccionario de datos. En el siguiente ejemplo se concede el rol EXECUTE_CATALOG_ROLE a un usuario denominado user1.

GRANT EXECUTE_CATALOG_ROLE TO user1;

En el siguiente ejemplo se obtienen los permisos que conceden los roles SELECT_CATALOG_ROLE y EXECUTE_CATALOG_ROLE.

SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') ORDER BY ROLE, TABLE_NAME ASC;

En el siguiente ejemplo se crea un usuario no maestro denominado user1, se le concede el privilegio CREATE SESSION y el privilegio SELECT para una base de datos denominada sh.sales.

CREATE USER user1 IDENTIFIED BY PASSWORD; GRANT CREATE SESSION TO user1; GRANT SELECT ON sh.sales TO user1;

Creación de funciones personalizadas para comprobar contraseñas

Puede crear una función personalizada de verificación de contraseñas de las siguientes maneras.

  • Para usar la lógica de verificación estándar y guardar la función en el esquema SYS, utilice el procedimiento create_verify_function.

  • Para usar la lógica de verificación personalizada y evitar guardar la función en el esquema SYS, utilice el procedimiento create_passthrough_verify_fcn.

El procedimiento create_verify_function

Puede crear una función personalizada para comprobar las contraseñas mediante el procedimiento de Amazon RDS rdsadmin.rdsadmin_password_verify.create_verify_function. El procedimiento create_verify_function es posible en la versión 12.1.0.2.v5 y todas las versiones principales y secundarias posteriores de RDS for Oracle.

El procedimiento create_verify_function tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_verify_function_name

varchar2

El nombre de la función personalizada. Esta función se crea automáticamente en el esquema SYS. Esta función se asigna a los perfiles de usuario.

p_min_length

número

8

No

El número mínimo necesario de caracteres.

p_max_length

número

256

No

El número máximo de caracteres permitido.

p_min_letters

número

1

No

El número mínimo necesario de letras.

p_min_uppercase

número

0

No

El número mínimo necesario de letras mayúsculas.

p_min_lowercase

número

0

No

El número mínimo necesario de letras minúsculas.

p_min_digits

número

1

No

El número mínimo necesario de dígitos.

p_min_special

número

0

No

El número mínimo necesario de caracteres especiales.

p_min_different_chars

número

3

No

El número mínimo de caracteres diferentes necesarios entre la contraseña antigua y la nueva.

p_disallow_username

booleano

true

No

Establezca esta opción en true para no permitir el nombre de usuario en la contraseña.

p_disallow_reverse

booleano

true

No

Establézcalo en true para impedir que se use el nombre de usuario a la inversa en la contraseña.

p_disallow_db_name

booleano

true

No

Establézcalo en true para impedir que se use el nombre de la base de datos o del servidor en la contraseña.

p_disallow_simple_strings

booleano

true

No

Establézcalo en true para impedir que se usen cadenas sencillas en la contraseña.

p_disallow_whitespace

booleano

false

No

Establézcalo en true para impedir que se usen caracteres de espacio en blanco en la contraseña.

p_disallow_at_sign

booleano

false

No

Establézcalo en true para impedir que se use el carácter @ en la contraseña.

Puede crear distintas funciones de verificación de contraseñas.

El nombre de la función personalizada está sujeto a ciertas restricciones. Su función personalizada no puede tener el mismo nombre que un objeto de sistema existente. El nombre no puede tener más de 30 caracteres de longitud. Asimismo, el nombre debe incluir una de las siguientes cadenas: PASSWORD, VERIFY, COMPLEXITY, ENFORCE o STRENGTH.

El siguiente ejemplo crea una función con el nombre CUSTOM_PASSWORD_FUNCTION. La función requiere que una contraseña tenga al menos 12 caracteres, 2 caracteres en mayúsculas, 1 dígito y 1 carácter especial, y que la contraseña no incluya el carácter @.

begin rdsadmin.rdsadmin_password_verify.create_verify_function( p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', p_min_length => 12, p_min_uppercase => 2, p_min_digits => 1, p_min_special => 1, p_disallow_at_sign => true); end; /

Para ver el texto de la función de verificación, realice una consulta de DBA_SOURCE. En el siguiente ejemplo se obtiene el texto de una función de contraseña personalizada llamada CUSTOM_PASSWORD_FUNCTION.

COL TEXT FORMAT a150 SELECT TEXT FROM DBA_SOURCE WHERE OWNER = 'SYS' AND NAME = 'CUSTOM_PASSWORD_FUNCTION' ORDER BY LINE;

Para asociar la función de verificación a un perfil de usuario, utilice alter profile. En el siguiente ejemplo se asocia una función de verificación al perfil de usuario DEFAULT.

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

Para ver qué perfiles de usuario están asociados a cada función de verificación, consulte DBA_PROFILES. En el siguiente ejemplo se obtienen los perfiles asociados a la función de verificación personalizada llamada CUSTOM_PASSWORD_FUNCTION.

SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD' AND LIMIT = 'CUSTOM_PASSWORD_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION

En el siguiente ejemplo se obtienen todos los perfiles y las funciones de verificación de contraseñas a las que están asociados.

SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION RDSADMIN PASSWORD_VERIFY_FUNCTION PASSWORD NULL

El procedimiento create_passthrough_verify_fcn

El procedimiento create_passthrough_verify_fcn es posible con la versión 12.1.0.2.v7 y todas las versiones principales y secundarias posteriores de RDS for Oracle.

Puede crear una función personalizada para comprobar las contraseñas mediante el procedimiento de Amazon RDS rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn. El procedimiento create_passthrough_verify_fcn tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_verify_function_name

varchar2

El nombre de la función de verificación personalizada. Es una función contenedora que se crea automáticamente en el esquema SYS y no contiene ninguna lógica de verificación. Esta función se asigna a los perfiles de usuario.

p_target_owner

varchar2

El propietario del esquema de la función de verificación personalizada.

p_target_function_name

varchar2

El nombre de la función personalizada existente que contiene la lógica de verificación. La función personalizada debe devolver un valor booleano. La función debe devolver true si la contraseña es válida y false si la contraseña no es válida.

En el siguiente ejemplo se crea una función de verificación de contraseñas que utiliza la lógica de la función PASSWORD_LOGIC_EXTRA_STRONG.

begin rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn( p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', p_target_owner => 'TEST_USER', p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG'); end; /

Para asociar la función de verificación a un perfil de usuario, utilice alter profile. En el siguiente ejemplo se asocia la función de verificación al perfil de usuario DEFAULT.

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

Configuración de un servidor DNS personalizado

Amazon RDS admite el acceso de red saliente en las instancias de bases de datos que ejecutan Oracle. Para obtener más información acerca del acceso de red saliente, incluidos los requisitos previos, consulte Configuración del acceso UTL_HTTP mediante certificados y un wallet de Oracle..

Amazon RDS Oracle permite realizar la resolución del servicio de nombres de dominio (DNS) desde un servidor DNS personalizado propiedad del cliente. Solo es posible resolver nombres de dominio completos desde una instancia de base de datos de Amazon RDS a través de un servidor DNS personalizado.

Después de configurar un servidor de nombres DNS personalizado, se tardan hasta 30 minutos en propagar los cambios a la instancia de base de datos. Una vez que se propaguen los cambios a la instancia de base de datos, todo el tráfico de red saliente que requiera una búsqueda de DNS consultará el servidor DNS personalizado a través del puerto 53.

Para configurar un servidor DNS personalizado para su instancia de base de datos de Amazon RDS for Oracle, haga lo siguiente:

  • Desde el conjunto de opciones de DHCP asociado a la nube virtual privada (VPC), establezca la opción domain-name-servers en la dirección IP del servidor de nombres DNS. Para obtener más información, consulte Conjuntos de opciones de DHCP.

    nota

    La opción domain-name-servers acepta hasta cuatro valores, pero la instancia de base de datos de Amazon RDS solo utiliza el primer valor.

  • Asegúrese de que el servidor DNS puede resolver todas las consultas de búsqueda, incluidos los nombres de DNS públicos, los nombres de DNS privados de Amazon EC2 y los nombres de DNS específicos del cliente. Si el tráfico de red saliente contiene búsquedas de DNS que el servidor DNS no puede resolver, este debe tener configurados los proveedores de DNS correspondientes.

  • Configure el servidor DNS para que genere respuestas de protocolo de datagramas de usuario (UDP) de 512 bytes como máximo.

  • Configure el servidor DNS para que genere respuestas de protocolo de control de transmisión (TCP) de 1024 bytes como máximo.

  • Configure el servidor DNS para que permita el tráfico entrante desde las instancias de bases de datos de Amazon RDS a través del puerto 53. Si el servidor DNS está en una Amazon VPC, la VPC debe tener un grupo de seguridad que contenga reglas entrantes que permitan el tráfico UDP y TCP en el puerto 53. Si el servidor DNS no está en una Amazon VPC, debe tener lista de permitidos de firewall apropiada para permitir el tráfico entrante UDP y TCP en el puerto 53.

    Para obtener más información, consulte Grupos de seguridad de su VPC y Adición, eliminación y actualización de reglas.

  • Configure la VPC de la instancia de base de datos de Amazon RDS para que permita el tráfico saliente a través del puerto 53. La VPC debe tener un grupo de seguridad que contenga reglas salientes que permitan el tráfico UDP y TCP en el puerto 53.

    Para obtener más información, consulte Grupos de seguridad de su VPC y Adición, eliminación y actualización de reglas.

  • La ruta de direccionamiento entre la instancia de base de datos de Amazon RDS y el servidor DNS debe configurarse correctamente para permitir el tráfico de DNS.

    • Si la instancia de base de datos de Amazon RDS y el servidor DNS no están en la misma VPC, debe establecerse una interconexión entre ellos. Para obtener más información, consulte ¿Qué es un emparejamiento de VPC?

Establecer y anular eventos de diagnóstico del sistema

Para establecer y anular eventos de diagnóstico a nivel de sesión, puede utilizar la instrucción de Oracle SQL ALTER SESSION SET EVENTS. Sin embargo, para establecer eventos a nivel del sistema no puede utilizar Oracle SQL. En vez de eso, utilice los procedimientos de evento de sistema que hay en el paquete rdsadmin.rdsadmin_util. Los procedimientos de evento de sistema están disponibles en las siguientes versiones del motor:

  • Todas las versiones de Oracle Database 21c

  • 19.0.0.0.ru-2020-10.rur-2020-10.r1 Oracle Database 19c y versiones posteriores

    Para obtener más información, consulte la sección sobre la versión 19.0.0.0.ru-2020-10.rur-2020-10.r1 en las notas de la versión de Amazon RDS for Oracle.

  • 12.2.0.1.ru-2020-10.rur-2020-10.r1 Oracle Database 12c versión 2 (12.2.0.1) y versiones posteriores

    Para obtener más información, consulte la sección sobre la versión 12.2.0.1.ru-2020-10.rur-2020-10.r1 en las notas de la versión de Amazon RDS for Oracle.

  • 12.1.0.2.V22 Oracle Database 12c versión 1 (12.1.0.2) y versiones posteriores

    Para obtener más información, consulte la sección sobre la versión 12.1.0.2.v22 en las notas de la versión de Amazon RDS for Oracle.

para

importante

Internamente, con el paquete rdsadmin.rdsadmin_util se establecen eventos mediante el uso de la instrucción ALTER SYSTEM SET EVENTS. Esta instrucción ALTER SYSTEM no figura en la Documentación de la base de datos de Oracle. Algunos eventos de diagnóstico del sistema pueden generar grandes cantidades de información de seguimiento, provocar contención o afectar la disponibilidad de la base de datos. Se recomienda probar eventos de diagnóstico concretos en la base de datos que no utilice para producir y que solo establezca eventos en la base de datos de producción sirviéndose de la orientación de Oracle Support.

Hacer una lista de los eventos de diagnóstico del sistema permitidos

Para hacer una lista de los eventos de sistema que puede establecer, utilice el procedimiento de Amazon RDS rdsadmin.rdsadmin_util.list_allowed_system_events. Este procedimiento no acepta parámetros.

En el ejemplo siguiente se hace una lista de todos los eventos de sistema que puede establecer.

SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;

En la siguiente salida de ejemplo se muestran los números de eventos y sus descripciones. Utilice el procedimiento set_system_event de Amazon RDS para establecer estos eventos y el procedimiento unset_system_event de Amazon RDS para anularlos.

604 - error occurred at recursive SQL level 942 - table or view does not exist 1401 - inserted value too large for column 1403 - no data found 1410 - invalid ROWID 1422 - exact fetch returns more than requested number of rows 1426 - numeric overflow 1427 - single-row subquery returns more than one row 1476 - divisor is equal to zero 1483 - invalid length for DATE or NUMBER bind variable 1489 - result of string concatenation is too long 1652 - unable to extend temp segment by in tablespace 1858 - a non-numeric character was found where a numeric was expected 4031 - unable to allocate bytes of shared memory ("","","","") 6502 - PL/SQL: numeric or value error 10027 - Specify Deadlock Trace Information to be Dumped 10046 - enable SQL statement timing 10053 - CBO Enable optimizer trace 10173 - Dynamic Sampling time-out error 10442 - enable trace of kst for ORA-01555 diagnostics 12008 - error in materialized view refresh path 12012 - error on auto execute of job 12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA 14400 - inserted partition key does not map to any partition 31693 - Table data object failed to load/unload and is being skipped due to error:
nota

La lista de eventos de sistema permitidos puede cambiar con el tiempo. Para confirmar que tiene la lista más reciente de eventos aptos, use rdsadmin.rdsadmin_util.list_allowed_system_events.

Establecimiento de eventos de diagnóstico del sistema

Para establecer un evento de sistema, utilice el procedimiento de Amazon RDS rdsadmin.rdsadmin_util.set_system_event. Solo puede establecer eventos que figuren en la salida de rdsadmin.rdsadmin_util.list_allowed_system_events. El procedimiento set_system_event acepta los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_event

número

El número de evento de sistema. El valor debe ser uno de los números de evento que se informaron mediante list_allowed_system_events.

p_level

número

El nivel del evento. Consulte la Documentación de la base de datos de Oracle u Oracle Support para obtener las descripciones de diferentes valores de niveles.

Con el procedimiento set_system_event se construyen y se ejecutan las instrucciones ALTER SYSTEM SET EVENTS requeridas de acuerdo con los siguientes principios:

  • El tipo de evento (context o errorstack) se determina automáticamente.

  • Con una instrucción ALTER SYSTEM SET EVENTS 'event LEVEL event_level' se establecen los eventos de contexto. Esta notación es equivalente a ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'.

  • Con una instrucción ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)' se establecen los eventos de pila de errores. Esta notación es equivalente a ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_level'.

En el ejemplo siguiente se establece el evento 942 a nivel 3 y el evento 10442 a nivel 10. Se incluye la salida de muestra.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3); Setting system event 942 with: alter system set events '942 errorstack (3)' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10); Setting system event 10442 with: alter system set events '10442 level 10' PL/SQL procedure successfully completed.

Hacer una lista de los eventos de diagnóstico del sistema establecidos

Para hacer una lista de los eventos del sistema establecidos, utilice el procedimiento rdsadmin.rdsadmin_util.list_set_system_events de Amazon RDS. Con este procedimiento se informan solo los eventos establecidos a nivel del sistema por set_system_event.

En el ejemplo siguiente se hace una lista de los eventos de sistema activos.

SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_set_system_events;

En la siguiente salida de ejemplo se muestran la lista de eventos, el tipo de evento, el nivel a que los eventos están configurados actualmente y la hora a que se estableció el evento.

942 errorstack (3) - set at 2020-11-03 11:42:27 10442 level 10 - set at 2020-11-03 11:42:41 PL/SQL procedure successfully completed.

Anular eventos de diagnóstico del sistema

Para anular un evento de sistema, utilice el procedimiento rdsadmin.rdsadmin_util.unset_system_event de Amazon RDS. Solo puede anular eventos que figuren en la salida de rdsadmin.rdsadmin_util.list_allowed_system_events. El procedimiento unset_system_event acepta el siguiente parámetro.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_event

número

El número de evento de sistema. El valor debe ser uno de los números de evento que se informaron mediante list_allowed_system_events.

En el ejemplo siguiente se anulan los eventos 942 y 10442. Se incluye la salida de muestra.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942); Unsetting system event 942 with: alter system set events '942 off' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442); Unsetting system event 10442 with: alter system set events '10442 off' PL/SQL procedure successfully completed.