====== 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.