Le Blog Amazon Web Services

Amazon RDS for Oracle – Partie 3 : Exploiter efficacement vos bases Oracle sur AWS

Oracle occupe une position dominante dans le paysage des bases de données relationnelles depuis des décennies. Cette prédominance historique crée des défis spécifiques lorsque les organisations souhaitent migrer leurs bases de données Oracle vers Amazon Web Services (AWS).

Nous vous proposons une série de 4 blog posts qui répondent aux questions suivantes :

Dans les précédents blog posts, nous avons exploré comment préparer la migration de vos bases de données Oracle vers Amazon Relational Database Service (RDS) de façon optimisée. Une fois cette migration réussie, la question qui se pose naturellement est : comment exploiter efficacement ces bases de données dans leur nouvel environnement cloud ? Ce troisième volet vous guide à travers les meilleures pratiques opérationnelles pour tirer pleinement parti d’Amazon RDS for Oracle, avec des exemples concrets pour chaque aspect clé de l’administration quotidienne.

Une administration quotidienne transformée

L’un des avantages majeurs d’Amazon RDS est la réduction des tâches administratives. AWS gère pour vous l’infrastructure sous-jacente, les sauvegardes automatisées, les correctifs du système d’exploitation et du moteur de base de données, tout en vous laissant le contrôle total sur vos données et configurations spécifiques.

Connexion à votre instance RDS Oracle

Pour vous connecter à votre instance RDS Oracle, plusieurs méthodes s’offrent à vous :
Via SQL Developer :

Hôte : votre-instance.xxxxxxx.region.rds.amazonaws.com
Port : 1521
SID/Service : ORCL (ou votre identifiant personnalisé)
Nom d'utilisateur : admin (ou votre utilisateur principal)

Via SQL*Plus :

sqlplus admin@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=votre-instance.xxxxxxx.region.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))

Gestion des paramètres de base de données

Amazon RDS utilise des groupes de paramètres pour gérer de façon centraliser les configurations de votre base de données Oracle. Voici comment créer et appliquer un groupe de paramètres personnalisé :

# Créer un groupe de paramètres personnalisé
aws rds create-db-parameter-group \
    --db-parameter-group-name oracle-custom-params \
    --db-parameter-group-family oracle-ee-19 \
    --description "Paramètres personnalisés pour Oracle 19c EE"

# Appliquer le groupe de paramètres à votre instance
aws rds modify-db-instance \
    --db-instance-identifier votre-instance \
    --db-parameter-group-name oracle-custom-params \
    --apply-immediately

Surveillance proactive et optimisation des performances

La surveillance proactive est essentielle pour maintenir des performances optimales et identifier les problèmes potentiels avant qu’ils n’affectent vos utilisateurs. Pour cela vous pouvez vous appuyer sur le service Amazon Cloudwatch, qui centralisent journaux et métriques de performance.

Métriques clés à surveiller

Amazon CloudWatch fournit automatiquement des métriques pour votre instance RDS Oracle :

  • CPUUtilization : Utilisation du processeur
  • FreeableMemory : Mémoire disponible
  • ReadIOPS/WriteIOPS : Opérations d’E/S par seconde
  • DatabaseConnections : Nombre de connexions actives

Configuration d’alertes personnalisées

# Créer une alarme pour une utilisation CPU élevée
aws cloudwatch put-metric-alarm \
    --alarm-name "RDS-Oracle-High-CPU" \
    --alarm-description "Alerte lorsque le CPU dépasse 80%" \
    --metric-name CPUUtilization \
    --namespace AWS/RDS \
    --statistic Average \
    --period 300 \
    --threshold 80 \
    --comparison-operator GreaterThanThreshold \
    --dimensions Name=DBInstanceIdentifier,Value=votre-instance \
    --evaluation-periods 3 \
    --alarm-actions arn:aws:sns:region:account-id:votre-topic-sns

Analyse des performances avec Amazon CloudWatch Database Insights

Amazon CloudWatch Database Insights offre une surveillance détaillée des performances de votre base de données Oracle sur RDS. Elle vous permet d’identifier, d’analyser et de résoudre les problèmes de performance.

Activation de Amazon CloudWatch Database Insights

# Activer Database Insights pour une instance existante
aws rds modify-db-instance \
    --db-instance-identifier votre-instance \
    --monitoring-interval 60 \
    --monitoring-role-arn arn:aws:iam::account-id:role/rds-monitoring-role \
    --enable-performance-insights \
    --performance-insights-retention-period 7 \
    --apply-immediately

Fonctionnalités clés de Database Insights

1. Tableau de bord de charge de base de données (DB Load)
Le tableau de bord DB Load vous permet de visualiser la charge de votre base de données Oracle en temps réel et historique, segmentée par :

  • États d’attente Oracle
  • Requêtes SQL
  • Hôtes/Applications
  • Utilisateurs

2. Analyse des requêtes problématiques
Identifiez rapidement les requêtes SQL qui consomment le plus de ressources et optimisez-les en créant des index appropriés ou en restructurant les requêtes pour améliorer les performances.

Exemple pratique : Si vous observez un pic dans l’événement d’attente

db file scattered read

dans Database Insights, cela indique généralement des lectures de table complètes inefficaces. Créez un index approprié pour résoudre ce problème :

CREATE INDEX idx_orders_region_date ON orders(customer_region, order_date);

Utilisation des procédures stockées rdsadmin

