jeudi 15 décembre 2011

CONCEPT


Oracle Configuration Manager est un outil du support Oracle qui permet d’effectuer des captures d’une configuration machine produit et instance à destination du support Oracle. Les captures peuvent se faire automatiquement et envoyé directement au support ou manuellement via un fichier de configuration à enregistrer sur le site via un SR spécifique.

Produit supporté :

ü  BEA WebLogic
ü  IBM Websphere
ü  Host (includes full 3rd party software inventory)
ü  Database Instance
ü  Database Listener
ü  RAC Cluster
ü  e-Business Suite
ü  Oracle Application Server
ü  Oracle HTTP Server
ü  OC4J
ü  Web Cache
ü  Oracle Home
ü  Enterprise Manager Agent
ü  Enterprise Manager Server

Version :

Oracle Application Server releases 9.0.3 and higher (note that 1.0.2.2 is only supported in an E-Business Suite configuration)
Oracle WebLogic Server 10.3.2 and higher
Oracle Business Intelligence Enterprise Edition/Siebel Analytics versions 7.8.4/10.1.3.2
Oracle Hyperion Enterprise Performance Management System 11.1.2 and higher
Oracle Fusion Middleware release 11.1.1.1 and higher

Cet outil en ligne de commande peut se coupler avec le Grid Control afin de centraliser l’ensemble des configurations de l’entreprise qui sont ensuite centralisées et visibles à partir du site support.

L’objectif étant de pousser les informations des plateformes client vers le support de façon automatisé et globalisé afin de diminuer les échanges lors de la création des SR. Il permet également d’être notifié de nouveau PATCH associé aux éléments déployés sur les plateformes (proactif). On pourra également appliquer les PATCH automatiquement du site du support vers la plateforme cible.

Lors d’envoi régulier, l’historique des captures est géré par le site et permet de voir les écarts de configuration dans le temps. C’est également une référence pour le support lors des investigations (information qu’ils ne pourraient avoir que sur site).

Cet outil est récupérable et installable sur toutes les plateformes, s’il ne l’est pas déjà nativement. Vous pouvez le récupérer sur le site du support sous l’onglet support.


Une vidéo explique le fonctionnement et les fonctionnalités associées :


FAQ :


L’installation présentée ici est basé sur une plateforme linux Red Hat 64 bits avec une capture en mode déconnecté. Une fois le binaire récupère sur la machine (si pas déjà présent) et le répertoire de-zipper, lancer l’installation. Les prés requis sur machine Unix/linux étant la présence de GCC en version 32 et 64 bits avec toutes les libraires associées.

(Attention, dans le cas où l’outil est utilisé pour des versions différentes du produit, il faudra refaire une installation en positionnant les variables d’environnement  de la version de Weblogic avant de faire une capture (exécutant le setWLSEnv) )

PHASE D’INSTALLATION

La version 11G des produits Fusion Middelware embarque déjà l’outil sous ${FMW_HOME}/utils/ccr (Une phase d’upgrade de l’outil peut être mise en place dans le cas de FMW11GR1 How to Upgrade OCM to the Latest Version?). 

Certaines variables d’environnement doivent être positionnées avant de lancer les commandes OCM. Vous pouvez les charger via le scripte de chargement d’environnement de la distribution FMW.

. ${FMW_HOME}/wlserver_10.3/server/bin/setWLSEnv.sh

Renseigner l’endroit ou se trouve OCM via la variable ORACLE_HOME.

export ORACLE_HOME=${FMW_HOME}/utils;

Positionner vous sous le répertoire de l’outil OCM dans le cas d’une capture d’installation de produit.

cd $ORACLE_HOME/ccr/bin

Afin d’utiliser le produit, vous devez lancer la commande setupCCR ou configCCR (pour modification). Dans cette phase on y précise une fois pour tout  l’ID client (Customer Support Identifier) avec lequel on va ouvrir les SR, le mail du responsable et la langue. L’option –s –d permet une installation en mode déconnecté (dans le cas ou la machine de production n’a pas accès au WEB).

(Dans le cas d’une installation seul de l’outil, il faudra refaire l’opération systématiquement à chaque changement de version de Middleware)

$ORACLE_HOME/ccr/bin/setupCCR -s -d 27314456 george.durand@societecom FR

Ou

$ORACLE_HOME/ccr/bin/configCCR -s -d 27314456 george.durand@societecom FR

