Exécution des tâches système courantes pour les instances de bases de données Oracle - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécution des tâches système courantes pour les instances de bases de données Oracle

Vous trouverez ci-dessous des informations sur la façon d'effectuer certaines tâches DBA courantes liées au système sur vos instances de base de données Amazon RDS exécutant Oracle. Pour offrir une expérience de service géré, Amazon RDS ne fournit pas l'accès shell aux instances de base de données et limite l'accès à certaines tables et procédures système qui requièrent des privilèges avancés.

Déconnexion d'une session

Pour déconnecter la session en cours en mettant fin au processus serveur dédié, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.disconnect. La procédure disconnect possède les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

sid

nombre

Oui

Identifiant de session.

serial

nombre

Oui

Numéro de série de la session.

method

varchar

'IMMEDIATE'

Non

Les valeurs valides sont 'IMMEDIATE' ou 'POST_TRANSACTION'.

L'exemple suivant déconnecte une session.

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

Pour obtenir l'identifiant et le numéro de série de la session, interrogez la vue V$SESSION. L'exemple suivant obtient toutes les sessions pour l'utilisateur AWSUSER.

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

La base de données doit être ouverte pour pouvoir utiliser cette méthode. Pour plus d'informations sur la déconnexion d'une session, consultez ALTER SYSTEM (MODIFIER SYSTÈME) dans la documentation Oracle.

Terminer une session

Pour arrêter une session, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.kill. La procédure kill possède les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

sid

nombre

Oui

Identifiant de session.

serial

nombre

Oui

Numéro de série de la session.

method

varchar

null

Non

Les valeurs valides sont 'IMMEDIATE' ou 'PROCESS'. Si vous spécifiez IMMEDIATE, cela a le même effet que d'exécuter l'instruction suivante :

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE

Si vous spécifiez PROCESS, vous résiliez les processus associés à une séance. Spécifiez PROCESS uniquement si la résiliation de la session à l'aide de IMMEDIATEn'a pas abouti.

Pour obtenir l'identifiant et le numéro de série de la session, interrogez la vue V$SESSION. L'exemple suivant obtient toutes les sessions pour l'utilisateur AWSUSER.

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

L'exemple suivant met fin à une session.

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

L'exemple suivant résilie les processus associés à une séance.

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

Annulation d'une instruction SQL dans une session

Pour annuler une instruction SQL dans une session, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.cancel.

Note

Cette procédure est prise en charge pour Oracle Database 19c (19.0.0) et toutes les versions majeures et mineures ultérieures de RDS for Oracle.

La procédure cancel possède les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

sid

nombre

Oui

Identifiant de session.

serial

nombre

Oui

Numéro de série de la session.

sql_id

varchar2

null

Non

Identifiant SQL de l'instruction SQL.

L'exemple suivant annuler une instruction SQL dans une session.

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

Pour obtenir l'identifiant et le numéro de série de la session ainsi que l'identifiant SQL d'une instruction SQL, interrogez la vue V$SESSION. L'exemple suivant obtient toutes les sessions et les identifiants SQL pour l'utilisateur AWSUSER.

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

Activation et désactivation de sessions restreintes

Pour activer et désactiver des sessions restreintes, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.restricted_session. La procédure restricted_session possède les paramètres suivants.

Nom du paramètre Type de données Par défaut Oui Description

p_enable

booléen

true

Non

Définissez ce paramètre sur true pour activer les sessions restreintes ou sur false pour les désactiver.

L'exemple suivant montre comment activer et désactiver les sessions restreintes.

