Automatiser Oracle Grid Control 10g avec EMCLI

Je ne crois pas qu’il soit très utile d’entrer dans le détail, mais en gros j’ai passé cette semaine à démantibuler et reconstruire par morceaux un RAC 10 noeuds, histoire de changer plusieurs éléments de l’infrastructure technique et logicielle, d’appliquer les derniers Patch Set et CPU. En ligne de commande, vous l’auriez deviné et en réduisant l’indisponibilité à sa (presque !) plus simple expression ! En dehors d’une grosse surprise avec le filer NetApp lors de l’upgrade de la base de données, tout c’est passé à merveille…

Le temps est venu de supprimer l’ancienne configuration du Grid Control (10.2.0.4), c’est à dire :

  • 10 instances
  • 1 cluster de base de données
  • 10 listeners
  • 1 cluster
  • 10 serveurs
  • 10 agents

A la 5eme instance, vous vous dites : « Je ne perdrais sûrement pas mon temps à regarder comment faire la même chose en ligne de commande avec emcli ! ». J’aime bien le GridControl et surtout les packs Diagnostic et Tuning ! Mais, pour certaines opérations, il faut avouer que le web, même 2.0, n’égale pas toujours le mode ligne de commande.

Et non, vous ne perdrez pas votre temps ! Pour plus d’informations, reportez-vous à la documentation de emcli intitulée Oracle® Enterprise Manager Command Line Interface . Si vous voulez un cas d’utilisation simple, voici comment supprimer des cibles de votre Grid Control avec EMCLI…

Etape 1 : Installer « emcli »

Emcli s’utilise à distance. Autement dit, vos commandes sont transmises au GridControl via HTTP ou HTTPS. Pour télécharger emcli, nous supposerons que https://host:port/em est l’URL du Grid Control que vous utilisez. Il suffit alors de naviguer vers https://host:port/em/console/emcli/download . Les instructions sont disponibles depuis cette page.

Dans un premier temps, une fois le fichier emclikit.jar téléchargé, positionnez les variables JAVA_HOME et PATH pour accéder à une version du JDK 1.4.2 ou supérieure ( utilisez des commandes équivalentes avec la console Windows, e.g. set PATH=%JAVA_HOME%bin;%PATH%) :

# Modifier la valeur de JAVA_HOME selon
# votre environnement
$ export JAVA_HOME=/opt/local/jdk1.5_02

$ export PATH=$JAVA_HOME/bin:$PATH:.

Quand l’environnement positionné, créez un répertoire et installez emcli a l’aide des commandes suivantes

# Changez le nom du répertoire selon vos besoins :
$ mkdir ~/emcli
$ java -jar emclikit.jar client -install_dir=~/emcli
$ cd ~/emcli

Etape 2 : Configurer « emcli »

Vous pouvez ensuite utiliser la commande « emcli » et visualiser les différents arguments associés :

$ emcli help

Summary of commands:

argfile -- execute emcli verb where verb and arguments are contained in a file
help -- get help using emcli
setup -- setup emcli to work with an EM management server (OMS)
sync -- synchronize the emcli client with an OMS

Management Plug-in Verbs
add_group_to_mpa -- add a group to a Management Plug-in Archive
add_mp_to_mpa -- add a Management Plug-in to a Management Plug-in Archive

Avant de lancer des opérations sur le Grid Control avec emcli, vous devez configurer le client. Cela consiste à enregistrer l’URL et les informations d’accès au GridControl. La commande ci-dessous permet de d’enregistrer les informations de connexion au GridControl https://host:443/em :

$ cd ~/emcli
$ mkdir store
$ emcli setup -url="https://host:443/em"
-username=SYSMAN
-dir=~/emcli/store

Oracle Enterprise Manager 10g Release 10.2.0.4.0.
Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved.

Enter password:

[...]
--------------------------------------
Do you trust the certificate chain? [yes/no] yes

Etape 3 : Utiliser « emcli » :

Vous pouvez ensuite utiliser emcli pour effectuer des opérations en mode ligne de commande comme ci-dessous :

$ emcli get_targets

Status Status Target Type Target Name
ID
0 Down cluster my-cluster
0 Up host node1
0 Up host node2
[...]
0 Up oracle_database rac1
0 Up oracle_database rac2

Pour supprimer une cible en mode ligne de commande, vous pouvez lancer

$ emcli delete_target
-name=rac1
-type=oracle_database

Pour une liste complète des commandes disponibles en ligne de commande, regardez encore la doc… Je pense qu’il m’a fallu moins de temps pour écrire ce post qu’il ne m’en aurait fallu pour supprimer ces 42 cibles manuellement. Est-ce que ça vous donne des idées ?