Fichiers journaux de base de données Oracle - Amazon Relational Database Service

Fichiers journaux de base de données Oracle

Vous pouvez accéder aux journaux des alertes, aux fichiers d'audits et aux fichiers de trace Oracle à l'aide de la console Amazon RDS ou de l'API. Pour plus d'informations sur l'affichage, le téléchargement ou la consultation des journaux de base de données basés sur des fichiers, consultez Fichiers journaux de base de données Amazon RDS.

Les fichiers d'audit Oracle fournis sont les fichiers d'audit Oracle standard. Amazon RDS prend en charge la fonction d'audit fine (FGA) Oracle. Cependant, l'accès aux journaux ne donne pas accès aux événements FGA stockés dans la table SYS.FGA_LOG$, accessibles via la vue DBA_FGA_AUDIT_TRAIL.

L'opération de l'API DescribeDBLogFiles qui répertorie les fichiers journaux Oracle disponibles pour une instance de base de données ignore le paramètre MaxRecords et renvoie jusqu'à 1 000 enregistrements.

Programme de rétention

Le moteur de base de données Oracle peut peut-être procéder à la rotation des fichiers journaux si leur volume devient très important. Pour conserver les fichiers d'audit ou de trace, vous devez les télécharger. Le stockage local des fichiers réduit les coûts de stockage Amazon RDS et libère de l'espace pour vos données.

Voici le programme de rétention des journaux des alertes Oracle, des fichiers d'audit et des fichiers de trace sur Amazon RDS.

Type de journal Programme de rétention

Journaux des alertes

Le journal d'alerte de texte fait l'objet d'une rotation quotidienne avec une conservation de 30 jours gérée par Amazon RDS. Le journal d'alerte XML est conservé au moins 7 jours. Vous pouvez accéder à ce journal grâce à la vue ALERTLOG.

Fichiers d'audit

La période de rétention par défaut des fichiers d'audit est de sept jours. Il se peut que Amazon RDS supprime des fichiers d'audit de plus de sept jours d'âge.

Fichiers de trace

La période de rétention par défaut des fichiers de trace est de sept jours. Il se peut que Amazon RDS supprime des fichiers de trace de plus de sept jours d'âge.

Journaux de l'écouteur

La période de rétention par défaut des journaux d'écoute est de sept jours. Il se peut que Amazon RDS supprime des journaux d'écoute de plus de sept jours d'âge.

Note

Les fichiers d'audit et les fichiers de trace partagent la même configuration de rétention.

Changement de fichiers journaux en ligne

Vous pouvez utiliser la procédure Amazon RDS rdsadmin.rdsadmin_util.switch_logfile pour changer des fichiers journaux en ligne. Pour plus d'informations, consultez Changement de fichiers journaux en ligne.

Récupération des journaux redo archivés

Vous pouvez conserver les journaux redo archivés. Pour plus d'informations, consultez Conservation des journaux redo archivés.

Utilisation des fichiers de trace Oracle

Vous trouverez ci-après de descriptions de procédures Amazon RDS permettant de créer, d'actualiser, de supprimer les fichiers de trace ou d'y accéder.

Liste de fichiers

Vous pouvez utiliser l'une ou l'autre de deux procédures permettent d'accéder à tous les fichiers dans le chemin background_dump_dest. La première actualise la liste de l'ensemble des fichiers actuellement dans background_dump_dest.

exec rdsadmin.manage_tracefiles.refresh_tracefile_listing;

Une fois la liste actualisée, interrogez la vue suivante pour accéder aux résultats.

SELECT * FROM rdsadmin.tracefile_listing;

Vous pouvez également utiliser la requête FROM table pour diffuser des données non tabulaires dans un format de table afin de répertorier le contenu de l'annuaire de bases de données.

SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP'));

La requête suivante affiche le texte d'un fichier journal.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','alert_dbname.log.date'));

Sur un réplica en lecture, obtenez le nom du répertoire BDUMP en interrogeant V$DATABASE.DB_UNIQUE_NAME. Si le nom unique est DATABASE_B, le répertoire BDUMP est BDUMP_B. L'exemple suivant interroge le nom BDUMP sur un réplica, puis utilise ce nom pour interroger le contenu de alert_DATABASE.log.2020-06-23.

SELECT 'BDUMP' || (SELECT regexp_replace(DB_UNIQUE_NAME,'.*(_[A-Z])', '\1') FROM V$DATABASE) AS BDUMP_VARIABLE FROM DUAL; BDUMP_VARIABLE -------------- BDUMP_B SELECT TEXT FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP_B','alert_DATABASE.log.2020-06-23'));

