Rechercher sur arkzoyd.com

27 janvier 2007

M$ RAC Vibration...

Je reste persuadé que c'est Microsoft qui fera le succès de la technologie Real Application Clusters !
  • Non pas que RAC soit compliqué !
  • Non pas que qu'il ne permette pas de contruire l'équivalent des machines les plus puissantes à partir de serveurs standard ! (Il en existe de nombreuses preuves désormais)
  • Non pas que les administrateurs Oracle ne soit pas ravi d'utiliser RAC

Mais parce que le jour où Microsoft vous dira que vous pouvez utiliser 8 machines comme une seule... RAC deviendra tellement évident (ci-joint la transcription PDF de cette idée) !

Et la bonne nouvelle c'est que Microsoft a probablement déjà adopté l'idée depuis longtemps ; Une interview de Stan Sorensen en Juin 2003 lui fait dire : "This configuration of lashing together several servers to increase processing power is touted by Microsoft competitor Oracle, and will be considered for future versions of SQL Server" [NDLR après SS2K5].

D'autres signes continuent à indiquer cette piste et notamment la capacité de SQL Server 2005 dites SSD (Scaleable Shared Databases) qui permet de monter plusieurs instances sur la même base de données (certes en lecture seule, sans coordination - une requête ne peut pas être parallélisée sur plusieurs machines-, ni loadbalancing). Polyserve complète cette approche avec son Cluster Filesystem.

Dommage que Microsoft mette 5 ans pour faire évoluer son SGBD... J'ai hâte de voir le combat SQL Server contre System Z...

GarK!

26 janvier 2007

Oracle E-Business Suite Release 12 est "GA"

Après bientôt 10 ans d'Oracle Application 11.0... Le numéro 12 (mythique ?) va bientôt être estampillé sur la suite applicative d'Oracle désormais dite E-Business Suite. A cette nouvelle et bien d'autre sur son contenu à cette URL : http://blogs.oracle.com/schan/release12, j'ai décidé de franchir le pas et de l'installer...

2H30, RAC et 4 laptops plus tard... l'écran de connexion apparaît !

J'ai oublié le mot de passe mais, c'est décidé, je m'inscris à la formation ce soir !

GarK!

23 janvier 2007

XQuery 1.0 devient "Final Recommendation"

XQuery 1.0 devient "Final Recommendation", c'est à dire un standard définitif du W3C... C'est également le cas pour XPath 2 et XSLT 2...

GarK!

Oracle Forms et Java Server Faces

Je suis scotché par ce qui a été fait pour mixer les interfaces Oracle Forms et Java Server Faces... Regardez la démo Flash du site d'OraTransplant.

GarK!

Pourquoi regarder "Oracle Management Pack For Linux" ?

... Une fois encore Jean-Philippe m'a devancé pour annoncer une nouveauté Oracle. A croire qu'il a de bons contacts. ;-) Enfin, cette fois, il tremble un peu quand il annonce les fonctionnalités du Pack pour Linux...

Quoi de neuf dans l'annonce "Oracle Management Pack For Linux" ? Techniquement rien, vous pouviez déjà et encore maintenant :
  • Vous pouvez installer Linux à distance alors que la machine n'a encore aucun OS (bare-metal)
  • Vous pouvez patcher Linux
  • Vous pouvez superviser Linux
  • Vous disposez de tableaux de bord
  • Vous pouvez gérer 100 machines comme 1
Alors quel intérêt de regrouper ce que vous pouviez déjà faire dans un Pack spécifique pour Linux ? Et bien... les €€€€ !
1°) Si vous utilisez Oracle Enterprise Linux plutôt que Redhat Enterprise Linux ou Advanced Server, les licences et le support vous reviennent moitié prix.
2°) Si vous souscrivez au support Oracle Enterprise Linux, vous disposez de cette capacité unique de gérer un ensemble de systèmes d'exploitation à distance "inclut dans le prix" à travers le dit "Pack for Linux".

-GarK!

21 janvier 2007

2007+11

Pour passer en 11 en 2007 avant tout le monde (ou presque), inscrivez-vous au programme Beta d'Oracle http://otnbeta.oracle.com/bpo/prospects/index.htm

