Exécution des tâches diverses pour les instances de base 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 diverses pour les instances de base de données Oracle

Vous trouverez ci-dessous des informations sur la façon d'effectuer diverses tâches DBA 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.

Création et suppression de répertoires dans l'espace de stockage de données principal

Pour créer des répertoires, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.create_directory. Vous pouvez créer jusqu'à 10 000 répertoires, tous situés dans votre espace principal de stockage des données. Pour supprimer des répertoires, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.drop_directory.

Les procédures create_directory et drop_directory ont le paramètre requis suivant.

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

p_directory_name

VARCHAR2

Oui

Nom du répertoire.

L'exemple suivant crée un répertoire nommé PRODUCT_DESCRIPTIONS.

EXEC rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'product_descriptions');

Le dictionnaire de données stocke le nom du répertoire en majuscules. Vous pouvez lister les répertoires en interrogeant DBA_DIRECTORIES. Le système choisit le nom du chemin réel de l'hôte automatiquement. L'exemple suivant récupère le chemin du répertoire nommé PRODUCT_DESCRIPTIONS:

SELECT DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME='PRODUCT_DESCRIPTIONS'; DIRECTORY_PATH ---------------------------------------- /rdsdbdata/userdirs/01

Le nom d'utilisateur maître de l'instance de base de données possède des privilèges de lecture et d'écriture dans le nouveau répertoire et peut accorder l'accès à d'autres utilisateurs. Les privilèges EXECUTE ne sont pas disponibles pour les répertoires sur une instance de base de données. Les répertoires sont créés dans votre espace principal de stockage des données et consomment de l'espace, ainsi que de la bande passante d'I/O.

L'exemple suivant supprime le répertoire nommé PRODUCT_DESCRIPTIONS.

EXEC rdsadmin.rdsadmin_util.drop_directory(p_directory_name => 'product_descriptions');
Note

Vous pouvez également supprimer un répertoire à l'aide de la commande SQL Oracle DROP DIRECTORY.

La suppression d'un répertoire ne supprime pas son contenu. Étant donné que la procédure rdsadmin.rdsadmin_util.create_directory peut réutiliser les noms de chemin, les fichiers figurant dans les répertoires supprimés peuvent apparaître dans un répertoire nouvellement créé. Avant de supprimer un répertoire, nous vous recommandons d'utiliser UTL_FILE.FREMOVE pour supprimer les fichiers du répertoire. Pour de plus amples informations, veuillez consulter FREMOVE Procedure dans la documentation Oracle.

Établissement de la liste des fichiers situés dans un répertoire d'instance de base de données

Pour lister les fichiers contenus dans un répertoire, utilisez la procédure Amazon RDS rdsadmin.rds_file_util.listdir. Cette procédure n'est pas prise en charge sur un réplica Oracle. La procédure listdir possède les paramètres suivants.

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

p_directory

varchar2

Oui

Nom du répertoire à lister.

L'exemple suivant accorde des privilèges de lecture/écriture sur le répertoire PRODUCT_DESCRIPTIONS à l'utilisateur rdsadmin, puis répertorie les fichiers dans ce répertoire.

GRANT READ,WRITE ON DIRECTORY PRODUCT_DESCRIPTIONS TO rdsadmin; SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'PRODUCT_DESCRIPTIONS'));

Lecture de fichiers dans un répertoire d'instance de base de données

Pour lire un fichier texte, utilisez la procédure Amazon RDS rdsadmin.rds_file_util.read_text_file. La procédure read_text_file possède les paramètres suivants.

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

p_directory

varchar2

Oui

Nom du répertoire qui contient le fichier.

p_filename

varchar2

Oui

Nom du fichier à lire.

L'exemple suivant lit le fichier rice.txt dans le répertoire PRODUCT_DESCRIPTIONS.

declare fh sys.utl_file.file_type; begin fh := utl_file.fopen(location=>'PRODUCT_DESCRIPTIONS', filename=>'rice.txt', open_mode=>'w'); utl_file.put(file=>fh, buffer=>'AnyCompany brown rice, 15 lbs'); utl_file.fclose(file=>fh); end; /

L'exemple suivant lit le fichier rice.txt figurant dans le répertoire PRODUCT_DESCRIPTIONS.

SELECT * FROM TABLE (rdsadmin.rds_file_util.read_text_file( p_directory => 'PRODUCT_DESCRIPTIONS', p_filename => 'rice.txt'));

Accès aux fichiers Opatch