Génération de fichiers de trace et suivi d'une session

Puisqu'il n'existe aucune restriction sur alter session, un grand nombre de méthodes standard permettant de générer des fichiers de trace dans Oracle restent disponibles pour les instances de base de données Amazon RDS. Les procédures suivantes sont fournies pour les fichiers de trace pour lesquels l'accès doit être élargi.

Méthode Oracle Méthode Amazon RDS

oradebug hanganalyze 3

exec rdsadmin.manage_tracefiles.hanganalyze;

oradebug dump systemstate 266

exec rdsadmin.manage_tracefiles.dump_systemstate;

Vous pouvez utiliser de nombreuses méthodes standard pour suivre des sessions individuelles connectées à une instance de base de données Oracle dans Amazon RDS. Pour activer le suivi d'une session, vous pouvez exécuter des sous-programmes dans des packages PL/SQL fournis par Oracle, tels que DBMS_SESSION and DBMS_MONITOR. Pour plus d'informations, consultez Activation du suivi d'une session dans la documentation d'Oracle.

Récupération de fichiers de trace

Vous pouvez récupérer tous les fichiers dans background_dump_dest à l'aide d'une requête SQL standard sur un tableau Amazon RDS externe gérée. Pour utiliser cette méthode, vous devez exécuter la procédure définissant l'emplacement de cette table sur le fichier de trace spécifique.

Par exemple, vous pouvez utiliser la vue rdsadmin.tracefile_listing indiquée ci-dessus pour répertorier tous les fichiers de trace sur le système. Vous pouvez ensuite définir la vue tracefile_table afin qu'elle pointe vers le fichier de trace souhaité à l'aide de la procédure suivante.

exec rdsadmin.manage_tracefiles.set_tracefile_table_location('CUST01_ora_3260_SYSTEMSTATE.trc');

L'exemple suivant créé une table externe selon le schéma actuel. L'emplacement est défini sur le fichier fourni. Vous pouvez récupérer le contenu dans un fichier local à l'aide d'une requête SQL.

spool /tmp/tracefile.txt select * from tracefile_table; spool off;

Purge des fichiers de trace

Les fichiers de traçage peuvent accumuler et consommer de l'espace de disque. Amazon RDS purge les fichiers de trace par défaut, ainsi que les fichiers journaux dont l'ancienneté est supérieure à sept jours. Vous pouvez afficher et définir la période de rétention des fichiers à l'aide de la procédure show_configuration. Vous devez exécuter la commande SET SERVEROUTPUT ON afin de pouvoir afficher les résultats de la configuration.

L'exemple suivant affiche la période de rétention des fichiers de trace actuelle, puis définit une nouvelle période.

# Show the current tracefile retention SQL> exec rdsadmin.rdsadmin_util.show_configuration; NAME:tracefile retention VALUE:10080 DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted. # Set the tracefile retention to 24 hours: SQL> exec rdsadmin.rdsadmin_util.set_configuration('tracefile retention',1440); #show the new tracefile retention SQL> exec rdsadmin.rdsadmin_util.show_configuration; NAME:tracefile retention VALUE:1440 DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.

En complément du processus de purge périodique, vous pouvez supprimer manuellement des fichiers de background_dump_dest. L'exemple suivant montre comment purger tous les fichiers datant de plus de cinq minutes.

exec rdsadmin.manage_tracefiles.purge_tracefiles(5);

Vous pouvez également purger tous les fichiers correspondant à un modèle spécifique (dans ce cas, n'incluez pas l'extension de fichier, par exemple .trc). L'exemple suivant montre comment purger tous les fichiers commençant par SCHPOC1_ora_5935.

exec rdsadmin.manage_tracefiles.purge_tracefiles('SCHPOC1_ora_5935');

Publication des journaux Oracle dans Amazon CloudWatch Logs

Vous pouvez configurer votre instance de base de données Oracle Amazon RDS de sorte à publier des données de journaux dans un groupe de journaux dans Amazon CloudWatch Logs. CloudWatch Logs vous permet d'analyser les données de journaux et d'utiliser CloudWatch pour créer des alarmes et afficher des métriques. CloudWatch Logs permet de conserver les enregistrements des journaux dans une solution de stockage hautement durable.

