Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
LAMI DBA

Articles autour des SGBD Oracle, SQL Server & PostgreSQL

Oracle RAC 11G : Modifier le SCAN d'un cluster

L'objectif de cet article est de découvrir une méthode simple permettant de modifier le nom du SCAN d'un cluster oracle RAC, dans mon exemple un RAC à 2 nodes sous Linux.

Le cluster est composé de 3 SCAN_LISTENER. Le scan actuel est nommé  "clustbatman.batdomain.fr", et devra par la suite être "clustrobin.batdomain.fr"

Le premier réflexe est d'identifier les IP associées au SCAN, et donc du DNS qui permet la redirection depuis les serveurs applicatifs.

En utilisant l'environnement du Grid Infrastructure (ou ASM) depuis le compte unix qui a installé le logiciel (dans mon cas "oracle"), on lance la commande "srvctl config scan" pour avoir les informations associées au SCAN :

[SRVORA1]<oracle>/home/oracle[+ASM1]:srvctl config scan
SCAN name: clustbatman.batdomain.fr, Network: 1/192.158.71.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /clustbatman.batdomain.fr/192.158.71.62
SCAN VIP name: scan2, IP: /clustbatman.batdomain.fr/192.158.71.61
SCAN VIP name: scan3, IP: /clustbatman.batdomain.fr/192.158.71.60

On check ensuite la résolution DNS :

[SRVORA1]<oracle>/home/oracle[+ASM1]:nslookup clustbatman.batdomain.fr

Name:   clustbatman.batdomain.fr
Address: 192.158.71.60
Name:   clustbatman.batdomain.fr
Address: 192.158.71.61
Name:   clustbatman.batdomain.fr
Address: 192.158.71.62


On vérifie maintenant que le futur scan (ou plutôt le DNS de ce futur scan) pointe bien vers les mêmes IP :

[SRVORA1]<oracle>/home/oracle[+ASM1]:nslookup clustrobin.batdomain.fr

Name:   clustrobin.batdomain.fr
Address: 192.158.71.62
Name:   clustrobin.batdomain.fr
Address: 192.158.71.60
Name:   clustrobin.batdomain.fr
Address: 192.158.71.61


Ok, nous pouvons donc réaliser la modification, en débutant tout d'abord par l'arrêt des 3 listener_scan, et ensuite du scan :

[SRVORA1]<oracle>/home/oracle[+ASM1]:srvctl stop scan_listener
[SRVORA1]<oracle>/home/oracle[+ASM1]:srvctl stop scan

[SRVORA1]<oracle>/home/oracle[+ASM1]:srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is not running
SCAN Listener LISTENER_SCAN2 is enabled
SCAN listener LISTENER_SCAN2 is not running
SCAN Listener LISTENER_SCAN3 is enabled
SCAN listener LISTENER_SCAN3 is not running

[SRVORA1]<oracle>/home/oracle[+ASM1]:srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is not running
SCAN VIP scan2 is enabled
SCAN VIP scan2 is not running
SCAN VIP scan3 is enabled
SCAN VIP scan3 is not running

On modifie maintenant le scan, mais pour ce faire il faut être en super user (root), en effet cette modification ce fait coté CRS, et agit sur des processus server lancé par root (crsd) :

[]<>/root[]:export ORACLE_HOME=/oracle/product/11.2.0/grid
[]<>/root[]:$ORACLE_HOME/bin/srvctl modify scan -n clustrobin.batdomain.fr

Ensuite, on revient sur le compte système du Grid ("oracle") pour relancer le scan, et ensuite les scan_listener :

[SRVORA1]<oracle>/home/oracle[+ASM1]:srvctl start scan
[SRVORA1]<oracle>/home/oracle[+ASM1]:srvctl start scan_listener

Quelques vérifications, pour être sur que la modification soit bien effective :

[SRVORA1]<oracle>/home/oracle[+ASM1]:srvctl config scan
SCAN name: clustrobin.batdomain.fr, Network: 1/192.158.71.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /clustrobin.batdomain.fr/192.158.71.61
SCAN VIP name: scan2, IP: /clustrobin.batdomain.fr/192.158.71.62
SCAN VIP name: scan3, IP: /clustrobin.batdomain.fr/192.158.71.60

OK, on peut également, comme dernier test, se connecter sur la base de données cluster, depuis un poste distant en utilisant ce nouveau SCAN / DNS, soit en easy connect ou via tnsnames.

Dans mon cas je passe par tnsnames avec l'alias ci dessous :

NEW_SCAN_ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = clustrobin.batdomain.fr)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 20)
        (DELAY = 1)
      )
    )
  )

Je lance donc depuis mon PC un sqlplus sur cet Alias pour tester la connexion et vérifier :

C:\Users\Micka>tnsping NEW_SCAN_ORCL

TNS Ping Utility for 64-bit Windows: Version 12.1.0.2.0 - Production on 12-SEPT.-2016 10:34:08

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Fichiers de paramÞtres utilisÚs :
C:\Oracle\product\12.1.0\client_1\network\admin\sqlnet.ora

Adaptateur TNSNAMES utilisÚ pour la rÚsolution de l'alias
Tentative de contact de (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = clustrobin.batdomain.fr)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = 20) (DELAY = 1))))
OK (90 msec)

C:\Users\Micka>sqlplus system@NEW_SCAN_ORCL

SQL*Plus: Release 12.1.0.2.0 Production on Lun. Sept. 12 10:34:26 2016

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Entrez le mot de passe :

ConnectÚ Ó :
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> select instance_name,host_name from v$instance;

INSTANCE_NAME        HOST_NAME
-----------        ------------------
ORCL1            SRVORA1

C'est OK, mais il ne faut pas oublier de configurer le remote_listener de chaque instance Oracle, en passant par la modification du tnsnames.ora sur chaque nodes si la configuration du paramètre remote_listener fait appel à un ALIAS TNS.

SQL> alter system set remote_listener="clustrobin:1521" scope=both sid='*';
System altered.

Et voila ! Cette méthode reste assez simple, mais elle pourrait se compliquer quelque peu si en plus nous sommes dans un cas où les IP des VIPs devraient être modifiées, auquel cas il faudrait jouer avec oifcfg et réaliser plus d'actions


Cela fera l'objet d'un futur article why not !

@+
Micka

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
F
Merci pour l'article.
Répondre