Amazon Relational Database Service
Guide de l'utilisateur

Tâches système DBA courantes pour les instances de bases de données Oracle

Cette section décrit comment vous pouvez exécuter les tâches DBA courantes associées au système sur vos instances de bases 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 comporte 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.

Arrêt d'une session

Pour arrêter une session, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.kill. La procédure kill comporte 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'.

L'exemple suivant arrête une session.

begin rdsadmin.rdsadmin_util.kill( 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';

Vous pouvez spécifier IMMEDIATE ou PROCESS comme valeur pour le paramètre method. En spécifiant PROCESS comme valeur de method, vous pouvez arrêter les processus associés à une session. Ne procédez ainsi que si la session n'a pas été arrêtée en utilisant IMMEDIATE comme valeur de method.

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 version 18.0.0.0 et ultérieures.

La procédure cancel comporte 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 comporte 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;

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. Cette procédure accorde uniquement des privilèges que le compte principal possède déjà via un rôle ou une attribution directe.

La procédure grant_sys_object comporte 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 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 les versions Oracle 11.2.0.4.v8 et ultérieures, 12.1.0.2.v4 et ultérieures, toutes les versions 12.2.0.1 et toutes les versions 18.0.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. Cette procédure ne retire que les privilèges que le compte maître possède déjà en utilisant un rôle ou une attribution directe.

La procédure revoke_sys_object comporte 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; /

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 de deux façons. Si vous voulez utiliser la logique de vérification standard et stocker votre fonction dans le schéma SYS, utilisez la procédure create_verify_function. Si vous voulez utiliser une logique de vérification personnalisée ou ne souhaitez pas stocker votre fonction dans le schéma SYS, utilisez la procédure create_passthrough_verify_fcn.

Procédure create_verify_function

La procédure create_verify_function est prise en charge pour Oracle version 11.2.0.4.v9 et ultérieures, Oracle version 12.1.0.2.v5 et ultérieures, toutes les versions 12.2.0.1 et toutes les versions 18.0.0.0.

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 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 Oracle version 11.2.0.4.v11 et ultérieures, Oracle version 12.1.0.2.v7 et ultérieures, toutes les versions 12.2.0.1 et toutes les versions 18.0.0.0.

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 Utilisation de utl_http, utl_tcp et utl_smtp avec une instance de base de données 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 Oracle, procédez comme suit :

  • A partir du jeu d'options DHCP liées à votre VPC, définissez l'option domain-name-servers sur l'adresse IP de votre serveur de noms DNS. Pour plus d'informations, consultez 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 qui permettent 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, consultez 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 pour 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, consultez 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 de plus amples informations, veuillez consulter Qu'est-ce que l'appairage de VPC ?