GarK!

20 janvier 2007

Première version d'Oracle Sunopsis...

Oracle Data Integrator (aka Sunopsis Data Conductor) est diponible sur OTN... Un coup d'oeil rapide : téléchargez et testez en suivant l'exemple du "Getting Started"... J'y retourne

GarK!

18 janvier 2007

De l'inutile à l'utile /*+Changez !*/

Si vous connaissez Oracle (database), ce blog est inutile... vous le savez et moi aussi ! Pour la petite histoire, c'est pour ça que j'essaie de garder un minimum d'anonymat. Même si un auteur et Google ont mis fin à ça depuis plusieurs années.

Par contre... Celui de Jonathan Lewis est juste fantastique ! Et en plus, comme Tom Kyte, il ne se passe pas un jour sans qu'il ne m'apprenne un truc malin. Son "Post" à propos des "Silver Bullet" est juste "juste"...

Je vais donc - au cas où - vous donner 2 conseils utiles
1°) Abonnez-vous à son blog plutôt qu'au mien
2°) Achetez son livre à propos du Cost Based Optimizer

Et tant que je suis à dire des trucs utiles (C'est pas tous les jours)... Si, comme moi, votre coeur balance entre Java et la base de données Oracle, le livre et le blog de Kuassi Mensah sont aussi excellents...

GarK!

Exit les validations du stockage par Oracle...

Les programmes Oracle Storage Certified Program (OSCP) et Low Cost Resilient Storage sont terminés (regardez ici !). Autrement dit, pour assurer qu'on peut mettre une base de données Oracle sur une technologie de stockage, plus besoin de l'accord d'Oracle ! (Vérifiez quand même le support du fournisseur)

GarK!

13 janvier 2007

Mentir... pour captiver

Dans un article de son blog intitulé "My Favorite Liar", PJammer explique l'intérêt d'annoncer qu'on va mentir pour captiver étudiants et stagiaires. L'histoire est assez drôle lorsque l'annonce du mensonge devient elle même un mensonge. Quoiqu'il en soit, mentir (ou raconter des conn...) même pour un expert est probablement difficile à éviter. L'héritage de Confusius est-il dans ces quelques paragraphes ? Quoiqu'il en soit, j'en ai fait les miens !

GarK!

Teradata "spin off" de NCR /*+Pourquoi ?*/

La nouvelle annoncée par NCR il y a quelques jours de la création d'une "spin-off" pour Teradata fait fantasmer. Pourquoi créer une spin-off avec une activité très rentable ? Pour changer l'actionariat ?
  • Forbes cite à titre d'exemple SAP, IBM ou Oracle
  • HP pourrait être également un sérieux candidat : (1) Mark Hurd connait bien Teradata, (2) Avec NeoView, ils ont montré leur volonté d'entrer sur ce marché et (3) l'acquisition récente de Peregrine et Mercury crédibilise cette possibilité
  • Plusieurs acteurs de la Business Intelligence pourraient également en profiter pour faire parti des "gros" : Business Object, Cognos ou Hyperion
  • Microsoft a les moyens d'acheter presque tous les acteurs de l'IT... Et en plus, ils annoncent dès janvier un partenariat stratégique (comme si un partenariat pouvait être autrement que stratégique) avec Teradata (http://www.microsoft.com/presspass/press/2007/jan07/01-15MSTeradataPR.mspx)
Une chose est sure, l'action de la future spin-off devrait avoir un comportement intéressant et générer du cash pour NCR peut-être Teradata... Voilà qui va encore, un peu plus, réduire l'intérêt technique du choix d'une solution de data warehouse

GarK!

10 janvier 2007

Oracle Net... Failover !

oracle$ sqlplus scott@orcl

SQL*Plus: Release 10.2.0.3.0 - Production on Mer. Janv. 10 22:07:32 2007

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

Entrez le mot de passe : *****

Connecté à :
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> exit;

Regardez la configuration réseau... Continuïté de service et transparence d'une panne sont 2 choses différentes. SQL*Plus n'assure pas la transparence d'une panne; votre application peut l'assurer simplement !

GarK!

07 janvier 2007

ORA-03113 End of communication channel

You are no longer connected to Oracle

SQL> exit;

[oracle@arkzoyd ~] $

GarK!

Déployer une application JDeveloper sur JBoss

Vous trouverez ci-dessous quelques notes pour répondre à une question qu'on m'a posée récemment : "Comment déployer une application EJB3 sur JBoss lorsqu'on développe avec JDeveloper ?"

Etape 1 - Installer JBoss 4.0.5 avec le support d'EJB3
Dans l'installation réalisée, JBoss inclut EJB3 et JPA (l'implémentation d'Hibernate et pas celle de Toplink...).

Pour installer JBoss, on peut lancer l'"Installer" depuis un navigateur Web grâce à JemsInstaller lancé directement grâce à une version JLNP. Pour faciliter l'installation, commencez par installer le JDK 5.0. Vous pouvez le télécharger sur le site de Sun à l'URL qui suit http://java.sun.com/javase/downloads/index_jdk5.jsp

Pour ce qui suit, JBoss 4.0.5 a été installé sur Windows grâce à JemsInstaller 1.2 RC1. Pour cela lancer le en cliquant simplement sur le lien correspondant dans la page ci-après : http://labs.jboss.com/portal/jemsinstaller/downloads.

1°) Sélectionnez d'abord la langue d'installation comme dans la copie d'écran ci-dessous.



2°) Passez la page d'accueil de JEMSInstaller
3°) Passez la page de Release Notes
4°) Acceptez la licence de JBoss
5°) Sélectionnez un répertoire pour l'installation de JBoss 4.0.5
6°) Sélectionnez l'option d'installation de JBoss 4.0.5 qui inclut les EJB3 comme indiqué dans la copie d'acran ci-dessous.



