L'objectif ici est de décrire la mise en place complète d'un environnement Entreprise Manager version 12c nommé aussi em12c.
La mise en place se fera sur un serveur CentOS version 5.8 en 64bits.
La version de la base Oracle sera la 11.2.0.3 toujours en 64bits.
L'installation de em12c demande un soin particulier sur la configuration du noyau linux, les packages requis ainsi que sur la configuration de la base de données Oracle devant supporter le référentiel. La gestion correcte des noms de machines est vitale. Il importe d'avoir soit des fichiers /etc/hosts à jour ou une bonne gestion DNS. De nombreuses erreurs d'installation sont dues à un mauvaise résolution des noms.
Le GRID permet d'étendre les fonctionnalités disponibles individuellement avec le dataBase Control à un ensemble de base de données appelées des cibles.
Les informations sont disponibles via un simple navigateur web. La gestion de l'application web est assurée par un serveur J2EE Weblogic appelé service management. Les informations sont stockées dans une base de données Oracle dédiée, le référentiel.
Le schéma ci-dessous présente cette architecture.
Sur chaque cible, un agent envoie les informations au serveur weblogic qui sont stockées dans le référentiel. Le référentiel est une base de données Oracle pouvant être 10g ou 11g. Elle peut être située sur le même serveur que le service management ou à part via une liaison Thin JDBC.
Les communications entre les cibles et le service management ainsi que vers le navigateur web se font en http ou https ( valeur par défaut ).
La version choisie sera centOS 5.8 en 64 bits. Le serveur dispose de la configuration suivante :
Il sera procédé à une installation minimale ( package core ) de CentOS. Le disque dur sera partitionné ainsi :
Primaire | ||
---|---|---|
Montage | Type | Taille |
/boot | Ext2 | 100Mo |
swap | 4Go | |
/ | Ext3 | 2000Mo |
Logique | ||
Montage | Type | Taille |
/usr | Ext3 | 5Go |
/usr/local | Ext3 | 5Go |
/var | Ext3 | 2Go |
/tmp | Ext3 | 2Go |
/opt | Ext3 | 10Go |
/u01 | Ext3 | 30Go |
/u02 | Ext3 | 30Go |
/u03 | Ext3 | 30Go |
/home | Ext3 | Le reste |
L'adresse IP du serveur sera 192.168.1.100 et sera nommé adi100.adimcor.eu.
Important : Modifier le fichier /etc/hosts afin que le nom court ( adi100 ) et le FQDN du serveur ( adi100.adimcor.eu ) pointe bien sur l'IP fixe
127.0.0.1 localhost.localdomain localhost 192.168.1.100 adi100.adimcor.eu adi100
Sans cela lors de la configuration oms, le serveur ne pourra pas démarrer. Il y aura dans les logs une erreur de ce type :
opmnctl cmd error: Connexion adi100.adimcor.eu - ID de cluster de notification manquant
Une configuration correcte du DNS fait également l'affaire.
Rappel : Une gestion incorrecte des noms de machine est la source principale des erreurs d'installation.
Par défaut et malgré une installation minimale CentOS active les services iscsi qui sont inutiles ici.
chkconfig --del iscsi chkconfig --del iscsid service iscsi stop
Désactiver aussi la sécurisation selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config setenforce 0
Il est important que le serveur soit à l'heure en activant ntp
chkconfig ntpd on ntpdate fr.pool.ntp.org service ntpd start
Oracle vérifie la plate-forme, bien que CentOS soit une RedHat le fichier /etc/redhat-release n'existe pas.
echo "Red Hat Enterprise Linux Server release 5 (Tikanga) Update 8" > /etc/redhat-release
Ajouter les lignes suivantes au fichier /etc/sysctl.conf
kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 6815744 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576
La documentation Oracle demande aussi des valeurs spécifiques pour kernel.shmmax et kernel.shmall. les valeurs par défaut dans CentOS 5.8 étant supérieures, elles ne seront pas modifiées.
Activer les paramètres noyau
sysctl -p
Une fois l'installation basique, il faut rajouter un certain nombres de packages
yum -y install compat-libstdc++-296 compat-libstdc++-33 \ make elfutils-libelf-devel glibc-devel \ glibc-headers gcc gcc-c++ \ libaio-devel sysstat unixODBC \ unixODBC-devel xorg-x11-deprecated-libs unzip \ pdksh setarch rng-utils
Afin de pouvoir procéder à une installation en mode graphique, il faut aussi installer au minimum la couche X-Window. L'installation se fera ensuite par export display via ssh sur un client X.
yum -y groupinstall "Système X Window"
La connexion en export display depuis un client X est simple, par exemple depuis un client Ubuntu
ssh -X root@192.168.1.100
Tester avec la commande xclock.
Si le poste est sous windows télécharger l'utilitaire putty et le serveur xming. Paramétrer putty pour autoriser la gestion X11 ( Connection → SSH → X11 et chocher Enable X11 forwarding )
Créer le user oracle au niveau linux ainsi que les groupes nécessaires.
groupadd oinstall groupadd dba useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle passwd oracle
Comme mot de passe oracle, pour la maquette, mettre manager11 ( en production choisir un mot de passe plus fort ).
Rajouter les lignes suivantes dans /etc/security/limits.conf
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
Modifier le fichier /etc/pam.d/login et ajouter la ligne suivante :
session required pam_limits.so
Editer le fichier /etc/profile et ajouter les lignes suivantes :
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
Créer les répertoires
mkdir -p /u01/app/oracle mkdir -p /u02/app/oracle mkdir -p /u03/app/oracle chown -R oracle:oinstall /u01 /u02 /u03
Pour la base du référentiel, il est possible d'utiliser les versions de Oracle de 10g à 11g. J'ai choisi la version la plus à jour au moment de la rédaction de cet article. Toutefois si vous n'avez pas de compte My Oracle Suport, la version 11.2.0.2 disponible sur le site oracle convient.
Depuis le site My Oracle Support charger les binaires de la version 11.2.0.3 qui comprend 2 fichiers .zip :
Les copier dans le répertoire /home et les décompresser
mkdir -p /home/ora11g cd /home/ora11g unzip /home/p10404530_112030_Linux-x86-64_1of7.zip unzip /home/p10404530_112030_Linux-x86-64_2of7.zip
Depuis le site oracle, charger les bianire de em12c, il sont au nombre de 3 :
Les copier dans le répertoire /home et les décompresser
mkdir -p /home/ora11g/em12c cd /home/ora11g/em12c unzip home/em12_linux64_disk1.zip unzip home/em12_linux64_disk2.zip unzip home/em12_linux64_disk3.zip
Se connecter en X en tant que oracle sur le serveur
ssh -X oracle@192.168.1.100
Lancer l'installation du logiciel oracle sans créer de base de données ( installer le logiciel uniquement ) en suivant l'assistant graphique
/home/ora11g/database/runInstaller
En fin d'installation, exécuter en tant que root les deux scripts suivants :
/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
Pour le second script, accepter le choix proposé soit /usr/local/bin
Une fois les binaires oracle en place, activer l'environnement had-oc dans le fichier .bash_profile
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export LD_LIBRARY_PATH=$ORACLE_HOME/lib export ORACLE_OWNER=oracle export PATH=$PATH:$ORACLE_HOME/bin export NLS_LANG=FRENCH_FRANCE.UTF8
Sourcer le fichier .bash_profile et tester une connexion sqlplus
. .bash_profile sqlplus /nolog SQL*Plus: Release 11.2.0.3.0 Production on Mer. Mai 2 11:04:56 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. SQL> exit
Configurer le listener ( listener.ora ) et la méthode de résolution de noms (sqlnet.ora ) par netca ou en éditant les fichiers directement
Editer le fichier $ORACLE_HOME/network/admin/listener.ora
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS=(PROTOCOL = TCP)(HOST = adi100.adimcor.eu )(PORT = 1521)) ) )
Démarrer le listener
lsnrctl start
Editer le fichier $ORACLE_HOME/network/admin/sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES)
Seule la méthode via tnsnames.ora sera utilisée.
Il s'agit d'une base Oracle standard qui stokera l'ensemble des informations du GRID. Sa configuration demande un soin et des paramètres particuliers.
Créer les répertoires suivants :
mkdir -p /u01/app/oracle/admin/GRID/pfile mkdir -p /u01/app/oracle/oradata/GRID mkdir -p /u02/app/oracle/oradata/GRID mkdir -p /u03/app/oracle/oradata/GRID
Editer le ficher /u01/app/oracle/admin/GRID/pfile/initGRID.ora
db_name = GRID db_block_size = 8192 control_files = '/u01/app/oracle/oradata/GRID/control01.ctl','/u02/app/oracle/oradata/GRID/control02.ctl','/u03/app/oracle/oradata/GRID/control03.ctl' sga_target=2G pga_aggregate_target=1G shared_pool_size=600M processes=300 job_queue_processes=20 session_cached_cursors=400 open_cursors=400
Créer le lien symbolique sous $ORACLE_HOME/dbs
cd $ORACLE_HOME/dbs ln -s /u01/app/oracle/admin/GRID/pfile/initGRID.ora initGRID.ora
Créer le fichier de mot de passe. Très important sinon il sera impossible de se connecter depuis em12c.
cd $ORACLE_HOME/dbs orapwd file=orapwGRID password=manager11
Création du script createGRID.sql
create database GRID character set AL32UTF8 national character set AL16UTF16 logfile group 1 ('/u01/app/oracle/oradata/GRID/redo01a.log','/u02/app/oracle/oradata/GRID/redo01b.log' ) size 300M , group 2 ('/u01/app/oracle/oradata/GRID/redo02a.log','/u02/app/oracle/oradata/GRID/redo02b.log' ) size 300M , group 3 ('/u01/app/oracle/oradata/GRID/redo03a.log','/u02/app/oracle/oradata/GRID/redo03b.log' ) size 300M datafile '/u01/app/oracle/oradata/GRID/system01.dbf' size 500M autoextend on next 100M maxsize 2G extent management local sysaux datafile '/u01/app/oracle/oradata/GRID/sysaux01.dbf' size 500M autoextend on next 100M maxsize 2G undo tablespace UNDO_TBS datafile '/u02/app/oracle/oradata/GRID/undo_tbs01.dbf' size 500M autoextend on next 100M maxsize 2G default temporary tablespace TEMP tempfile '/u03/app/oracle/oradata/GRID/temp01.dbf' size 1G autoextend on next 100M maxsize 10G;
Se connecter sqlplus en sysdba
export ORACLE_SID=GRID sqlplus "/ as sysdba" SQL> startup nomount; SQL> create spfile from pfile; SQL> shutdown immediate; SQL> startup nomount; SQL> start createGRID:
Toujours sous sqlplus en mode sysdba.
SQL> start $ORACLE_HOME/rdbms/admin/catalog.sql SQL> start $ORACLE_HOME/rdbms/admin/catproc.sql
Ces deux scripts sont assez longs, il faut compter 15 à 20 minutes.
Toujours sous sqlplus en mode sysdba.
SQL> alter user sys identified by manager11; SQL> alter user system identified by manager11;
Sortir de sqlplus et se reconnecter en system pour lancer le script pupbld.sql
sqlplus system/manager11 SQL> start $ORACLE_HOME/sqlplus/admin/pupbld.sql SQL> exit;
Editer le fichier $ORACLE_HOME/network/admin/tnsnames.ora
GRID = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = adi100.adimcor.eu)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = GRID) ) )
Editer le fichier $ORACLE_HOME/network/admin/listener.ora et ajouter les lignes suivantes pour l'enregistrement statique de la base dans le listener.
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = GRID) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = GRID) ) )
L'installation est assez longue, près de 2 heures sur le serveur de la maquette. Il est mis en place un serveur Weblogic, un JDK, puis 3 tablespaces sont créés dans la base référentiel ainsi qu'un grand nombre de tables et de procédure stockées.
Les 3 tablespaces créés :
L'installation graphique se fait en étant connecté Oracle
ssh -X oracle@192.168.1.100 /home/ora11g/em12c/runInstaller
Il faut désactiver la réception des mise à jour par metalink
Il faut aussi ignorer les mises à jour.
Choisir comme répertoire d'installation : /u01/app/oracle/product/MiddleWare. Il est important que le nom du répertoire choisi comporte le mot middleware et qu'il soit vide.
Dans l'écran types d'installation, choisir : Créer un système Entreprise manager Simple
Dans l'écran suivant donner comme mot de passe du compte administration ( sysman ) le même que sys soit manager11
La configuration de la base référentiel reste classique.
L'assistant demande de désactiver le job des statistiques, accepter ce choix.
En fin d'installation exeécuter en tant que root le script : /u01/app/oracle/product/MiddleWare/oms/allroot.sh en acceptant le répertoire par défaut et en écrasant les anciennes versions des fichiers.
On accède à l'interface du GRID via l'url : https://192.168.1.100:7801/em. Connexion en sysman/manager11
Après l'acceptation de la licence, il faut chosir sa page d'accueil. Le plus simple est de prendre récapitulatif. Il est possible de la changer à postériori.
Il faut gérer 4 services :
Afin de faciliter l'arrêt et le démarrage du GRID, positionner dans le fichier .bash_profile du user oracle les variables suivantes :
export OMS_HOME=$ORACLE_BASE/product/MiddleWare/oms export AGENT_HOME=$ORACLE_BASE/product/MiddleWare/agent/agent_inst
Serveur OMS
$OMS_HOME/bin/emctl stop oms -all
Agent
$AGENT_HOME/bin/emctl stop agent
Base référentiel
export ORACLE_SID=GRID sqlplus "/ as sysdba" SQL> shutdown immediate; SQL> exit;
Listener
lsnrctl stop
Listener
lsnrctl start
Base référentiel
export ORACLE_SID=GRID sqlplus "/ as sysdba" SQL> startup; SQL> exit;
Serveur OMS
$OMS_HOME/bin/emctl start oms
Agent
$AGENT_HOME/bin/emctl start agent
Oracle installe sous /etc/init.d le script gcstartup, il est alors simple d'automatiser complètement le démarrage du GRID via le fichier /etc/oratab
GRID:/u01/app/oracle/product/11.2.0/dhhome_1:Y *:/u01/app/oracle/product/MiddleWare/oms:Y *:/u01/app/oracle/product/MiddleWare/agent/agent_inst:Y
Pour la base GRID, il faut créer un script de lancement. Editer un fichier /etc/init.d/oracle
# chkconfig: 235 80 20 # description: ajout de service auto pour start/stop oracle #!/bin/bash ORACLE_OWNER=oracle ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 case $1 in start) echo -n "Démarrage Oracle DB:" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" ;; stop) echo -n "Arrêt Oracle DB:" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" ;; *) echo "Usage: $0 {start|stop}" ;; esac
Le rendre exécutable
chmod 0755 /etc/init.d/oracle
Activer les niveaux d'exécution
chkconfig --add oracle chkconfig --level 2345 oracle on
Bien qu'il soit possible de déployer les agents sur les cibles depuis l'interface GRID, le déploiement manuel présente des avantages. Oracle fournit un script dédié pour cela : agentDeploy.sh
Il faut récupérer l'ensemble du logiciel agent depuis la console GRID. Pour cela depuis le serveur où est installé le GRID lancer les commandes suivantes ( user oracle )
$OMS_HOME/bin/emcli login -username=sysman -password=manager11
Demander ensuite la synchronisation
$OMS_HOME/bin/emcli sync
Puis demander la liste des agents disponibles
$OMS_HOME/bin/emcli get_supported_platforms Getting list of platforms ... Check the logs at /home/oracle/agent.log About to access self-update code path to retrieve the platforms list.. Getting Platforms list ... ----------------------------------------------- Version = 12.1.0.1.0 Platform = Linux x86-64 ----------------------------------------------- Platforms list displayed successfully.
Récuperer un fichier .zip qui contiendra l'ensemble des eléments pour déployer l'agent, par exemple pour un serveur Linux 64 bits
$OMS_HOME/bin/emcli get_agentimage -destination=$HOME -platform="Linux x86-64" -version=12.1.0.1.0
Ceci génère alors dans la home directory du user oracle un fichier 12.1.0.1.0_AgentCore_nnn.zip ( nnn est un chiffre quelconque et aléatoire, lors de la maquette il était égal à 46. ) qu'il faut transférer sur le serveur à superviser.
Sur le serveur à superviser, décompresser le fichier .zip transféré précédement( le fichier fait environ 280Mo ). Puis lancer l'installation.
unzip 12.1.0.1.0_AgentCore_46.zip -d $HOME/agtImg cd $HOME/agtImg ./agentDeploy.sh AGENT_BASE_DIR=/u01/app/oracle/product/agent12c OMS_HOST=adi100.adimcor.eu EM_UPLOAD_PORT=4901 AGENT_REGISTRATION_PASSWORD=manager11 -ignorePrereqs
Il est impératif que le serveur cible résolve le nom adi100.adimcor.eu et qu'il puisse accèder au port 4901. L'option -ignorePrereqs est utile si la cible est sous une distribution Linux autre que redHat, par exemple Debian ou Ubuntu.