====== Introduction ======
{{ :em12c.gif?|}}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.
====== Principe du GRID ======
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.
{{:grid.jpg?300|}}
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 ).
====== Installation du serveur Linux ======
La version choisie sera centOS 5.8 en 64 bits. Le serveur dispose de la configuration suivante :
* Processeur i3 Intel
* RAM de 4Go ( en production mettre 8Go, la BD prend déjà 3Go et le serveur Weblogic est gourmand... )
* Disque dur SATA de 160Go
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.**
===== Désactivation de fonctionnalités =====
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
===== Activer ntp =====
Il est important que le serveur soit à l'heure en activant ntp
chkconfig ntpd on
ntpdate fr.pool.ntp.org
service ntpd start
===== Simuler une RedHat =====
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
===== Paramètres noyau =====
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
===== Packages requis =====
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 [[http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe|putty]] et le [[http://sourceforge.net/projects/xming/files/latest/download|serveur xming]]. Paramétrer putty pour autoriser la gestion X11 ( Connection -> SSH -> X11 et chocher Enable X11 forwarding )
{{:capture2menuputtyx11.png?300|}}
====== Installation Oracle ======
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
===== Binaires Oracle =====
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 :
* p10404530_112030_Linux-x86-64_1of7.zip
* p10404530_112030_Linux-x86-64_2of7.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 :
* em12_linux64_disk1.zip
* em12_linux64_disk2.zip
* em12_linux64_disk3.zip
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
===== Installation Logiciel database Oracle =====
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
===== Post-installation =====
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
===== Paramétrer Oracle*Net =====
Configurer le listener ( listener.ora ) et la méthode de résolution de noms (sqlnet.ora ) par netca ou en éditant les fichiers directement
==== Listener ====
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
==== Méthode de résolution ====
Editer le fichier $ORACLE_HOME/network/admin/sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES)
Seule la méthode via tnsnames.ora sera utilisée.
====== Créer la base référentiel ======
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.
* Ne pas utiliser memory_target ( en 11g )
* La shared pool area doit faire au minimum 600Mo
* Le nombre de curseurs doit être entre 300 et 400
* Les redo-logs doivent faire 300Mo
* Le tablespace undo doit être en autoexend
* Le calcul automatique des statistiques optimizeur doit être désactivé
===== Répertoires =====
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
===== Fichiers de paramètres =====
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 de la base de données =====
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:
==== Tables du dictionnaire ====
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.
==== Mot de passe sys et system ====
Toujours sous sqlplus en mode sysdba.
SQL> alter user sys identified by manager11;
SQL> alter user system identified by manager11;
==== Finalisation ====
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;
==== Configuration client Oracle*Net ====
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)
)
)
====== Installation em12c ======
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 :
* mgmt.dbf : Mesures collectées.
* mgmt_ecm_depot1.dbf : Informations sur la connexion aux cibles.
* mgmt_ad4j.dbf : Informations sur la gestion JVM.
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.
* Hôte : adi100.adimcor.eu
* Port : 1521 ( listener )
* Service : GRID
* Mot de passe de sys : manager11 ( il s'agit ici du mot de passe mis en place par orapwd )
{{:installation_d_oracle_enterprise_manager_cloud_control_12c_-_etape_5_sur_8_007.png?|}}
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.
{{:installation_d_oracle_enterprise_manager_cloud_control_12c_-_etape_8_sur_8_023.png?|}}
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.
===== Arrêt et démarrage du GRID =====
Il faut gérer 4 services :
* Listener
* Base référentiel
* OMS ( Oracle Management Service )
* Agent
==== Variables d'environnement ====
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
==== Arrêt ====
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
==== Démarrage ====
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
==== Automatiser le démarrage ====
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
====== Déploiement des agents ======
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
===== Récupération de l'agent =====
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.
===== Installation de l'agent =====
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.