7°) Gardez l'ensemble des packages sélectionnés à installer
8°) Gardez le nom de l'application par défaut (default)
9°) Créez une source de données.
9a°) Sélectionnez le bouton radio "Configure".
9b°) Sélectionnez "Oracle" comme base de données
10°) Donnez un nom à votre DataSource par défaut et paramétrer la configuration de cette source comme dans l'exemple ci-dessous.



11°) Dans les écrans suivants, laissez les options par défaut et donnez un mot de passe pour l'administrateur de JBoss (e.g. admin/admin)
12°) Terminez l'installation.

Une fois l'installation terminée, copier les bibliothèques JDBC d'Oracle (le fichier ojdbc10.jar) dans le répertoire %JBOSS%serverdefaultlib. Vous pouvez modifier les sources de données dans le fichier %JBOSS%serverdefaultdeployjboss-ds.xml.

Etape 2 - Démarrer JBoss 4.0.5

Pour démarrer JBoss, il suffit d'utiliser une fenêtre de commande Windows et de lancer les scripts comme ci-dessous.
1°) Positionnez la variable JAVA_HOME et faîtes la pointer vers le JDK 5.0, comme dans l'exemple ci-dessous :
set JAVA_HOME=D:u01oracleproductjdeveloperjdk
2°) Positionnez la variable PATH pour prendre en compte JAVA_HOME comme ci-dessous :
set PATH=%JAVA_HOME%bin;%PATH%
3°) Naviguez dans le répertoire "bin" de JBoss
set JBOSS_HOME=D:u01oracleproductjboss-4.0.5
cd %JBOSS_HOME%bin
4°) Démarrez JBoss avec la commande run.bat
run

Etape 3 - Développer un EJB Session très simple et Créer un EJB-JAR

