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.
Temas
- Desconexión de una sesión
- Terminación de una sesión
- Cancelación de una instrucción SQL en una sesión
- Activación y desactivación de sesiones restringidas
- Vaciado del grupo compartido
- Vaciado de la caché de búfer
- Vaciado de la caché flash inteligente de la base de datos
- Concesión de privilegios SELECT o EXECUTE para objetos SYS
- Revocación de privilegios SELECT o EXECUTE para objetos SYS
- Administración de vistas RDS_X$ para instancias de bases de datos de Oracle
- Concesión de privilegios a usuarios no maestros
- Creación de funciones personalizadas para comprobar contraseñas
- Configuración de un servidor DNS personalizado
- Establecer y anular eventos de diagnóstico del sistema
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 |
---|---|---|---|---|
|
número |
— |
Sí |
El identificador de sesión. |
|
número |
— |
Sí |
El número de serie de la sesión. |
|
varchar |
'IMMEDIATE' |
No |
Los valores válidos son |
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
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 |
---|---|---|---|---|
|
número |
— |
Sí |
El identificador de sesión. |
|
número |
— |
Sí |
El número de serie de la sesión. |
|
varchar |
null |
No |
Los valores válidos son
Si especifica |
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 |
---|---|---|---|---|
|
número |
— |
Sí |
El identificador de sesión. |
|
número |
— |
Sí |
El número de serie de la sesión. |
|
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 | Sí | Descripción |
---|---|---|---|---|
|
booleano |
true |
No |
Establézcalo en |
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 |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
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 |
|
varchar2 |
— |
Sí |
El nombre del objeto al que se van a conceder privilegios. El objeto puede ser un esquema o un rol. |
|
varchar2 |
null |
Sí |
— |
|
booleano |
false |
No |
Establézcalo en |
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 toUSER1
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 |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
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 |
|
varchar2 |
— |
Sí |
El nombre del objeto para el que se van a revocar privilegios. El objeto puede ser un esquema o un rol. |
|
varchar2 |
null |
Sí |
— |
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 |
---|---|---|---|---|
|
varchar2 |
Nulo |
Sí |
Un nombre de tabla |
|
Booleano |
FALSE |
No |
Un valor que indica si se debe forzar la creación de una vista |
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 |
---|---|---|---|---|
|
varchar2 |
Nulo |
Sí |
Un nombre de tabla fija |
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 TOuser1
; GRANT SELECT ONsh.sales
TOuser1
;
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 procedimientocreate_verify_function
. -
Para usar la lógica de verificación personalizada y evitar guardar la función en el esquema
SYS
, utilice el procedimientocreate_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
admite todas las versiones de RDS para Oracle.
El procedimiento create_verify_function
tiene los siguientes parámetros.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
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. |
|
número |
8 |
No |
El número mínimo necesario de caracteres. |
|
número |
256 |
No |
El número máximo de caracteres permitido. |
|
número |
1 |
No |
El número mínimo necesario de letras. |
|
número |
0 |
No |
El número mínimo necesario de letras mayúsculas. |
|
número |
0 |
No |
El número mínimo necesario de letras minúsculas. |
|
número |
1 |
No |
El número mínimo necesario de dígitos. |
|
número |
0 |
No |
El número mínimo necesario de caracteres especiales. |
|
número |
3 |
No |
El número mínimo de caracteres diferentes necesarios entre la contraseña antigua y la nueva. |
|
booleano |
true |
No |
Establezca esta opción en |
|
booleano |
true |
No |
Establézcalo en |
|
booleano |
true |
No |
Establézcalo en |
|
booleano |
true |
No |
Establézcalo en |
|
booleano |
false |
No |
Establézcalo en |
|
booleano |
false |
No |
Establézcalo en |
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_FUNCTIONCUSTOM_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
admite todas las versiones de RDS para 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 |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
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. |
|
varchar2 |
— |
Sí |
El propietario del esquema de la función de verificación personalizada. |
|
varchar2 |
— |
Sí |
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 |
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_FUNCTIONCUSTOM_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 para Oracle.
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 |
---|---|---|---|---|
|
número |
— |
Sí |
El número de evento de sistema. El valor debe ser uno de los números de evento que se informaron mediante |
|
número |
— |
Sí |
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
oerrorstack
) se determina automáticamente. -
Con una instrucción
ALTER SYSTEM SET EVENTS '
se establecen los eventos de contexto. Esta notación es equivalente aevent
LEVELevent_level
'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME CONTEXT FOREVER, LEVELevent_level
' -
Con una instrucción
ALTER SYSTEM SET EVENTS '
se establecen los eventos de pila de errores. Esta notación es equivalente aevent
ERRORSTACK (event_level
)'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME ERRORSTACK LEVELevent_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 |
---|---|---|---|---|
|
número |
— |
Sí |
El número de evento de sistema. El valor debe ser uno de los números de evento que se informaron mediante |
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.