/* 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

Vidage du pool partagé

Pour vider le pool partagé, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.flush_shared_pool. La procédure flush_shared_pool ne comporte aucun paramètre.

L'exemple suivant vide le pool partagé.

EXEC rdsadmin.rdsadmin_util.flush_shared_pool;

Vidage du cache de tampon

Pour vider le cache de tampon, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.flush_buffer_cache. La procédure flush_buffer_cache ne comporte aucun paramètre.

L'exemple suivant vide le cache des tampons.

EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;

Vider le cache Smart Flash de la base de données

Pour vider le cache Smart Flash de la base de données, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.flush_flash_cache. La procédure flush_flash_cache ne comporte aucun paramètre. L'exemple suivant vide le cache Smart Flash de la base de données.

EXEC rdsadmin.rdsadmin_util.flush_flash_cache;

Pour plus d'informations sur l'utilisation du cache Smart Flash de la base de données avec RDS for Oracle, consultez Stockage de données temporaires dans un stockage d'instances RDS for Oracle.

Octroi des privilèges SELECT ou EXECUTE aux objets SYS

Généralement, vous transférez les privilèges en utilisant des rôles, qui peuvent contenir de nombreux objets. Pour accorder des privilèges à un objet unique, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.grant_sys_object. La procédure accorde uniquement les privilèges qui ont déjà été accordés à l'utilisateur principal par le biais d'un rôle ou d'une attribution directe.

La procédure grant_sys_object possède les paramètres suivants.

Important

Pour toutes les valeurs de paramètre, utilisez les majuscules sauf si vous avez créé l'utilisateur avec un identifiant sensible à la casse. Par exemple, si vous exécutez CREATE USER myuser ou CREATE USER MYUSER, le dictionnaire de données stocke MYUSER. Toutefois, si vous utilisez des guillemets doubles dans CREATE USER "MyUser", le dictionnaire de données stocke MyUser.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_obj_name

varchar2

Oui

Nom de l'objet pour lequel des privilèges seront accordés. L'objet peut être un répertoire, une fonction, un package, une procédure, une séquence, une table ou une vue. Les noms d'objet doivent être orthographiés correctement lorsqu'ils apparaissent dans DBA_OBJECTS. La plupart des objets système sont définis en majuscules, si bien que nous vous recommandons d'essayer cela en premier lieu.

p_grantee

varchar2

Oui

Nom de l'objet auquel des privilèges seront accordés. L'objet peut être un schéma ou un rôle.

p_privilege

varchar2

null

Oui

p_grant_option

booléen

false

Non

Définissez ce paramètre sur true pour l'utiliser avec l'option d'attribution. Le paramètre p_grant_option est pris en charge pour la version 12.1.0.2.v4 et les versions ultérieures, toutes les versions 12.2.0.1 et toutes les versions 19.0.0.

L'exemple suivant accorde des privilèges select sur un objet nommé V_$SESSION à un utilisateur nommé USER1.

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

L'exemple suivant accorde des privilèges select sur un objet nommé V_$SESSION à un utilisateur nommé USER1 avec l'option d'attribution.

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

Pour pouvoir attribuer des privilèges sur un objet, votre compte doit avoir ces privilèges directement attribués avec l'option appropriée ou via un rôle accordé avec with admin option. Le plus souvent, vous voudrez attribuer SELECT sur une vue DBA qui a été attribuée au rôle SELECT_CATALOG_ROLE. Si ce rôle n'est pas déjà directement attribué à votre utilisateur avec with admin option, vous ne pouvez pas transférer le privilège. Si vous disposez du privilège DBA, vous pouvez accorder le rôle directement à un autre utilisateur.

L'exemple suivant accorde les rôles SELECT_CATALOG_ROLE et EXECUTE_CATALOG_ROLE à USER1. Étant donné que with admin option est utilisé, USER1 peut désormais accorder l'accès aux objets SYS qui ont été attribués à SELECT_CATALOG_ROLE.

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

Les objets déjà attribués à PUBLIC n'ont pas besoin d'être réattribués. Si vous utilisez la procédure grant_sys_object pour accorder de nouveau l'accès, l'appel de procédure réussit.

Retrait des privilèges SELECT ou EXECUTE sur les objets SYS

Pour retirer des privilèges sur un objet unique, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.revoke_sys_object. La procédure révoque uniquement les privilèges qui ont déjà été accordés au compte principal par le biais d'un rôle ou d'une attribution directe.

La procédure revoke_sys_object possède les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_obj_name

varchar2

Oui

Nom de l'objet pour lequel des privilèges seront révoqués. L'objet peut être un répertoire, une fonction, un package, une procédure, une séquence, une table ou une vue. Les noms d'objet doivent être orthographiés correctement lorsqu'ils apparaissent dans DBA_OBJECTS. La plupart des objets système sont définis en majuscules, c'est pourquoi nous vous recommandons d'essayer cette méthode en premier lieu.

p_revokee

varchar2

Oui

Nom de l'objet pour lequel des privilèges seront révoqués. L'objet peut être un schéma ou un rôle.

p_privilege

varchar2

null

Oui

L'exemple suivant révoque des privilèges select sur un objet nommé V_$SESSION à un utilisateur nommé USER1.

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

Gestion des vues RDS_X$ pour les instances de base de données Oracle

Vous devrez peut-être accéder à des tables SYS.X$ fixes, qui ne sont accessibles que parSYS. Pour créer des SYS.RDS_X$ vues sur X$ les tables éligibles, utilisez les procédures du rdsadmin.rdsadmin_util package. Votre utilisateur principal se voit automatiquement octroyer le privilège SELECT … WITH GRANT OPTION d'accès aux RDS_X$ vues.

Les rdsadmin.rdsadmin_util procédures sont disponibles dans les versions de moteur de base de données suivantes :

  • 21.0.0.0.ru-2023-10.rur-2023-10.r1et versions ultérieures d'Oracle Database 21c

  • 19.0.0.0.ru-2023-10.rur-2023-10.r1et versions ultérieures d'Oracle Database 19c

Important

En interne, le rdsadmin.rdsadmin_util package crée des vues sur X$ les tables. Les X$ tables sont des objets système internes qui ne sont pas décrits dans la documentation de la base de données Oracle. Nous vous recommandons de tester des vues spécifiques dans votre base de données hors production et de ne créer des vues dans votre base de données de production que sous la supervision d'Oracle Support.

Liste des tables fixes X$ pouvant être utilisées dans les vues RDS_X$

Pour répertorier les tables X$ pouvant être utilisées dans les RDS_X$ vues, utilisez la procédure RDS. rdsadmin.rdsadmin_util.list_allowed_sys_x$_views Cette procédure n'accepte aucun paramètre. Les déclarations suivantes répertorient tous les X$ tableaux éligibles (échantillon de sortie inclus).

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 liste des X$ tables éligibles peut changer au fil du temps. Pour vous assurer que votre liste de tables X$ fixes éligibles est à jour, réexécutez-la list_allowed_sys_x$_views régulièrement.

Création de vues SYS.RDS_X$

Pour créer une RDS_X$ vue sur une X$ table éligible, utilisez la procédure rdsadmin.rdsadmin_util.create_sys_x$_view RDS. Vous ne pouvez créer des vues que pour les tables répertoriées dans la sortie derdsadmin.rdsadmin_util.list_allowed_sys_x$_views. La procédure create_sys_x$_view accepte les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_x$_tbl

varchar2

Null

Oui

Nom de X$ table valide. La valeur doit être l'une des X$ tables rapportées parlist_allowed_sys_x$_views.

p_force_creation

Booléen

FALSE

Non

Une valeur indiquant s'il faut forcer la création d'une RDS_X$ vue qui existe déjà pour une X$ table. Par défaut, RDS ne crée pas de vue si elle existe déjà. Pour forcer la création, définissez ce paramètre surTRUE.

L'exemple suivant crée la SYS.RDS_X$KGLOB vue sur la tableX$KGLOB. Le format du nom de la vue estRDS_X$tablename.

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

La requête de dictionnaire de données suivante répertorie la vue SYS.RDS_X$KGLOB et indique son état. Votre utilisateur principal est automatiquement autorisé à accéder SELECT ... WITH GRANT OPTION à cette vue.

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
Important

X$il n'est pas garanti que les tables resteront les mêmes avant et après un surclassement. RDS for Oracle supprime et recrée les RDS_X$ vues sur les X$ tables lors d'une mise à niveau du moteur. Il accorde ensuite le SELECT ... WITH GRANT OPTION privilège à l'utilisateur principal. Après une mise à niveau, accordez des privilèges aux utilisateurs de la base de données selon les besoins sur les RDS_X$ vues correspondantes.

Répertorier les vues SYS.RDS_X$

Pour répertorier les RDS_X$ vues existantes, utilisez la procédure rdsadmin.rdsadmin_util.list_created_sys_x$_views RDS. La procédure répertorie uniquement les vues créées par la procédurecreate_sys_x$_view. L'exemple suivant répertorie les X$ tables associées aux RDS_X$ vues correspondantes (exemple de sortie inclus).

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.

Supprimer les vues RDS_X$

Pour supprimer une SYS.RDS_X$ vue, utilisez la procédure rdsadmin.rdsadmin_util.drop_sys_x$_view RDS. Vous ne pouvez supprimer que les vues répertoriées dans la sortie derdsadmin.rdsadmin_util.list_allowed_sys_x$_views. La procédure drop_sys_x$_view accepte les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_x$_tbl

varchar2

Null

Oui

Nom de table X$ fixe valide. La valeur doit être l'une des tables X$ fixes rapportées parlist_created_sys_x$_views.

L'exemple suivant supprime la RDS_X$KGLOB vue créée sur le tableauX$KGLOB.

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

L'exemple suivant montre que la vue SYS.RDS_X$KGLOB a été supprimée (exemple de sortie inclus).

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

Attribution de privilèges à des utilisateurs non-maîtres

Vous pouvez accorder des privilèges select pour de nombreux objets dans le schéma SYS grâce au rôle SELECT_CATALOG_ROLE. Le rôle SELECT_CATALOG_ROLE accorde aux utilisateurs des privilèges SELECT sur les vues du dictionnaire de données. L'exemple suivant accorde le rôle SELECT_CATALOG_ROLE à un utilisateur nommé user1.

GRANT SELECT_CATALOG_ROLE TO user1;

Vous pouvez accorder des privilèges EXECUTE pour de nombreux objets dans le schéma SYS grâce au rôle EXECUTE_CATALOG_ROLE. Le rôle EXECUTE_CATALOG_ROLE accorde aux utilisateurs des privilèges EXECUTE pour les packages et les procédures du dictionnaire de données. L'exemple suivant accorde le rôle EXECUTE_CATALOG_ROLE à un utilisateur nommé user1.

GRANT EXECUTE_CATALOG_ROLE TO user1;

L'exemple suivant obtient les autorisations permises par les rôles SELECT_CATALOG_ROLE et EXECUTE_CATALOG_ROLE.

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

L'exemple suivant crée un utilisateur non maître nommé user1, accorde le privilège CREATE SESSION, puis accorde le privilège SELECT sur une base de données nommée sh.sales.

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

Création de fonctions personnalisées pour vérifier les mots de passe

Vous pouvez créer une fonction de vérification de mot de passe personnalisée des manières suivantes :

  • Pour utiliser la logique de vérification standard et stocker votre fonction dans le schéma SYS, utilisez la procédure create_verify_function.

  • Pour utiliser la logique de vérification personnalisée, ou pour éviter de stocker votre fonction dans le schéma SYS, utilisez la procédure create_passthrough_verify_fcn.

Procédure create_verify_function

Vous pouvez créer une fonction personnalisée pour vérifier les mots de passe en utilisant la procédure Amazon RDS rdsadmin.rdsadmin_password_verify.create_verify_function. La procédure create_verify_function est prise en charge pour la version 12.1.0.2.v5 et toutes les versions majeures et mineures ultérieures de RDS for Oracle.

La procédure create_verify_function possède les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_verify_function_name

varchar2

Oui

Nom de la fonction personnalisée. Cette fonction est automatiquement créée dans le schéma SYS. Elle est affectée à des profils utilisateur.

p_min_length

nombre

8

Non

Nombre minimal de caractères requis.

p_max_length

nombre

256

Non

Nombre maximal de caractères autorisés.

p_min_letters

nombre

1

Non

Nombre minimal de lettres requises.

p_min_uppercase

nombre

0

Non

Nombre minimal de lettres majuscules requises.

p_min_lowercase

nombre

0

Non

Nombre minimal de lettres minuscules requises.

p_min_digits

nombre

1

Non

Nombre minimal de chiffres requis.

p_min_special

nombre

0

Non

Nombre minimal de caractères spéciaux requis.

p_min_different_chars

nombre

3

Non

Nombre minimal de caractères différents requis entre l'ancien et le nouveau mot de passe.

p_disallow_username

booléen

true

Non

Définissez ce paramètre sur true pour interdire le nom d'utilisateur dans le mot de passe.

p_disallow_reverse

booléen

true

Non

Définissez ce paramètre sur true pour interdire le nom d'utilisateur inversé dans le mot de passe.

p_disallow_db_name

booléen

true

Non

Définissez ce paramètre sur true pour interdire le nom de la base de données ou du serveur dans le mot de passe.

p_disallow_simple_strings

booléen

true

Non

Définissez ce paramètre sur true pour interdire l'utilisation de chaînes simples comme mot de passe.

p_disallow_whitespace

booléen

false

Non

Définissez ce paramètre sur true pour interdire les espaces dans le mot de passe.

p_disallow_at_sign

booléen

false

Non

Définissez ce paramètre sur true pour interdire le caractère @ dans le mot de passe.

Vous pouvez créer plusieurs fonctions de vérification de mot de passe.

Il existe des restrictions sur le nom de votre fonction personnalisée. Votre fonction personnalisée ne peut pas avoir le même nom qu'un objet système existant. Ce nom ne peut pas comporter plus de 30 caractères. De plus, le nom doit inclure l'une des chaînes suivantes : PASSWORD, VERIFY, COMPLEXITY, ENFORCE ou STRENGTH.

L'exemple suivant crée une fonction nommée CUSTOM_PASSWORD_FUNCTION. La fonction exige qu'un mot de passe comporte au moins 12 caractères, 2 majuscules, 1 chiffre et 1 caractère spécial, et interdit le caractère @.

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; /

Pour voir le texte de votre fonction de vérification, interrogez DBA_SOURCE. L'exemple suivant récupère le texte d'une fonction de mot de passe personnalisé nommée CUSTOM_PASSWORD_FUNCTION.

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

Pour associer votre fonction de vérification à un profil utilisateur, utilisez alter profile. L'exemple suivant associe une fonction de vérification au profil utilisateur DEFAULT.

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

Pour savoir quels profils utilisateur sont associés à quelles fonctions de vérification, interrogez DBA_PROFILES. L'exemple suivant obtient les profils qui sont associés à la fonction de vérification personnalisée nommée 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

L'exemple suivant récupère tous les profils et les fonctions de vérification de mot de passe associées.

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

Procédure create_passthrough_verify_fcn

La procédure create_passthrough_verify_fcn est prise en charge pour la version 12.1.0.2.v7 et toutes les versions majeures et mineures ultérieures de RDS for Oracle.

Vous pouvez créer une fonction personnalisée pour vérifier les mots de passe en utilisant la procédure Amazon RDS rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn. La procédure create_passthrough_verify_fcn possède les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_verify_function_name

varchar2

Oui

Nom de la fonction de vérification personnalisée. Il s'agit d'une fonction de wrapper qui est automatiquement créée dans le schéma SYS et qui ne contient pas de logique de vérification. Elle est affectée à des profils utilisateur.

p_target_owner

varchar2

Oui

Propriétaire de schéma de la fonction de vérification personnalisée.

p_target_function_name

varchar2

Oui

Nom de la fonction personnalisée existante qui contient la logique de vérification. Votre fonction personnalisée doit renvoyer une valeur booléenne. La fonction doit renvoyer la valeur true si le mot de passe est valide, ou false s'il ne l'est pas.

L'exemple suivant crée une fonction de vérification de mot de passe qui utilise la logique provenant de la fonction nommée 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; /

Pour associer la fonction de vérification à un profil utilisateur, utilisez alter profile. L'exemple suivant associe la fonction de vérification au profil utilisateur DEFAULT.

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

Configuration d'un serveur DNS personnalisé

Amazon RDS prend en charge l'accès réseau sortant sur vos instances de bases de données exécutant Oracle. Pour plus d'informations sur l'utilisation de l'accès réseau sortant et les prérequis, consultez Configuration de l'accès UTL_HTTP à l'aide de certificats et d'un portefeuille Oracle.

Amazon RDS Oracle permet la résolution DNS (Domain Name Service) à partir d'un serveur DNS personnalisé appartenant au client. Vous pouvez résoudre uniquement les deux noms de domaine complets à partir de votre instance de base de données Amazon RDS via votre serveur DNS personnalisé.

Une fois que votre serveur de nom DNS personnalisé est configuré, la propagation des modifications dans votre instance de base de données peut prendre jusqu'à 30 minutes. Une fois que les modifications sont propagées dans votre instance de base de données, l'ensemble du trafic réseau sortant nécessitant une recherche DNS interroge votre serveur DNS via le port 53.

Pour configurer un serveur DNS personnalisé pour votre instance de base de données Amazon RDS for Oracle, procédez comme suit :

  • À partir du jeu d'options DHCP liées à votre VPC (cloud privé virtuel), définissez l'option domain-name-servers sur l'adresse IP de votre serveur de noms DNS. Pour plus d'informations, veuillez consulter Jeux d'options DHCP.

    Note

    L'option domain-name-servers autorise jusqu'à quatre valeurs, mais votre instance de base de données Amazon RDS utilise uniquement la première valeur.

  • Assurez-vous que votre serveur DNS peut résoudre toutes les requêtes de recherche, notamment les noms DNS publics, les noms DNS privés Amazon EC2 et les noms DNS spécifiés par le client. Si le trafic réseau sortant contient une recherche DNS que votre serveur DNS ne peut pas gérer, votre serveur DNS doit avoir des fournisseurs DNS en amont appropriés, configurés.

  • Configurez votre serveur DNS pour produire des réponses UDP (User Datagram Protocol) de 512 octets ou moins.

  • Configurez votre serveur DNS pour produire des réponses TCP (Transmission Control Protocol) de 1024 octets ou moins.

  • Configurez votre serveur DNS pour permettre le trafic entrant à partir de vos instances de bases de données Amazon RDS sur le port 53. Si votre serveur DNS est dans un Amazon VPC, le VPC doit avoir un groupe de sécurité qui contient des règles entrantes permettant le trafic UDP et TCP sur le port 53. Si votre serveur DNS n'est pas dans un Amazon VPC, il doit avoir une liste blanche des pare-feux appropriés pour permettre le trafic UDP et TCP sur le port 53.

    Pour plus d'informations, veuillez consulter Groupes de sécurité pour votre VPC et Ajout et suppression de règles.

  • Configurez le VPC de votre instance de base de données Amazon RDS for permettre le trafic sortant via le port 53. Votre serveur VPC doit avoir un groupe de sécurité qui contient des règles sortantes permettant le trafic UDP et TCP sur le port 53.

    Pour plus d'informations, veuillez consulter Groupes de sécurité pour votre VPC et Ajout et suppression de règles.

  • Le chemin d'acheminement entre l'instance de base de données Amazon RDS et le serveur DNS doit être configuré correctement pour permettre un trafic DNS.

    • Si l'instance de base de données Amazon RDS et le serveur DNS ne sont pas dans le même VPC, une connexion d'appairage doit être configurée entre les deux. Pour plus d'informations, veuillez consulter Qu'est-ce que l'appairage de VPC ?

Activation et désactivation des événements de diagnostic système

Pour activer et désactiver les événements de diagnostic au niveau session, vous pouvez utiliser l'instruction Oracle SQL ALTER SESSION SET EVENTS. En revanche, pour activer les événements au niveau système, vous ne pouvez pas utiliser Oracle SQL. Pour cela, utilisez les procédures d'événements système du package rdsadmin.rdsadmin_util. Les procédures d'événements système sont disponibles dans les versions suivantes du moteur :

  • Toutes les versions de Oracle Database 21c

  • 19.0.0.0.ru-2020-10.rur-2020-10.r1 et versions ultérieures de Oracle Database 19c

    Pour plus d'informations, consultez Version 19.0.0.0.ru-2020-10.rur-2020-10.r1 dans Amazon RDS for Oracle Release Notes (Notes de mise à jour de Amazon RDS for Oracle).

  • 12.2.0.1.ru-2020-10.rur-2020-10.r1 et versions ultérieures de Oracle Database 12c version 2 (12.2.0.1)

    Pour plus d'informations, consultez Version 12.2.0.1.ru-2020-10.rur-2020-10.r1 dans Amazon RDS for Oracle Release Notes (Notes de mise à jour de Amazon RDS for Oracle).

  • 12.1.0.2.V22 et versions ultérieures de Oracle Database 12c version 1 (12.1.0.2)

    Pour plus d'informations, consultez Version 12.1.0.2.v22 dans Amazon RDS for Oracle Release Notes (Notes de mise à jour de Amazon RDS for Oracle).

para

Important

En interne, le package rdsadmin.rdsadmin_util active les événements à l'aide de l'instruction ALTER SYSTEM SET EVENTS. Cette instruction ALTER SYSTEM ne figure pas dans la documentation Oracle Database. Certains événements de diagnostic système peuvent générer de grandes quantités d'informations de suivi, provoquer des conflits ou affecter la disponibilité de la base de données. Nous vous recommandons de tester des événements de diagnostic spécifiques dans votre base de données hors production, et de n'activer des événements dans votre base de données de production que sous la direction du support Oracle.

Liste des événements de diagnostic système autorisés

Pour dresser la liste des événements système que vous pouvez activer, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.list_allowed_system_events. Cette procédure n'accepte aucun paramètre.

L'exemple suivant répertorie tous les événements système que vous pouvez activer.

SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;

L'exemple de sortie suivant répertorie les numéros des événements et leur description. Utilisez les procédures Amazon RDS set_system_event pour activer ces événements et unset_system_event pour les désactiver.

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:
Note

La liste des événements système autorisés peut changer au fil du temps. Pour vous assurer que vous disposez de la liste la plus récente des événements éligibles, utilisez rdsadmin.rdsadmin_util.list_allowed_system_events.

Activation des événements de diagnostic système

Pour activer un événement système, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.set_system_event. Vous ne pouvez activer que les événements répertoriés dans la sortie de rdsadmin.rdsadmin_util.list_allowed_system_events. La procédure set_system_event accepte les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_event

nombre

Oui

Numéro de l'événement système. La valeur doit correspondre à l'un des numéros d'événement signalés par list_allowed_system_events.

p_level

nombre

Oui

Niveau de l'événement. Pour obtenir les descriptions des différentes valeurs de niveau, consultez la documentation Oracle Database ou contactez le support Oracle.

La procédure set_system_event permet de créer et d'exécuter les instructions ALTER SYSTEM SET EVENTS requises selon les principes suivants :

  • Le type d'événement (context ou errorstack) est déterminé automatiquement.

  • Une instruction du formulaire ALTER SYSTEM SET EVENTS 'event LEVEL event_level' active les événements de contexte. Cette notation équivaut à ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'.

  • Une instruction du formulaire ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)' active les événements de pile d'erreurs. Cette notation équivaut à ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_level'.

L'exemple suivant active l'événement 942 au niveau 3, et l'événement 10442 au niveau 10. Un exemple de sortie est inclus.

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.

Liste des événements de diagnostic système activés

Pour dresser la liste des événements système activés, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.list_set_system_events. Cette procédure signale uniquement les événements activés au niveau système par set_system_event.

L'exemple suivant répertorie les événements système actifs.

SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_set_system_events;

L'exemple de sortie suivant contient la liste des événements, le type d'événement, le niveau auquel les événements sont activés et l'heure à laquelle ils ont été activés.

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.

Désactivation des événements de diagnostic système

Pour désactiver un événement système, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.unset_system_event. Vous ne pouvez désactiver que les événements répertoriés dans la sortie de rdsadmin.rdsadmin_util.list_allowed_system_events. La procédure unset_system_event accepte les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_event

nombre

Oui

Numéro de l'événement système. La valeur doit correspondre à l'un des numéros d'événement signalés par list_allowed_system_events.

L'exemple suivant désactive les événements 942 et 10442. Un exemple de sortie est inclus.

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.