Passer au contenu

Comment puis-je modifier le nom de service et le SID de mon instance Amazon RDS for Oracle ?

Lecture de 5 minute(s)
0

Je souhaite modifier le nom du service et l'identifiant système (SID) de mon instance de base de données Amazon Relational Database Service (Amazon RDS) for Oracle.

Brève description

Par défaut, la valeur du SID d'une instance Amazon RDS for Oracle est ORCL. Vous ne pouvez pas modifier le SID ou le paramètre SERVICE_NAMES d'une instance Amazon RDS for Oracle existante.

Pour afficher le nom de votre service, exécutez l'une des commandes suivantes :

select value from v$parameter where name='service_names';
show parameter service_names;

Remarque : Le nom de service d'une instance Amazon RDS for Oracle est SID_A, où SID est le nom de la base de données. Pour un nom de base de données par défaut, SERVICE_NAMES est ORCL_A.

Résolution

Remarque : Vous ne pouvez pas modifier le paramètre SERVICE_NAMES dans le groupe de paramètres personnalisés Amazon RDS.

Pour modifier le nom de service de l'instance Amazon RDS for Oracle existante, utilisez l'une des méthodes suivantes :

  • Restaurez une instance de base de données à partir d'un instantané de base de données et utilisez un nouveau nom de base de données.
  • Créez une nouvelle instance Amazon RDS avec votre SID et migrez les données vers la nouvelle instance.
  • Créez un nom de service personnalisé.

Restaurer une instance de base de données à partir d'un instantané de base de données et utiliser un nouveau nom de base de données

1.    Créez un instantané de base de données.

2.    Restaurez l'instance de base de données à partir de l'instantané de base de données.

3.    Sous Options de base de données, spécifiez un nouveau nom de base de données à utiliser pour le SID de l'instance de base de données Oracle.

4.    Vérifiez que le nouveau nom de base de données est mis à jour :

Remarque : Remplacez example-new-database-name par le nom de votre base de données mise à jour.

select name, value from v$parameter where name=example-new-database-name;

5.    Confirmez la connectivité de l'instance avec le nouveau nom de service ou SID.

Créez une nouvelle instance Amazon RDS avec votre SID et migrez les données vers la nouvelle instance

  1. Créez une instance Amazon RDS Oracle avec un nouveau nom de base de données.
  2. Utilisez Oracle Data Pump ou AWS Data Migration Service (AWS DMS) pour migrer les données de l'ancienne instance vers la nouvelle instance Amazon RDS for Oracle.

Créer un nom de service personnalisé

Pour créer un nom de service personnalisé, utilisez le package DBMS_SERVICE. Après le redémarrage de la base de données Oracle, activez le démarrage automatique du service personnalisé créé. Pour plus d'informations, consultez la page DBMS_SERVICE sur le site Web d'Oracle.

Remarque : Vous pouvez créer des noms de service personnalisés pour les connexions d'applications à une base de données Amazon RDS for Oracle. Pour fournir un service géré, vous n'êtes pas autorisé à modifier le paramètre SERVICE_NAMES ni à accéder au serveur pour utiliser srvctl pour créer le service. Par conséquent, le service personnalisé ne démarre pas au redémarrage de la base de données. Vous devez plutôt redémarrer manuellement la base de données.

Créez un déclencheur de démarrage pour démarrer le service après le redémarrage de la base de données afin de ne pas avoir à démarrer manuellement le service personnalisé :

1.    Créez un nouveau service, puis démarrez-le :

Remarque : Remplacez example-service-name par le nom de votre nouveau service.

begin  
dbms_service.create_service('example-service-name','example-service-name');  
dbms_service.start_service('example-service-name');  
end;  
/

2.    Vérifiez l'état du nouveau service :

select * from dba_services;

3.    Utilisez les outils client Oracle, tels que sqlplus et SQL Developer, pour tester la connectivité de la base de données avec le nouveau service.

4.    Créez un déclencheur pour démarrer les services automatiquement après le redémarrage de la base de données.

Pour créer le déclencheur, procédez comme suit :

1.    Accordez l'accès au propriétaire d'une procédure ou d'un déclencheur pour exécuter dbms_service :

Remarque : Remplacez example-username par le nom du propriétaire de la procédure ou du déclencheur.

begin  
rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SERVICE','example-username');  
end;  
/

2.    Créez la procédure personnalisée pour démarrer le service qui est à l'état arrêté après le redémarrage de la base de données :

Remarque : Remplacez example-procedure-name par le nom de la procédure personnalisée.

CREATE OR REPLACE PROCEDURE example-procedure-name
IS
cursor tempvar is select name from sys.service$ where network_name is not null and name not in (select value from v$parameter where name='service_names');
loopvar tempvar%ROWTYPE;
begin
OPEN tempvar;
loop
fetch tempvar into loopvar;
EXIT WHEN tempvar%NOTFOUND;
begin
DBMS_SERVICE.start_service(loopvar.name);
end;
end loop;
close tempvar;
end;
/

3.    Créez un déclencheur de démarrage pour démarrer les services de base de données au moment du démarrage de la base de données :

Remarque : Remplacez example-trigger-name par le nom du déclencheur de démarrage. Remplacez example-procedure-name par le nom de la procédure personnalisée.

CREATE OR REPLACE TRIGGER example-trigger-name  
after startup on database  
begin  
example-procedure-name;  
end;  
/

Informations connexes

Renommer une instance de base de données