Opatch est un utilitaire Oracle qui permet l'application et la restauration de correctifs sur le logiciel Oracle. Le mécanisme Oracle qui permet de déterminer les correctifs ayant été appliqués à une base de données est la commande opatch lsinventory. Pour ouvrir des demandes de service pour les clients Bring Your Own Licence (BYOL), le support Oracle demande le fichier lsinventory et parfois le fichier lsinventory_detail généré par Opatch.

Pour offrir une expérience de service géré, Amazon RDS ne fournit pas l'accès shell à Opatch. En lieu et place, le lsinventory-dbv.txt dans le répertoire BDUMP contient les informations de correctif relatives à la version actuelle de votre moteur. Lorsque vous effectuez une mise à niveau mineure ou majeure, Amazon RDS met à jour lsinventory-dbv.txt dans l'heure suivant l'application du correctif. Pour vérifier les correctifs appliqués, consultez lsinventory-dbv.txt. Cette action revient à exécuter la commande opatch lsinventory.

Note

Les exemples de cette section supposent que le répertoire BDUMP est nommé BDUMP. Sur un réplica en lecture, le nom du répertoire BDUMP est différent. Pour savoir comment obtenir le nom BDUMP en interrogeant V$DATABASE.DB_UNIQUE_NAME sur un réplica en lecture, veuillez consulter Liste de fichiers.

Les fichiers d'inventaire utilisent la convention de dénomination Amazon RDS lsinventory-dbv.txt et lsinventory_detail-dbv.txt, où dbv est le nom complet de votre version de base de données. Le fichier lsinventory-dbv.txt est disponible sur toutes les versions de base de données. Le correspondant lsinventory_detail-dbv.txt est disponible sur 19.0.0.0, ru-2020-01.rur-2020-01.r1 ou version ultérieure.

Par exemple, si votre version de base de données est 19.0.0.0.ru-2021-07.rur-2021-07.r1, vos fichiers d'inventaire portent les noms suivants.

lsinventory-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt lsinventory_detail-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt

Assurez-vous de télécharger les fichiers qui correspondent à la version actuelle de votre moteur de base de données.

Pour télécharger un fichier d'inventaire à l'aide de la console
  1. Ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans la panneau de navigation, choisissez Databases (Bases de données).

  3. Choisissez le nom de l'instance de base de données qui contient le fichier journal que vous voulez consulter.

  4. Choisissez l'onglet Logs & events (Journaux et événements).

  5. Faites défiler jusqu'à la section Journaux.

  6. Dans la section Logs (Journaux) recherchez lsinventory.

  7. Sélectionnez le fichier auquel vous souhaitez accéder, puis choisissez Download (Télécharger).

Pour lire le fichier lsinventory-dbv.txt dans un client SQL, vous pouvez utiliser une instruction SELECT. Pour cette technique, utilisez l'une des fonctions rdsadmin suivantes : rdsadmin.rds_file_util.read_text_file ou rdsadmin.tracefile_listing.

Dans l'exemple de requête suivant, remplacez dbv par votre version de base de données Oracle. Par exemple, la version de votre base de données peut être 19.0.0.0.ru-2020-04.rur-2020-04.r1.

SELECT text FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'lsinventory-dbv.txt'));

Pour lire le fichier lsinventory-dbv.txt dans un client SQL, vous pouvez écrire un programme PL/SQL. Ce programme utilise utl_file pour lire le fichier et dbms_output pour l'imprimer. Ce sont des packages fournis par Oracle.

Dans l'exemple de programme suivant, remplacez dbv par la version de votre base de données Oracle. Par exemple, la version de votre base de données peut être 19.0.0.0.ru-2020-04.rur-2020-04.r1.

SET SERVEROUTPUT ON DECLARE v_file SYS.UTL_FILE.FILE_TYPE; v_line VARCHAR2(1000); v_oracle_home_type VARCHAR2(1000); c_directory VARCHAR2(30) := 'BDUMP'; c_output_file VARCHAR2(30) := 'lsinventory-dbv.txt'; BEGIN v_file := SYS.UTL_FILE.FOPEN(c_directory, c_output_file, 'r'); LOOP BEGIN SYS.UTL_FILE.GET_LINE(v_file, v_line,1000); DBMS_OUTPUT.PUT_LINE(v_line); EXCEPTION WHEN no_data_found THEN EXIT; END; END LOOP; END; /

Ou interrogez rdsadmin.tracefile_listing et spoulez la sortie vers un fichier. L'exemple suivant spoule la sortie vers /tmp/tracefile.txt.

SPOOL /tmp/tracefile.txt SELECT * FROM rdsadmin.tracefile_listing WHERE FILENAME LIKE 'lsinventory%'; SPOOL OFF;

Gestion des tâches de conseiller