Amazon RDS publie chaque journal de base de données Oracle sous la forme d'un flux de base de données distinct dans le groupe de journaux. Par exemple, si vous configurez la fonction d'exportation de sorte à inclure le journal d'audit, les données d'audit sont stockées dans un flux de journal d'audit dans le groupe de journaux /aws/rds/instance/my_instance/audit.

Pour publier des journaux de base de données Oracle dans CloudWatch Logs à partir d'AWS Management Console

  1. Ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans le panneau de navigation, choisissez Bases de données, puis l'instance de base de données que vous souhaitez modifier.

  3. Sélectionnez Modify.

  4. Dans la section Exportations des journaux, choisissez les journaux que vous voulez commencer à publier dans CloudWatch Logs.

  5. Choisissez Continuer, puis Modifier l'instance de base de données sur la page récapitulative.

Pour publier les journaux Oracle vous pouvez utiliser la commande modify-db-instance avec les paramètres suivants :

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

Note

Une modification apportée à l'option --cloudwatch-logs-export-configuration est toujours appliquée immédiatement à l'instance de base de données. Par conséquent, les options --apply-immediately et --no-apply-immediately sont sans effet.

Vous pouvez également publier des journaux Oracle en utilisant les commandes suivantes :

Exemple

L'exemple suivant crée une instance de base de données Oracle avec la publication CloudWatch Logs activée. La valeur --enable-cloudwatch-logs-exports est un tableau de chaînes JSON. Les chaînes peuvent être une combinaison de alert, audit, listener et trace.

Pour Linux, macOS ou Unix :

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --enable-cloudwatch-logs-exports '["trace","audit","alert","listener"]' \ --db-instance-class db.m5.large \ --allocated-storage 20 \ --engine oracle-ee \ --engine-version 12.1.0.2.v18 \ --license-model bring-your-own-license \ --master-username myadmin \ --master-user-password mypassword

Pour Windows :

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --enable-cloudwatch-logs-exports trace alert audit listener ^ --db-instance-class db.m5.large ^ --allocated-storage 20 ^ --engine oracle-ee ^ --engine-version 12.1.0.2.v18 ^ --license-model bring-your-own-license ^ --master-username myadmin ^ --master-user-password mypassword

Exemple

L'exemple suivant modifie une instance de base de données Oracle existante pour publier les fichiers journaux dans CloudWatch Logs. La valeur --cloudwatch-logs-export-configuration n'est pas un objet JSON. La clé pour cet objet est EnableLogTypes et sa valeur est un tableau de chaînes avec une combinaison quelconque de alert, audit, listener et trace.

Pour Linux, macOS ou Unix :

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["trace","alert","audit","listener"]}'

Pour Windows :

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration EnableLogTypes=\"trace\",\"alert\",\"audit\",\"listener\"

Exemple

L'exemple suivant modifie une instance de base de données Oracle existante pour désactiver la publication de fichiers journaux d'audit et d'écouteur dans CloudWatch Logs. La valeur --cloudwatch-logs-export-configuration n'est pas un objet JSON. La clé pour cet objet est DisableLogTypes et sa valeur est un tableau de chaînes avec une combinaison quelconque de alert, audit, listener et trace.

Pour Linux, macOS ou Unix :

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit","listener"]}'

Pour Windows :

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration DisableLogTypes=\"audit\",\"listener\"

Vous pouvez publier des journaux Oracle Database avec l'API RDS. Vous pouvez appeler l'action ModifyDBInstance avec les paramètres suivants :

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

Note

Une modification apportée au paramètre CloudwatchLogsExportConfiguration est toujours appliquée immédiatement à l'instance de base de données. Par conséquent, le paramètre ApplyImmediately est sans effet.

Vous pouvez également publier des journaux Oracle en appelant les opérations de l'API RDS suivantes :

Exécutez l'une de ces opérations d'API RDS avec les paramètres suivants :

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

D'autres paramètres peuvent être requis en fonction de l'opération RDS que vous exécutez.

Méthodes précédentes pour accéder aux journaux des alertes et aux journaux de l'écouteur

Vous pouvez consulter le journal d'alertes à l'aide de la console Amazon RDS. Vous pouvez également utiliser l'instruction SQL suivante pour accéder au journal d'alertes.

select message_text from alertlog;

Pour accéder au journal de l'écouteur, utilisez l'instruction SQL suivante.

select message_text from listenerlog;
Note

Oracle procède à la rotation des journaux des alertes et de l'écouteur lorsqu'ils dépassent 10 Mo. A ce moment là, ils ne sont pas disponibles dans les vues Amazon RDS.