Avec JDeveloper 10.1.3.1.0, développez un EJB session stateless est très simple. Une fois un projet créé, lancez l'assistant de création d'un EJB :
1°) Sélectionnez "File | New... | (Filter By : All Technologies) Business Tiers | EJB | Session Bean (EJB 1.1/2.x/3.0)" pour lancer l'assistant de créatin d'un EJB 3.0
2°) Remplissez les écran de l'assistant comme, par exemple dans ce qui suit
  • Passez l'écran de bienvenue
  • Sélectionnez le bouton radio "Enterprise Javabeans 3.0 (J2EE 5.0)" et cliquez sur le bouton "Suivant"
  • Donnez un nom à l'EJB (e.g. SessionEJB), sélectionnez "Session Type - Stateless" et "Transaction Type - Container". Cliquez sur le bouton "Suivant"
  • Donnez le nom "SessionEJBBean" à l'EJB (pour un test, inutile d'utiliser un package. Cliquez sur le bouton "Suivant"
  • Sélectionnez la création d'une interface "Remote" qui aura pour nom SessionEJB et "Locale" qui aura pour nom SessionEJBLocal. Cliquez sur le bouton "Suivant"
  • Cliquez sur "Fin" pour générer l'EJB
3°) Une fois l'EJB créé, Sélectionnez-le dans l'"Application Navigator" en double cliquant sur l'EJB. Le code source s'affiche et, si vous utilisez le panneau Structure avec le menu "View | Structure", par exemple, vous verrez sous le dossier "Source" le fichier qui implémente l'EJB ainsi que les 2 fichiers d'interface "remote" et "local".
4°) Ajoutez une méthode à l'implémentation de l'EJB. Voici, ci-dessous, un exemple de méthode que vous pouvez ajouter à SessionEJBBean
public String getStatus () {
return "OK";
}
5°) Ajoutez les spécifications de la méthode aux interfaces remote SessionEJB.java et locale SessionEJBLocal.java
public String getStatus ();

Créez ensuite un profil de déploiement de type EJB-JAR pour le déployer sur JBoss :
1°) Sélectionnez "File | New... | (Filter By : All Technologies) General | Deployment Profiles | EJB JAR File"
2°) Donnez un nom au profil de déploiement, par exemple "arkzoyd"
3°) Laissez l'ensemble des options par défaut comme dans la copie d'écran ci-dessous et cliquez sur "OK"




Etape 4 - Créer une connexion vers JBoss depuis déployez l'application depuis JDeveloper

Pour créer une connexion à JBoss sur JDeveloper, cela suppose que JBoss fonctionne sur la même machine. Si ce n'est pas le cas, il suffira de copier l'EAR généré dans le répertoire de déploiement de JBoss. Voici comment créer une connexion vers JBoss sur la même machine.
1°) Sélectionnez le "Connection Navigator" et sélectionnez le menu "File | New... | General | Connections | Application Server Connection"
2°) Remplissez l'assistant de connexion à un serveur d'applications avec les options ci-dessous
  • Donnez un nom (e.g. jboss) à la connexion et indiquez dans la liste déroulante qu'il s'agit d'une connexion de type "JBoss 4.0.x"
  • Définissez le répertoire de déploiement de JBoss, c'est à dire le sous-répertoire "serverdefaultdeploy" du répertoire d'installation de JBoss, e.g. "D:u01oracleproductjboss-4.0.5".
  • Cliquez sur le bouton "Fin" pour créer la connexion à JBoss

Pour déployer l'application, Sélectionnez le descripteur de déploiement (arkzoyd.deploy) créé dans l'étape précédente. Utilisez le menu contextuel à l'aide du bouton droit de la souris sur le descripteur de déploiement et sélectionnez "Deploy to -> (nom du profil créé précédemment, e.g. jboss)". Le fait que le fichier EAR est déployé s'affiche dans la console JBoss comme sur la copie d'écran ci-dessous :



Etape 5 - Valider que l'EJB est bien enregistré dans l'arbre JNDI de JBoss

1°) Lancez la console JMX de JBoss en sélectionnant l'URL par défaut de la console : http://:/jmx-console et indiquez les nom d'utilisateur et mots de passe de l'administrateur JBoss (e.g. admin/admin).
2°) Sélectionnez ensuite le lien "service=JNDIView" dans le menu jboss
3°) Dans la section "List Of MBean Operations", "Output JNDI info as text", sélectionnez le paramètre verbose à "True" et cliquez sur le bouton "Invoke"
4°) La section "Global JNDI Namespace" indique qu'un EJB SessionEJB est disponible avec la chaîne "arkzoyd/SessionEJB" comme ci-dessous

S

Etape 6 - Créez un client Java de l'EJB