Oracle Database comprend un nombre de conseillers. Chaque conseiller prend en charge des tâches automatisées et manuelles. Vous pouvez utiliser des procédures dans le package rdsadmin.rdsadmin_util pour gérer certaines tâches de conseiller.

Les procédures de tâches de conseiller sont disponibles dans les versions suivantes du moteur :

  • Oracle Database 21c (21.0.0)

  • Version 19.0.0.0.ru-2021-01.rur-2021-01.r1 et versions ultérieures de Oracle Database 19c

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

Définition des paramètres des tâches de conseiller

Pour définir les paramètres de certaines tâches de conseiller, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.advisor_task_set_parameter. La procédure advisor_task_set_parameter possède les paramètres suivants.

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

p_task_name

varchar2

Oui

Nom de la tâche de conseiller dont vous voulez modifier les paramètres. Les valeurs suivantes sont valides :

  • AUTO_STATS_ADVISOR_TASK

  • INDIVIDUAL_STATS_ADVISOR_TASK

  • SYS_AUTO_SPM_EVOLVE_TASK

  • SYS_AUTO_SQL_TUNING_TASK

p_parameter

varchar2

Oui

Nom du paramètre de la tâche. Pour rechercher des paramètres valides d'une tâche de conseiller, exécutez la requête suivante. Remplacer p_task_name par une valeur valide de p_task_name :

COL PARAMETER_NAME FORMAT a30 COL PARAMETER_VALUE FORMAT a30 SELECT PARAMETER_NAME, PARAMETER_VALUE FROM DBA_ADVISOR_PARAMETERS WHERE TASK_NAME='p_task_name' AND PARAMETER_VALUE != 'UNUSED' ORDER BY PARAMETER_NAME;

p_value

varchar2

Oui

Valeur d'un paramètre de la tâche. Pour rechercher des valeurs valides pour des paramètres de la tâche, exécutez la requête suivante. Remplacer p_task_name par une valeur valide de p_task_name :

COL PARAMETER_NAME FORMAT a30 COL PARAMETER_VALUE FORMAT a30 SELECT PARAMETER_NAME, PARAMETER_VALUE FROM DBA_ADVISOR_PARAMETERS WHERE TASK_NAME='p_task_name' AND PARAMETER_VALUE != 'UNUSED' ORDER BY PARAMETER_NAME;

Le programme PL/SQL suivant définit ACCEPT_PLANS à FALSE pour SYS_AUTO_SPM_EVOLVE_TASK. La tâche automatisée SQL Plan Management vérifie les plans et génère un rapport de résultats, mais ne fait pas évoluer les plans automatiquement. Vous pouvez utiliser un rapport pour identifier de nouvelles lignes de base de SQL Plan et les accepter manuellement.

BEGIN rdsadmin.rdsadmin_util.advisor_task_set_parameter( p_task_name => 'SYS_AUTO_SPM_EVOLVE_TASK', p_parameter => 'ACCEPT_PLANS', p_value => 'FALSE'); END;

Le programme PL/SQL suivant définit EXECUTION_DAYS_TO_EXPIRE à 10 pour AUTO_STATS_ADVISOR_TASK. La tâche prédéfinie AUTO_STATS_ADVISOR_TASK s'exécute dans la fenêtre de maintenance une fois par jour automatiquement. Dans l'exemple, la période de rétention pour l'exécution de la tâche est définie à 10 jours.

BEGIN rdsadmin.rdsadmin_util.advisor_task_set_parameter( p_task_name => 'AUTO_STATS_ADVISOR_TASK', p_parameter => 'EXECUTION_DAYS_TO_EXPIRE', p_value => '10'); END;

Désactivation de AUTO_STATS_ADVISOR_TASK

Pour désactiver AUTO_STATS_ADVISOR_TASK, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.advisor_task_drop. La procédure advisor_task_drop accepte les paramètres suivants.

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

p_task_name

varchar2

Oui

Nom de la tâche de conseiller qui doit être désactivée. La seule valeur valide est AUTO_STATS_ADVISOR_TASK.

La commande suivante désactive AUTO_STATS_ADVISOR_TASK.

EXEC rdsadmin.rdsadmin_util.advisor_task_drop('AUTO_STATS_ADVISOR_TASK')

Vous pouvez réactiver AUTO_STATS_ADVISOR_TASK en utilisant rdsadmin.rdsadmin_util.dbms_stats_init.

Réactivation de AUTO_STATS_ADVISOR_TASK

Pour réactiver AUTO_STATS_ADVISOR_TASK, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_util.dbms_stats_init. La procédure dbms_stats_init n'accepte aucun paramètre.

La commande suivante réactive AUTO_STATS_ADVISOR_TASK.

EXEC rdsadmin.rdsadmin_util.dbms_stats_init()