Tâches système DBA 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.
Rubriques
- Déconnexion d'une session
- Terminer une session
- Annulation d'une instruction SQL dans une session
- Activation et désactivation de sessions restreintes
- Vidage du pool partagé
- Vidage du cache de tampon
- Octroi des privilèges SELECT ou EXECUTE aux objets SYS
- Retrait des privilèges SELECT ou EXECUTE sur les objets SYS
- Attribution de privilèges à des utilisateurs non-maîtres
- Création de fonctions personnalisées pour vérifier les mots de passe
- Configuration d'un serveur DNS personnalisé
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 |
---|---|---|---|---|
|
nombre |
— |
Oui |
Identifiant de session. |
|
nombre |
— |
Oui |
Numéro de série de la session. |
|
varchar |
'IMMEDIATE' |
Non |
Les valeurs valides sont |
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)
Terminer 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 |
---|---|---|---|---|
|
nombre |
— |
Oui |
Identifiant de session. |
|
nombre |
— |
Oui |
Numéro de série de la session. |
|
varchar |
null |
Non |
Les valeurs valides sont |
L'exemple suivant met fin à 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
.
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 |
---|---|---|---|---|
|
nombre |
— |
Oui |
Identifiant de session. |
|
nombre |
— |
Oui |
Numéro de série de la session. |
|
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 |
---|---|---|---|---|
|
booléen |
true |
Non |
Définissez ce paramètre sur |
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
. 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
comporte les paramètres suivants.
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 |
---|---|---|---|---|
|
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 |
|
varchar2 |
— |
Oui |
Nom de l'objet auquel des privilèges seront accordés. L'objet peut être un schéma ou un rôle. |
|
varchar2 |
null |
Oui |
— |
|
booléen |
false |
Non |
Définissez ce paramètre sur |
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 toUSER1
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
comporte les paramètres suivants.
Nom du paramètre | Type de données | Par défaut | Obligatoire | Description |
---|---|---|---|---|
|
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 |
|
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. |
|
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 TOuser1
; GRANT SELECT ONsh.sales
TOuser1
;
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, toutes les versions 18.0.0.0 et toutes
les versions 19.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 |
---|---|---|---|---|
|
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. |
|
nombre |
8 |
Non |
Nombre minimal de caractères requis. |
|
nombre |
256 |
Non |
Nombre maximal de caractères autorisés. |
|
nombre |
1 |
Non |
Nombre minimal de lettres requises. |
|
nombre |
0 |
Non |
Nombre minimal de lettres majuscules requises. |
|
nombre |
0 |
Non |
Nombre minimal de lettres minuscules requises. |
|
nombre |
1 |
Non |
Nombre minimal de chiffres requis. |
|
nombre |
0 |
Non |
Nombre minimal de caractères spéciaux requis. |
|
nombre |
3 |
Non |
Nombre minimal de caractères différents requis entre l'ancien et le nouveau mot de passe. |
|
booléen |
true |
Non |
Définissez ce paramètre sur |
|
booléen |
true |
Non |
Définissez ce paramètre sur |
|
booléen |
true |
Non |
Définissez ce paramètre sur |
|
booléen |
true |
Non |
Définissez ce paramètre sur |
|
booléen |
false |
Non |
Définissez ce paramètre sur |
|
booléen |
false |
Non |
Définissez ce paramètre sur |
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_FUNCTIONCUSTOM_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, toutes les versions 18.0.0.0 et toutes
les versions 19.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 |
---|---|---|---|---|
|
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. |
|
varchar2 |
— |
Oui |
Propriétaire de schéma de la fonction de vérification personnalisée. |
|
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 |
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_FUNCTIONCUSTOM_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 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 de plus amples 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 de plus amples 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 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 de plus amples 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 de plus amples informations, veuillez consulter Qu'est-ce que l'appairage de VPC ?
-