1°) Créez un nouveau projet nommé "client" dans le même "workspace".
2°) Sélectionnez l'EJB "SessionEJBBean" dans le projet et avec le bouton droit de la souris, ouvrez le menu contextuel et cliquez sur le menu "New Sample Java Client..."
3°) Paramétrez les champs de l'assistant :
  • choisissez le projet "client.jpr"
  • donnez un nom au client de l'EJB (e.g. SessionEJBClient)
  • Sélectionnez "Connect to Remote app Server" et sélectionnez l'application "arkzoyd"
  • Sélectionnez "Use ApplicationClientInitialContextFactory for EJB lookup"
  • Cliquez sur "OK"
4°) Modifiez le code généré dans le client comme indiqué ci-dessous :
  • Créez un objet Properties et alimentez les variables ci-dessous
    • Context.INITIAL_CONTEXT_FACTORY et positionnez la valeur "org.jnp.interfaces.NamingContextFactory"
    • Context.URL_PKG_PREFIXES et positionnez la valeur "org.jboss.naming:org.jnp.interfaces"
    • Context.PROVIDER_URL et positionnez la connexion à JBoss. Attention, cette valeur doit prendre en compte le nom de votre machine et le paramétrage de JBoss. Par exemple sur mon serveur la connexion est "jnp://aofr12992:1099"
  • Ajoutez l'instance de properties créée précédemment pour créer le context initial du client :
    • final Context context = new InitialContext(p);
  • Recherchez la ressouce JNDI "arkzoyd/SessionEJB/remote"pour accéder à l'EJB à distance à l'aide de la commande :
    • SessionEJB sessionEJB = (SessionEJB)context.lookup("arkzoyd/SessionEJB/remote");

La méthode "main" du client est donc au final le suivant :
public static void main(String [] args) { try { Properties p=new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); p.put(Context.PROVIDER_URL,"jnp://aofr12992:1099"); final Context context = new InitialContext(p); SessionEJB sessionEJB = (SessionEJB)context.lookup("arkzoyd/SessionEJB/remote"); // Call any of the Remote methods below to access the EJB System.out.println( sessionEJB.getStatus( ) ); } catch (Exception ex) { ex.printStackTrace(); }
}

Etape 7 - Appeler l'EJB inclut dans JBoss depuis le client créé précédemment


Avant d'utilisez le client, il faut inclure les JAR suivants dans le CLASSPATH du client :
  • jbossall-client.jar
  • jboss-aop-jdk50-client.jar
  • jboss-aspect-jdk50-client.jar
  • jboss-ejb3-client.jar
Ces fichiers sont situés dans le répertoire "client" de JBoss.

Pour mettre les 4 fichiers précédents dans le CLASSPATH, créez une librairie "JBossEJB3" à partir du menu "Tools | Manage Librairies..." puis ajoutez les 4 fichiers JAR dans le Classpath de la librairie. Vous trouverez ci-dessous une copie d'écran de la librairie Java créée.


Avant de lancer le programme client, modifiez les librairies associées au projet en uilisant le menu contextuel sur le projet "Client" grâce au clic droit de la souris. Sélectionnez le menu "Project Properties...". Mettez à jour les librairies du projet client comme dans la copie d'écran ci-dessous :



Pour terminer le test, exécutez le client SessionEJBClient depuis JDeveloper avec le menu contextuel. Si tout fonctionne correctement, la console doit afficher le mot "OK" renvoyé par l'EJB Session exécuté par JBoss.

(1) Biensûr, le fait que OC4J soit complètement piloté par JDeveloper apporte d'autres fonctions qui facilitent le développement et les différents types de tests. (2) Vous pouvez récupérer le code source des 2 exemples, l'EJB et le client dans le workspace Jdeveloper 10.1.3.1.0 à l'URL suivante (Pour le faire fonctionner, modifiez dans le projet client l'URL de connection à JBoss et Ajoutez les fichiers JAR qui permettent au clients d'accéder à JBoss à distance). Quoiqu'il en soit, même ce qui précède est une illustration simple. L'intérêt de Java y trouve une illustration puisque l'intéropérabilité est évidente.

GarK!