Amazon RDS for Oracle fournit un ensemble de procédures stockées dans le package rdsadmin qui vous permettent d’effectuer des tâches d’administration système sans avoir besoin des privilèges SYSDBA. Ces procédures vous donnent un contrôle précis sur votre base de données tout en respectant le modèle de responsabilité partagée d’AWS.

Gestion des sessions actives

L’une des tâches d’administration les plus courantes est la gestion des sessions bloquantes. Voici comment identifier et terminer une session problématique :
1. Identifier les sessions bloquantes :

-- Identifier les sessions bloquantes
SELECT s.sid, s.serial#, s.username, s.status, s.machine, s.program, s.logon_time, 
       ROUND(s.last_call_et/60) as "Minutes Active"
FROM v$session s
WHERE s.blocking_session IS NOT NULL
OR s.sid IN (SELECT blocking_session FROM v$session WHERE blocking_session IS NOT NULL);

2. Terminer une session avec rdsadmin :

-- Terminer une session bloquante
BEGIN
    rdsadmin.rdsadmin_util.kill(
        sid    => 123,     -- ID de session à terminer
        serial => 12345,   -- Numéro de série de la session
        method => 'IMMEDIATE'  -- IMMEDIATE ou PROCESS
    );
END;
/

Le paramètre “method” peut être “PROCESS”, termine le processus serveur associé à la session, ou “IMMEDIATE” équivalent à

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE

Gestion des objets de base de données

Gestion des fichiers de trace et des journaux
Les procédures rdsadmin permettent également de gérer les fichiers de trace et les journaux :

-- Générer un rapport AWR (Automatic Workload Repository)
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.awr_report(
        begin_snap => 123,
        end_snap   => 124,
        report_type => 'HTML',
        p_directory => 'DATA_PUMP_DIR'
    );
END;
/

Exemple pratique : Pour diagnostiquer un problème de performance récurrent, générez un rapport AWR couvrant la période problématique, puis utilisez le package

UTL_FILE

pour lire le rapport et analyser les goulots d’étranglement.

Gestion des privilèges et des rôles

RDS for Oracle permet également de gérer les privilèges et les rôles via des procédures stockées :

-- Accorder un privilège système à un utilisateur
BEGIN
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name => 'V_$SESSION',
        p_grantee  => 'APP_USER',
        p_privilege => 'SELECT'
    );
END;
/

Création et utilisation des Database Links dans RDS Oracle

Dans un environnement RDS Oracle, les database links (DB_LINK) sont particulièrement précieux car ils permettent d’établir des connexions entre votre base de données RDS et d’autres bases Oracle, qu’elles soient sur AWS ou dans votre infrastructure sur site. Cette fonctionnalité est essentielle pour les scénarios de migration progressive, les architectures hybrides, ou l’intégration avec des systèmes existants. Contrairement à une installation Oracle standard, la création de DB_LINK dans RDS nécessite quelques considérations spécifiques liées à la sécurité réseau et aux groupes de sécurité AWS. Voici comment créer un database link dans RDS Oracle :

-- Créer un database link vers une autre base Oracle
BEGIN
    EXECUTE IMMEDIATE 'CREATE DATABASE LINK remote_db 
    CONNECT TO remote_user IDENTIFIED BY "remote_password" 
    USING ''(DESCRIPTION=
        (ADDRESS=(PROTOCOL=TCP)(HOST=remote-db.example.com)(PORT=1521))
        (CONNECT_DATA=(SID=ORCL)))''';
END;
/

-- Tester le database link
SELECT * FROM dual@remote_db;

Assurez-vous que les groupes de sécurité et les ACL réseau permettent la communication entre votre instance RDS et la base de données cible. Pour les bases de données externes à AWS, vous devrez configurer correctement votre AWS Site-to-Site VPN ou AWS Direct Connect.

Conclusion

L’exploitation efficace d’une base de données Oracle sur Amazon RDS combine les meilleures pratiques traditionnelles d’administration Oracle avec les fonctionnalités spécifiques du cloud AWS. En tirant parti des capacités de surveillance, d’automatisation et des procédures stockées rdsadmin, vous pouvez considérablement réduire la charge opérationnelle tout en maintenant un contrôle précis sur votre environnement de base de données.
Les exemples présentés dans cet article vous fournissent un point de départ solide pour optimiser vos opérations quotidiennes. N’hésitez pas à les adapter à vos besoins spécifiques et à explorer les nombreuses autres fonctionnalités disponibles dans l’écosystème AWS.
Dans le prochain article de cette série, nous explorerons les stratégies de modernisation pour vos bases de données Oracle sur AWS.
Pour toute question ou assistance concernant l’exploitation de vos bases de données Oracle sur Amazon RDS, n’hésitez pas à contacter votre architecte de solutions AWS ou à consulter la documentation officielle d’Amazon RDS pour Oracle.

Dimitri Fryc

Dimitri Fryc

Dimitri est Architecte de Solutions Spécialiste bases de données AWS depuis 2021. Basé à Lyon, il aide au quotidien les entreprises à adopter et optimiser leurs bases de données relationnelle et NoSQL sur AWS.

Jaouad Zouaghi

Jaouad Zouaghi

Jaouad est Architecte de Solutions Spécialiste bases de données SQL/NOSQL basé à Paris, aidant les organisations à migrer leur workload de base de données vers AWS. Il a une expérience importante sur les bases de données relationnelles, avec une appétence pour les sujets de criticité : Performance, haute disponibilité, PRA… Si vous souhaitez tirer bénéfice des capacités du cloud, pour vos workloads, n’hésitez pas à le contacter.