** Installing base package **
Deploying core - Version 10.3.5.0.0
Deploying engines - Version 10.2.7.1.0
Deploying metricdata - Version 10.2.4.0.3
Deploying scripts - Version 10.3.5.0.0

Oracle Configuration Manager has been configured in disconnected mode. If the
target ORACLE_HOME is running a database, please refer to the
"Post-installation Database Configuration" section of the OCM Installation
and Administration Guide
(http://www.oracle.com/technology/documentation/ocm.html) to complete the
installation.

View configuration data reports and access valuable configuration best
practices by going to My Oracle Support.

Commande de vérification de l’installation.

$ORACLE_HOME/ccr/bin/emCCR status

Oracle Configuration Manager - Release: 10.3.5.0.0 - Production
Copyright (c) 2005, 2011, Oracle and/or its affiliates.  All rights reserved.
------------------------------------------------------------------
Log Directory            /home/oracle/ccr/hosts/OLinux54/log
Collector Mode           Disconnected
To switch to connected mode, please run /home/oracle/ccr/bin/configCCR

PHASE DE COLLECTE

Pour collecter, il suffit de rentre la commande suivante pour que l’outil SCANNE les répertoires.

Deux possibilités, vous n’avez pas déclaré de domaine et vous souhaitez faire des captures de votre installation. Vous pouvez prendre dans ce cas le setEnv de la distribution.

. ${FMW_HOME}/wlserver_10.3/server/bin/setWLSEnv.sh

Dans le cas d’un domaine, prenez le setEnv de celui-ci pour charger votre environnement d’exécution (instance weblogic montée).

. ${DOMAIN_HOME}/bin/setDomainEnv.sh

Renseigner l’endroit ou se trouve OCM via la variable ORACLE_HOME.

export ORACLE_HOME=$BEA_HOME/utils;

Positionner vous sous le répertoire de l’outil OCM dans le cas d’une capture d’installation de produit ou sous le domaine dans le cas où il y a domaine à capture.

cd $ORACLE_HOME/ccr/bin

cd $DOMAIN_HOME

Puis lancer la commande de capture.

${ORACLE_HOME}/ccr/bin/emCCR collect

Ou

${ORACLE_HOME}/ccr/bin/emCCR -annotation="Mon Annotation" collect

Vous pouvez ensuite récupérer le JAR de capture à envoyer au support.

${CCR_HOME}/hosts/${nom machine}/state/upload/ocmconfig.jar

Vous pouvez également voir le détaille dans le répertoire suivant :

${CCR_HOME}/hosts/${nom machine}/config/default/targets.xml


 <Targets>  
  <Target TYPE="host" NAME="localhost.localdomain" >  
  </Target>  
 <Target TYPE="oracle_home" NAME="/logiciels/bea/weblogic_11gR1PS3/oracle_common" VERSION="1.0">  
  <Property NAME="host" VALUE="localhost.localdomain" />  
  <Property NAME="Location" VALUE="/logiciels/bea/weblogic_11gR1PS3/oracle_common" />  
  <Property NAME="HomeName" VALUE="OH2128292267" />  
  <Property NAME="Type" VALUE="O" />  
  <Property NAME="Index" VALUE="0" />  
  <Property NAME="OUI_Platform" VALUE="2000" />  
  <Property NAME="Clonable" VALUE="Y" />  
 </Target>  
 <Target TYPE="oracle_home" NAME="/logiciels/bea/weblogic_11gR1PS3/osb" VERSION="1.0">  
  <Property NAME="host" VALUE="localhost.localdomain" />  
  <Property NAME="Location" VALUE="/logiciels/bea/weblogic_11gR1PS3/osb" />  
  <Property NAME="HomeName" VALUE="OH1200108345" />  
  <Property NAME="Type" VALUE="O" />  
  <Property NAME="Index" VALUE="0" />  
  <Property NAME="OUI_Platform" VALUE="2000" />  
  <Property NAME="Clonable" VALUE="Y" />  
 </Target>  
 <Target TYPE="oracle_home" NAME="/logiciels/bea/weblogic_11gR1PS3/coherence_3.6" VERSION="1.0">  
  <Property NAME="host" VALUE="localhost.localdomain" />  
  <Property NAME="Location" VALUE="/logiciels/bea/weblogic_11gR1PS3/coherence_3.6" />  
  <Property NAME="HomeName" VALUE="Unknown" />  
  <Property NAME="Type" VALUE="O" />  
  <Property NAME="Index" VALUE="0" />  
  <Property NAME="OUI_Platform" VALUE="46" />  
  <Property NAME="Clonable" VALUE="Y" />  
 </Target>  
 <Target TYPE="oracle_home" NAME="/logiciels/bea/weblogic_11gR1PS3/wlserver_10.3" VERSION="1.0">  
  <Property NAME="host" VALUE="localhost.localdomain" />  
  <Property NAME="Location" VALUE="/logiciels/bea/weblogic_11gR1PS3/wlserver_10.3" />  
  <Property NAME="HomeName" VALUE="Unknown" />  
  <Property NAME="Type" VALUE="O" />  
  <Property NAME="Index" VALUE="0" />  
  <Property NAME="OUI_Platform" VALUE="46" />  
  <Property NAME="Clonable" VALUE="Y" />  
 </Target>  
 <Target NAME="Oracle Configuration Manager" TYPE="oracle_livelink">  
   <Property NAME="livelink_home" VALUE="/logiciels/bea/weblogic_11gR1PS3/utils/ccr"/>  
 </Target>  
 </Targets>  

Ou

${CCR_HOME}/hosts/localhost.localdomain/state/review/targetMap.xml


 <?xml-stylesheet type="text/xsl" href="/logiciels/bea/weblogic_11gR1PS3/utils/ccr/admin/xsl/preview_targets.xsl"?>  
 <Targets collection_time="2011-10-24 11:24:35" host_name="localhost.localdomain">  
  <Target name="localhost.localdomain" type="Host">  
   <Collection name="ll_host_config" file="632220B3E27D0E23272272388F7F490E-ll_host_config.xml" collection_timestamp="2011-10-24 11:24:35 Europe/Paris"/>  
  </Target>  
  <Target name="Oracle Configuration Manager" type="Oracle Configuration Manager">  
   <Collection name="livelink_config" file="18C5F0E75FBA45C2F26B6875756CC095-livelink_config.xml" collection_timestamp="2011-10-24 11:24:41 Europe/Paris"/>  
  </Target>  
  <Target name="/logiciels/bea/weblogic_11gR1PS3/osb" type="Oracle Home">  
   <Collection name="oracle_home_config" file="E467DF634AF09E46B27038E895597EC9-oracle_home_config.xml" collection_timestamp="2011-10-24 11:24:41 Europe/Paris"/>  
  </Target>  
  <Target name="/logiciels/bea/weblogic_11gR1PS3/oracle_common" type="Oracle Home">  
   <Collection name="oracle_home_config" file="FE0C9257EF1902E4FCC6AAD44CE3C15B-oracle_home_config.xml" collection_timestamp="2011-10-24 11:24:41 Europe/Paris"/>  
  </Target>  
  <Target name="/logiciels/bea/weblogic_11gR1PS3/wlserver_10.3" type="Oracle Home">  
   <Collection name="oracle_home_config" file="74DF426C81802519B07C903AB47D0EEF-oracle_home_config.xml" collection_timestamp="2011-10-24 11:24:42 Europe/Paris"/>  
  </Target>  
  <Target name="/logiciels/bea/weblogic_11gR1PS3/coherence_3.6" type="Oracle Home">  
   <Collection name="oracle_home_config" file="84D962D5FA0E96EC2F99D964DC910923-oracle_home_config.xml" collection_timestamp="2011-10-24 11:24:42 Europe/Paris"/>  
  </Target>  
 </Targets>  

(Dans le cas de la capture de domaine, vous verrez apparaître celui-ci sous le libelle : /Farm_${nom de domain}/${nom de domain} )

IMPORTER MANUELLEMENT LA CAPTURE DANS METALINK

Copier le JAR de capture sur une machine qui a un accès internet. Connecter vous au site du support avec un compte qui a un accès Support Identifier précisé lors de l’installation du produit (CSI).




Problem Summary: "Upload of ocmconfig.jar - DD-MON-YYYY”
Problem Description: "Upload of ocmconfig.jar - DD-MON-YYY”
Support Identifier : CSI
SR Type: Manual Entry
Next + "Continue Logging Manual SR"
 

(Sur le champs Product,  selectionner d’abord ‘ -- to show all the products click here -- ’ puis ensuite tapper ‘Oracle Configuration Manager’)

Product: "Oracle Configuration Manager"
Product version: Example: "10.3.4.0.0"
Platform: Example: "Microsoft Windows 32 bits"
Platform Version: Example: "XP"
Database Version: not mandatory and left empty
Type of Problem Category: "Upload of ocmconfig.jar (OCM Collection Disconnected Mode)"

Click Next, + Next


Step 4 "Upload Files"
Upload ocmconfig.jar

Le fichier ocmconfig.jar est affiché dans la section ‘Files Uploaded‘. Aussitôt que le JAR est téléchargé, le SR est sauvegardé en DRAFT. Vous pouvez arrêter la saisie à ce nouveau avec un Cancel (il ne faut  conserver le SR en DRAFT et pas le confirmer)

Vous pouvez vérifier le fichier téléchargé en éditant le SR en DRAFT via la Home Page du site support en éditant le SR. Vous pouvez également voir quelques minutes après la capture prise en compte sur l’onglet suivant (Attention, la 1er capture peut être longue : 24 à 48 H ).

Une capture permet de remonter toutes les informations dans la vue Targets. La vue Systems ne remontant que les informations associées aux domaines. La vue Projets étant un regroupement d’informations Systems à définir manuellement via l’IHM de metalink. Ces vues sont visibles via l’onglet Dashboard (si elles n’apparaissent pas, il faut customiser la vue pour les faires apparaîtrais).



DashboardàTargets
 

Si cette vue n’apparaît pas, il vous faut customiser l’IHM pour le faire apparaître.

























(drag&drop du module sur la page principal pour activer la vue)
Si votre capture n’est toujours pas téléchargée au bout de quelques heures, vous pouvez ouvrir un autre SR pour qu’un ingénieur support examine le problème.

Update the Problem Summary with: "Upload of ocmconfig.jar - DD-MON-YYYY failed".
Update the Problem Description: enter "Upload of ocmconfig.jar - DD-MON-YYY failed. The SR was saved as Draft at DD-MON-YYY HH24:MI. xx hours later, I still do not see my Configuration in My Oracle Support."

SYSTEMS


Un système est décrit de manière générique comme une collection de composants logiciels et matériels. Un système peut s'étendre sur plusieurs machines physiques. Mais généralement pour Fusion Middleware, un système correspond à un ORACLE_HOME ou un domaine WebLogic.

L’exemple présenté ci-dessous montre une capture d’un domaine OSB avec une instance d’administration montée lors de la capture.

  
Le détail d’un domaine permet de voir les instances associées.


Vue Flat

  
Vue Hosts

  
Ainsi que le détail sur l’instance et les problèmes potentiels



Nous pouvons également voir les composants déployés sur le domaine.

  
TARGET


Composant logiciel installé. C’est l’élément de granularité la plus fine des captures. On y voit les produits comme les librairies utilisées dans les domaines.


PROJET


Vous pouvez définir un projet afin de regrouper les informations de capture, intervenant et date de mise en place (customiser la vue du DashBoard pour faire apparaître la fenêtre si pas déjà présente).

Un Projet est un regroupement de System. Il faut donc avoir une capture contenant des informations sur les domaines (voir Capture).

  
Cela permet de synthétiser les remontées d’information issue du support sur l’ensemble des captures effectué associé au projet. On peut également ouvrir un SR associé au projet sans devoir redéclarer les informations de la plateforme.


PATCH


La vue PATCH (à customiser dans l’onglet Dashboard si pas déjà présente) permet de voir les PATCH à appliquer globalement sur l’ensemble des plateformes issues des différentes captures.

  
Ou spécifique à une entrée d’une vue Projet Target ou System.


Avec la possibilité de valider si les PATCH trouvés sont en conflit avec la plateforme cible et de récupérer un ensemble de PATCH à appliquer en les regroupant.

 COMPARAISON


Sur plusieurs captures, vous pouvez vérifier les différences de plateforme avec l’option de comparaison d’historique.

  
VUE


Afin d’avoir une vue synthétique des captures réalisées (peut-être beaucoup de projets pour un même Customer ID) vous avez la possibilité de les regrouper et les filtrer par type.
  
















Vous pouvez également filtrer par vue


 RESTRICTION


Un Projet est rattaché à un Système qui correspond à un domaine est non à une installation Oracle. On ne peut donc pas créer de Projet générique à une installation, mais forcément à un projet déployé sur un domaine.

Les installations ne sont visibles que dans la vue Target sur les types Oracle Home et par déclinaison de produits (pas de Middleware Home global).

  
CREATION DE PROJETS


Pour simplifier le regroupement de paramétrage issu des collectes, nous pouvons les regrouper par projet (présenté dans les chapitres précédents). Activer la vue projet dans l’onglet Dashboard
  
Installer le produit SOA Suite, et créer un domaine associé déployant toutes les ressources issues du Framework éditeur. Effectuer une capture et remonter là dans Metalink. Une fois que la capture apparaît dans la vue Targets et Systems, créer une entrée dans la vue Projet.

MetalinkàDashboardàProjectsàCreate New Projects

  
Entrer le libelle du projet

  
L’ID support

Sélectionner les domaines capturés à associer au Projet :

  
Les gens associés :

  
Et les dates de début et fin de projet :

  
Vous obtenez ainsi un ensemble de configuration utilisable pour ouvrir des SR ou trouver des PATCH.

  
Pour ouvrir un SR, il suffit de d’aller dans un projet et de créer un SR

  
GESTION DES PATCHS


Pour les PATCH, il faut passer par la vue System ou Target.




jeudi 8 décembre 2011

Il vous manque une librairie ou une classe dans votre environnement Weblogic JEE, et vous ne savez où trouver cette classe nom_package.nom_classe. Plusieurs possibilités pour cela. Nous prendrons par exemple la recherche de : weblogic.xml.saaj.MessageFactoryImpl.


Vous pouvez identifier dans quel package (JAR) le trouver via le site ci-dessus et le télécharger pour l’injecter dans votre CLASSPATH.





Sur votre poste, vous pouvez utiliser l’utilitaire jarscan, qui à partir d’un répertoire et d’un nom de classe, vous donne la liste des packages JAR le contenant.


java -jar jarscan.jar -dir ${FMW_HOME} -file weblogic.xml.saaj.MessageFactoryImpl

searching these jarfiles now ....


===============================================
Found: weblogic.xml.saaj.MessageFactoryImpl
Class: weblogic.xml.saaj.MessageFactoryImpl
Package: weblogic.xml.saaj
Library Name: com.bea.core.weblogic.saaj_1.6.0.0.jar
Library Path: D:\PRODUCT\MIDDLEWARE\SOA\SOA_11.1.1.5\FMW_11.1.1.5\modules\com.bea.core.weblogic.saaj_1.6.0.0.jar
===============================================

===============================================
Found: weblogic.xml.saaj.MessageFactoryImpl
Class: weblogic.xml.saaj.MessageFactoryImpl
Package: weblogic.xml.saaj
Library Name: oracle.webservices.standalone.client.jar
Library Path: D:\PRODUCT\MIDDLEWARE\SOA\SOA_11.1.1.5\FMW_11.1.1.5\oracle_common\modules\oracle.webservices_11.1.1\oracle.webservices.standalone.client.jar
===============================================


CAT & ClasspathDebug

Dans un contexte JEE Weblogic, vous pouvez vous aider de ces deux WebApplication.


CAT ou Weblogic ClassLoader Analysis installé nativement dans Weblogic 10.3.x. Vous pouvez le trouver sous ${WL_HOME}/server/lib/wls-cat.war et le requêter à partir de l’url : http://wls-host:port/wls-cat/





ClassPathBug est une version simplifiée qui fait la même chose, mais directement sous sa WebApplication.

 
 
mercredi 7 décembre 2011

PRINCIPE


(Les versions étudiées sont Weblogic et Oracle DataBase 11G)

Lors de l’utilisation d’une file JMS, les messages sont persistés dans une zone de sauvegarde appelée Store qui permet de conserver et reprendre les données lors de panne d’instance. Le message est sauvegardé lors de la mise en file, puis supprimé lors de sa consommation.

Nous avons deux types possibles :

ü  FileStore     Persistance en fichier.
ü  JDBCStore     Persistance en base.


JDBC STORE



Le JDBC Store nécessite la création d’un DataSource associé à la base qui va héberger les messages. Le DataSource à créer doit être non XA car c’est l’implémentation JMS Weblogic qui supporte l’aspect transactionnel (de toutes les façons, l’IHM de création d’un JDBCStore ne fait apparaître que les DataSource non XA).


Il faudra donc créer un DataSource spécifique pour le JDBCStore non partagé par les applications déployées. Prendre un driver non XA et décocher l’option Supports Global Transactions.

Le JDBCStore n’utilise qu’au maximum 3 connexions et en conserver 2 (connexion qu’il ne relâche jamais et ne remet donc pas dans le pool). Il faudra donc prévoir une taille de pool avec la considération de 3 connexions par JDBCStore.

(Détail de la consommation du Pool avec les 2 connexions constamment en cours d’utilisation)

Comme la connexion est maintenue par la ressource du Store, on pourra mettre un timeout sur la connexion avec le paramètre Statement Timeout afin de libérer celle-ci en cas de non-réponse de la base. Cela s’avère nécessaire lors de l’utilisation du MultiDataSource avec la perte d’un nœud RAC associé à la tombée d’une machine. Dans ce cas de figure, les threads associés à la gestion JMS sont bloqués sur l’accès base en non-réponse.

consoleà${domaine}àServicesàData Sourcesà${DataSource Name}àConfigurationàConnection PoolàAdvanced
àStatement Timeout : 5

  
Dans le cas d’un MutliDataSource, ne pas mettre de load balancing, mais plutôt le failover. Dans le cas de forte volumétrie, dissocier les DataBase et multiplier les serveurs JMS et JDBC Store.

Un problème intervient sur les JDBC Store lorsque la base tombe u. Dans ce cas de figure, le DataSource passe en status Failed v et si un message passe sur la file, le Store se met en échec w. Lors de la remontée de la base x, le DataSource se remet automatiquement y, mais pas le Store z. Il faut dans ce cas remonter l’instance Weblogic.


Dans le cas d’indisponibilité totale de la base ou du RAC (tous les nœuds tombés). Une solution proposée par le support Oracle est d’activer la migration de ressource (Whole Server Migration) qui en cas de panne de ce type cherche à faire un rejeux sur le Store et le réactive sans basculer (à confirmer avec le support). Il n’est donc plus nécessaire de redémarrer l’instance. Il faudra valider cette partie avec un test de robustesse.


Pour les indisponibilités passagères (problème réseau, etc ), lorsque la connexion du DataSource devient inaccessible, un mécanisme de retry de connexion du JDBCStore est mis en jeux. Par défaut, l’attente avant le retry est de 1s. On pourra modifier cette valeur avec un maximum de 15s avec le properties JAVA suivant. On pourra donc positionner cette valeur à 10.

-Dweblogic.store.jdbc.IORetryDelaySeconds=[1-15]


Concernant les DataSource, il est préférable de les paramétrer avec un test systématique et un Trust de connexion à 0 (temps de durée de validation d’une connexion testé) afin d’être sur que la connexion utilisée est valide (sans échec possible de requêtage).

consoleà${domaine}àServicesàData Sourcesà${DataSource Name}àConfigurationàConnection PoolàAdvanced
àSeconds to Trust an Idle Pool Connection : 0
àTest Connections On Reserve : true

Si la base n’est pas en RAC, vous pouvez mettre un Connection Creation Retry Frequency à 600 afin de se reconnecter ultérieurement (attention recommandation de la documentation Oracle mais impliquant une accumulation de transaction avec un dépassement de capacité mémoire ou autre dysfonctionnement possible)

consoleà${domaine}àServicesàData Sourcesà${DataSource Name}àConfigurationàConnection PoolàAdvanced
à Connection Creation Retry Frequency: 600

Le JDBCStore utilise une table qu’il crée au démarrage de l’instance via des scriptes DDL contenu dans  MW_HOME\modules\com.bea.core.store.jdbc_1.0.0.0.jar. On peut les créer manuellement comme le présente l’exemple suivant (en remplaçant le $TABLE par le nom de la table) :

oracle.ddl
# WebLogic JDBC Store DDL for Oracle
# Copyright (c) 2003 by BEA, Inc., All Rights Reserved

CREATE TABLE $TABLE (
  id     int  not null primary key,
  type   int  not null,
  handle int  not null,
  record long raw not null
);

Concernant le nom de la table la convention est la suivante :

${PREFIXE_NAME}WLSTORE

Le Prefixe Name permet de n’avoir qu’une seule table distincte par Store.



JDBCSTORE1WLSTORE

Lorsque la base n’est plus disponible et que le Store passe en Failed, Les messages passent d’un status visible en send transaction. Il faut dans ce cas de figure, exporter les messages en mémoire dans un fichier puis les re importer après redémarrage de la base et de l’instance WLS.


FILE STORE


Par défaut, Weblogic déclare un File Store même si l’on n’a pas déclaré de Store pour le serveur JMS (Store utilisé pour les transactions log JTA ainsi que les messages JMS). Ce Store par défaut se trouve dans le répertoire :

${DOMAIN_NAME}\servers\${INSTANCE_NAME}\data\store\default\_WLS_${INSTANCE_NAME}000000.DAT

Lorsque l’on déclare un FileStore, on peut le spécifier dans un répertoire global à toutes les instances de préférence partagée par toutes les machines de façon à effectuer des reprises en cas de panne machine. Chaque instance devant utiliser un FileStore différent sous peine d’avoir des incohérences dans la diffusion des messages (il vaut mieux créer le répertoire au par avance avant de créer la ressource).

Le nom fichier du FileStore aura la convention suivante ou #### représente un nombre unique de différentiations (dans le cas de nom identique).

${FILESTORE_HOME}\${FILESTORE_NAME}######.DAT

Le File Store définit 3 types de politiques d’écriture qui peut être conservée avec le mode par défaut qui est le Direct-Write (utilisant une librairie native I/O wlfileio2 ).

Pour le répertoire partagé, préférer un disque SAN plutôt que NFS qui n’a pas forcement de support pour les écritures directes et qui peuvent entraîner des lock d’écritures. Si vous avez la possibilité,  essayer de placer les fichiers sur des disques dédiés (voir plateaux) pour de la forte volumétrie afin de dissocier les accès disque.

La taille des fichiers issue du FileStore est gérée par le Store lui-même qui peut s’agrandir selon les besoins, mais jamais diminuer. Prévoir donc un FileSystem conséquent par rapport à votre charge.

STORE


L’action de persistance (File ou Base) est un paramétrage qui peut se définir à plusieurs niveaux.

ü  Dans le code client.
ü  Dans l’objet Factory de connection (${factory}àConfigurationàDefault DeliveryàDefault Delivery Mode : Persistent)
ü  Dans les Queues/Topic (${factory}àConfigurationàOverrideàDefault Delivery Mode : Persistent)

La durée de rétention est différente selon les cas. Dans le cas des Topic, le message est persisté jusqu’a ce que tous les souscripteurs ont consommé le message. Dans le cas des Queues, le message est retiré du Store une fois consommé. Dans tous les cas, le message est retiré en cas d’expiration ou suppression administrative.

Chose importante pour la volumétrie mémoire, les Header JMS sons conservés en mémoire, ainsi qu’un certain nombre de messages même s’ils sont persisté dans le Store (pour des considérations de performance).

FILE VS JDBC


Le choix entre les deux types de Store peut se résumer à un besoin de performance ou de fiabilité et de souplesse de reprise sur erreur.

Le mode File est plus performant et plus tolérant par rapport à une indisponibilité de base (à condition d’avoir un File System performant sans perte au niveau des caches en écriture). Il a le désavantage de devoir mettre en place un File System partagée pour les reprises en cas de panne machine. On le choisira pour de fortes volumétries et des contraintes de temps de réponse.

Le mode JDBC à l’avantage d’avoir un mode centralisé natif (via la database) et facilite les reprises en cas de panne machine, mais avec des temps moins performants par rapport au mode File. Il supporte difficilement les pertes momentanées des bases avec comme contrainte de devoir redémarrer les instances. On le choisira pour des besoins de sécurisation sans avoir de contrainte de temps de réponse (de préférence à utiliser avec une base clustérisée pour éviter les indisponibilités et redémarrage intempestif).


FILE
JDBC
Sécurisation

X
Performant
X

Tolérance aux pannes
X

Reprise Sur Erreur

X

AUTEUR

Ma photo
Carrières Sur Sein, Yvelines, France
Consultant Oracle (Ancien consultant BEA depuis 2001), je m’occupe des expertises sur les produits Oracle : SOCLE (Weblogic, Coherence, JRockit) SOA (Service Bus, SOA Suite, BPM)
MON CV

LABEL 3D

Blogumulus by Roy Tanck and Amanda Fazani

LABEL CLOUD

MAP

Locations of visitors to this page

AUTRES BLOG

LIVRES

MEMBRES