Rechercher sur arkzoyd.com

24 avril 2007

Oracle seul contre tous...

Dans la série, les concurrents,
  • BO rachète Cartesis un ensemble d'outils spécialisés dans le reporting statutaires de la consolidation budgétaire au développement durable pour la même raison qu'Oracle a acheté Hyperion (Et oui, ce n'était pas pour EssBase).
  • HP pendant ce temps pousse NeoView, sa nouvelle offre BI basée sur Tandem (Je suis trop jeune pour connaître) contre Teradata, Netezza et j'imagine Oracle. Mark Hurd veut sans doute faire d'HP un clone de la spin-off de NCR ! A moins que ce soit une nouvelle (première) vie pour Itanium !
  • IBM (Rien à voir avec Oracle, mais je trouve l'idée intéressante) proposera bientôt de faire tourner des applications rapides sur x86/Linux, lentement sur Power/Linux grâce à une couche de virtualisation System p AVE. Un avantage peut-être pour ceux qui ne sauraient pas se servir d'un compilateur ? Ca sera sûrement plus cher !
J'oubliais... pour l'instant le vrai rival d'Oracle, c'est Emirates Team New Zealand dans la Vuitton's Cup.

GarK!

Content Management et Business intelligence

Quelques nouvelles versions techno Oracle :
Trop difficile à suivre pour moi.

GarK!

20 avril 2007

Valeurs des variables bind sans 10046

Positionner un event 10046 level 12 n'est pas toujours évident pour récupérer les valeurs des variables binds en particulier s'il y a beaucoup de requêtes SQL. Une autre solution consiste à
1) Positionner le paramètre statistics_level à ALL au niveau du système ou de la session.
2) Repérer l'ordre dans la vue V$SQL et récupérer les paramètre SQL_ID ou HASH_VALUE
3) Utiliser la fonction DBMS_SQLTUNE.EXTRACT_BINDS comme dans l'exemple ci-dessous :

col bind format a50 word wrapped
select dbms_sqltune.extract_binds(bind_data) bind,
sql_text
from v$sql
where sql_id='7uf1n8gz384jf';

Le résultats de la fonction retourne quelque chose qui resemble à ce qui suit :
Voici un exemple de
SQL_BIND_SET(
SQL_BIND(NULL, 1, NULL, 1, 'VARCHAR2(128)', 46, NULL, NULL, 128, '18/04/2007 12:27:23', '0007GTBK', ANYDATA()),
SQL_BIND(NULL, 2, NULL, 1, 'VARCHAR2(128)', 46, NULL, NULL, 128, '18/04/2007 12:27:23', '5', ANYDATA()))

Le 5e champs du type SQL_BIND est le type de la variable BIND. Le 11e champ sa valeur.

GarK!

Pour information, la requête fonctionne bien avec SQL*Plus mais SQL*Developer 1.1 n'affiche pas les valeurs (une fonctionnalité pas encore disponible, un bug bientôt corrigé ou une incompétence de ma part ?).

/*+ dynamic_sampling(n) */

J'ai déjà parlé du "dynamic sampling". Bien comprendre son principe et ses effets est très important puisque si des tables n'ont pas de statistisques, le moteur 10g est généralement amené à utiliser cette méthode pour évaluer les statistiques tout en créant le plan d'exécution (cf paramètre optimizer_dynamic_sampling qui est à 2 par défaut en 10.2).

L'exemple de l'époque était assez compliquer. Dans ce qui suit, voici un exemple bien plus simple. Il a été réalisé avec Oracle 10.2.0.3

Setup du cas
create table gark (a number, b number);

insert into gg
(select rownum, rownum
from dba_objects, dba_objects, dba_objects
where rownum<=150000);

commit;

create index gark_idx on gark(a);

exec dbms_stats.gather_table_stats(USER, 'GARK', -
estimate_percent=>null, -
cascade=>true, -
no_invalidate=>false, -
method_opt=>'for all columns size 254')

La requête
Examinez ensuite les plans et statistiques de la requête suivante (1) sans dynamic sampling

select /*+ no_hint */ count(a.ROWID)
from gark a, gark b
where a.a=a.b
and b.a=a.a and b.a=b.b;

Puis avec dynamic sampling
select /*+ dynamic_sampling(10) */ count(a.ROWID)
from gark a, gark b
where a.a=a.b
and b.a=a.a and b.a=b.b;

Et voilà, le résultat est très impressionnant, non ? Réfléchissez avec quelle méthode intelligente (C'est à dire pas USE_HASH... Et si la distribution corrélée de a et de b a complètement changée dans 3 heures !). Un commentaire peut-être ?

GarK!

12 avril 2007

Add-In SQL*Developer / *+ Track 5 */

Il est possible d'ajouter des rapports dans une Add-In et ainsi, par un simple "update" d'ajouter des rapports à SQL*Developer. Dans ce thread, vous trouverez (1) une add-in à ajouter à SQL*Developer et (2) l'explication de comment cette add-in est développée.

Importer l'add-In dans SQL*Developer
Le site d'update est le suivant http://arkzoyd.free.fr/center.xml. Pour ajouter l'Add-in, il suffit de lancer SQL*Developer et de sélectionner "Help | Check for Updates...". Sur le second écran, ajoutez un site de mise à jour avec l'URL ci-dessus.


Ajoutez "Additional Reports 0.1" et redémarrer SQL*Developer.

Dans le navigateur des "Reports", un nouveau menu "Shared Reports | AWR Reports" apparait.

Développer l'add-In
Vous trouverez le projet JDeveloper ici. En substance, opérez comme suit :
  • Créez un projet et ajoutez dans les bibliothèques les bibliothèques de SQL*Developer.
  • Ajoutez un fichier allreports.xml dans le répertoire src\arkzoyd\sqldeveloper\reports et y mettre le contenu d'un export de rapports développés avec SQL*Developer
  • Ajoutez une classe ReportsAddin dans le package arkzoyd.sqldeveloper.reports. Cette classe étend oracle.ide.Addin.
  • Importez oracle.report.addin.ReportAddin
  • Implémentez la méthode "public void initialize()". Elle exécute ce qui suit : ReportAddin.registerReport(this.getClass().getResource("allreports.xml"));
  • Ajoutez un fichier extension.xml dans le répertoire src\META-INF. Ce fichier contien un descripteur de l'add-in avec les informations suivantes
    • l'"id" de l'extension est arkzoyd.sqldeveloper.reports
    • la balise addin contient arkzoyd.sqldeveloper.reports.ReportsAddin
  • Ajoutez un profile de déploiement de type "JAR File" nommé arkzoyd.sqldeveloper.reports.jar et stocké dans $SQLDEV_HOME/sqldeveloper/extensions
  • Déployez le jar dans SQL*Developer et vérifiez que les rapports sont intégrés dans la liste des rapports
Enregistrer l'Add-In sur le web
  • Mettez le fichier arkzoyd.sqldeveloper.reports.jar dans un fichier repaddins.zip dans un répertoire sqldeveloper/extensions
  • Mettez le fichier repaddins.zip sur un site web (le fichier est disponible ici)
  • Développez un fichier center.xml qui contient une référence au fichier jar précédent
  • Mettez le fichier center.xml sur le web (il est disponible ici)
-GarK!

11 avril 2007

Rapports SQL*Developer /*+ Track 4 */

AWR peut facilement être interrogé et j'attends (toujours) avec impatience la version de SQL*Developer qui offrira en Built-in toutes les fonctionnalités des tuning et diagnostic Packs d'Oracle 10g !

D'ici à ce jour merveilleux, il est facile d'ajouter des rapports qui interrogent les vues DBA_HIST_xxx d'AWR et générer par exemple le rapport ci-dessous qui présente sur un graphique les 30 requêtes les plus consommatrice (Buffer Gets), leur historique d'utilisation et le pourcentage que chacune d'elle représente sur le nombre total de Buffer Gets :


Pour utiliser ce Report, il suffit
  • de télécharger le fichier AWRReport.xml ici
  • de lancer SQL*Developer
  • de sélectionner le Navigator "Reports"
  • de sélectionner le dossier "User Defined Reports" et avec le menu contextuel, sélectionner Import et importer le fichier téléchargé précédemment
  • de sélectionner le menu "File | Save All"
  • de lancer le rapport "AWR Reports | SQL Analyse | Top30 SQL (Buffer Gets)"
Si vous avez des idées de rapports, vous pouvez très simplement les développer ou me les soumettre.

-GarK!

07 avril 2007

Add-In SQL*Developer / *+ Track 3 */

Dans ce troisième track consacré au développement d'une Add-In pour SQL*Developer, nous allons continuer l'exploration des exemples fournis dans Jdeveloper Extension SDK et développer une Add-In qui ajoute des informations au menu "Tools | Preferences..." et les conserve après l'arrêt/relance de SQL*Developer. Dans ce cadre, nous allons nous inspirer de l'exemple "ConfigPanel" pour créer cette Addin.


Avant d'aller plus loin, reportez-vous au track ="Add-In SQL*Developer /*+ Track 1 */" qui décrit plus en détail comment développer une Add-In. Pour effectuer ces opérations, nous allons faire ce qui suit :

  • Créer un projet
  • Ajouter la bibliothèque "JDeveloper Extension SDK"
  • Ajouter un fichier extension.xml
  • Créer un profil de déploiement pour le projet
  • Ajoutez une classe "MyPrefData"
  • Créer une classe "MyPrefPanel"
  • Ajoutez la classe "Addin03" qui inplémente l'Add-In
  • Déployer l'Add-in et la tester
Créer un projet
Sélectionner l'application "addins-application" créer un projet nommé "addin03".

Ajouter la bibliothèque "JDeveloper Extension SDK"
Sélectionner "Project Properties" sur le projet addin03 et ajoutez la bibliothèque Jdeveloper Extension SDK à la section Libraries. Décocher la case export pour ne pas déployer la bibliothèque avec l'application.

Ajouter un fichier extension.xml
Sélectionner le projet "addin03" et ajouter un fichier extension.xml dans le répertoire src/META-INF. Le répertoire n'existe pas, créez-le. Le fichier extension.xml est disponible ici. Il ajoute l'addin arkzoyd.sqldeveloper.addins.addin03 à SQL*Developer.

Créer un profil de déploiement pour le projet
Sélectionner le projet "Addin03" et ajouter un profil de déploiement "JAR File" nommé addin03.
Lui donner le chemin suivant comme nom du jar déploiyé : "%SQLDEV_HOME%\sqldeveloper\extensions\arkzoyd.sqldeveloper.addins.addin03.jar" (arkzoyd.sqldeveloper.addins.Addin03 correspond au paramètre id de la balise extension du fichier extension.xml).

Ajoutez une classe "MyPrefData"
Créer une nouvelle classe et nommez-la MyPrefData. Cette classe étend oracle.ide.config.ChangeEventSource et implémente oracle.ide.util.Copyable. Ces méthode et propriétés sont les suivantes :
  • public static final String KEY = "myAddin03";
  • private String data = "";
  • public Object copyTo(Object target)
    {
    final MyPrefData copy =
    (target!=null?(MyPrefData)target:new MyPrefData());
    copyToImpl(copy);
    return copy;
    }
  • protected final void copyToImpl(MyPrefData copy)
    {
    copy.data = data;
    copy.fireChangeEvent();
    }
  • public String getData()
    {
    if (data.trim().length() == 0)
    data = "";
    return data;
    }
  • public void setData(String d)
    {
    data = d.trim();
    }
Cette classe représente les données que nous allons stocker dans SQL*Developer

Ajoutez une classe "MyPrefPanel"
Créer une nouvelle classe et nommez-la MyPrefPanel; Cette classe étend oracle.ide.panels.DefaultTraversablePanel :
  • Affichez-le "Properties Inspector" et cliquez sur l'Onglet "Design" sur l'éditeur qui affiche le contenu de la classe créée précédemment. Sélectionnez le panneau qui s'affiche et dans le properties Inspector, mettez la variable layout à "GridBagLayout".
  • Afficher la palette de composants et poser sur le panneau, dans l'ordre :
    • un objet JLabel
    • un objet JTextField
  • Modifier les propriétés des 2 objets créés précédemment pour que l'affichage ressemble à la copie d'écran ci-dessous :

  • Ajoutez les 2 objets suivant à la classe :
    • public static final String TITLE = "ArKZoYd Config";
    • private ButtonGroup group = new ButtonGroup();
  • Pour terminer, supprimer toutes les listener sur les 2 objets créés précédemment et ajoutez les 4 méthodes onEntry(), onExit(), load(), commit() :
    public void onEntry(TraversableContext tc)
    {
    final MyPrefData options =
    (MyPrefData) tc.find(MyPrefData.KEY);
    load(options);
    }

    public void onExit(TraversableContext tc)
    {
    final MyPrefData options =
    (MyPrefData) tc.find(MyPrefData.KEY);
    commit(options);
    }

    private void load(MyPrefData options)
    {
    jTextField1.setText(options.getData());
    }

    private void commit(MyPrefData options)
    {
    options.setData(jTextField1.getText());
    }
Ajoutez la classe addin03.java qui inplémente l'Add-In

Pour terminer l'add-in, il faut créer une classe Addin03.java qui hérite de Addin. Ajouter un identifiant pour les données stockées dans SQL*Developer :
  • private static final String EXTENSION_ID = "arkzoyd.sqldeveloper.addins.Addin03";
Addin03 classe implémente dans la méthode initialize() avec les opérations qui suivent :
  • On crée (ou retrouve) un objet ClientSetting à partir des informations stockées dans SQL*Developer avec la clé EXTENSION_ID
    ClientSetting clientSetting = ClientSetting.findOrCreate( EXTENSION_ID );
  • Si dans les setting, la valeur représentée par KEY n'existe pas, on la crée sinon c'est qu'elle a déjà été créée lors d'une utilisation précédente.
    if (clientSetting.getData(MyPrefData.KEY) == null)
    {
    clientSetting.putData(MyPrefData.KEY, new MyPrefData());
    }
  • On ajoute au panneau de préférence le panneau MyPrefPanel créé précédemment. Le nom de ce panneau est une chaine stockée dans la classe et nommée TITLE :
    Navigable myIdeSettingsPanel = new Navigable(MyPrefPanel.TITLE, MyPrefPanel.class);
    IdeSettings.registerUI(myIdeSettingsPanel);
Déployer l'Add-in et tester
Déployer le fichier Jar dans les extensions de SQL*Developer. Lancer SQL*Developer et sélectionner le menu "Tools | Préférences...". L'écran des préférences apparaît et inclu un nouveau panneau comme ci-dessous.



Pour vérifier que les données sont stockées dans SQL*Developer, modifier le champ, arrêter SQL*DEveloper, relancez-le et revenez sur le même écran de SQL*Developer.

-GarK!

Vous pouvez télécharger l'ensemble du projet ici
Vous pouvez télécharger l'Add-In ici (Si vous l'ajoutez dans $SQLDEV_HOME\sqldeveloper\extensions et vous verrez le résultat)

05 avril 2007

Add-In SQL*Developer / *+ Track 2 */

Dans ce second track consacré au développement d'une Add-In pour JDeveloper, nous allons continuer l'exploration des exemples fournis dans Jdeveloper Extension SDK et développer une Add-In qui ajoute un site au menu "Help | Check for Updates...". Dans ce cadre, nous allons nous inspirer de l'exemple "UpdateCenter" pour créer une Add-In qui ajoute notre propre site de mise à jour.

Avant d'aller plus loin, reportez-vous au track précédent intitulé "Add-In SQL*Developer /*+ Track 1 */" qui décrit plus en détail comment développer une Add-In. Pour effectuer ces opérations, nous allons faire ce qui suit :
  • Créer un projet
  • Ajouter un fichier extension.xml
  • Créer un profil de déploiement pour le projet
  • Créer un fichier center.xml et le mettre sur le web
  • Packager l'addin01 et la publier sur un site web
  • Déployer l'Add-In dans SQL Developer
  • Tester l'Add-In
Créer un projet
Sélectionner l'application "addins-application" créée dans le précédent Track et sélectionner le menu "File | New..." puis "General | Projects". Donnez lui le nom de "addin02".

Ajouter un fichier extension.xml
Sélectionner le projet "addin02" et sélectionner le menu "File | New..." puis "General | XML | XML Document". Appelez-le extension.xml et positionnez-le dans le répertoire src/META-INF. Le répertoire n'existe pas, créez-le.

Le fichier extension.xml est disponible ici. Il comprend les informations suivantes :
  • Le paramètre "id" de la balise "extension" contient une clé qui est le nom du fichier .jar de l'extension. La valeur saisie est arkzoyd.sqldeveloper.addins.addin02
  • Le nom est le propriétaire de l'add-in sont "Update Center - ArKZoYd" et "ArKZoYd".
  • La balise dependencies inclus les différents imports pour l'Add-In.
  • La balise feature-hook contient la description de l'Add-In.
  • Le paramètre id de balise update-center contient un identifiant unique qui permet de conserver le lien à l'Add-In, même si elle change ultérieurement
  • La balise update-center contient le nom et l'URL du site d'Update
Créer un profil de déploiement pour le projet
Sélectionner le projet "Addin02" et sélectionner le menu "File | New..." puis "General | Déploiment Profiles | JAR File". L'appeler addin02.
Sélectionner le fichier addin02.deploy et avec le menu contextuel (bouton droit de la souris), sélectionner "Properties...". Comme nom de JAR, donner : "%SQLDEV_HOME%\sqldeveloper\extensions\arkzoyd.sqldeveloper.addins.addin02.jar" (arkzoyd.sqldeveloper.addins.addin02 doit correspondre au paramètre id de la balise extension du fichier extension.xml).

Créer un fichier center.xml et le mettre sur le web
Le fichier contient par exemple d'Add-In du track précédent. Il est téléchargeable à l'URL que vous avez précisé dans le fichier extension.xml : ici

Packager l'addin01 et la publier sur un site web
Prendre le fichier jar du track précédent et mettez-le dans un fichier .zip avec les répertoires d'installation de l'add-in dans SQL*Developer (en l'occurence, le répertoire sqldeveloper/extensions)
Publié le .zip ainsi créé à l'URL référencée dans le fichier center.xml créé précédemment
Remarque:
ça ne marche pas sur GooglePages.com à cause d'une redirection... alors, je l'ai mis sur free.fr

Déployer l'Addin dans SQL*Developer
Sélectionner le profile addin02.deploy et avec le menu contextuel, sélectionner "Deploy to JAR File". Le fichier .jar est installé dans le répertoire d'extension de SQL*Developer. Lorsque vous redémarer SQL*Developer l'Add-In sera présente.

Tester l'Add-in
Lancer SQL*Developer et sélectionner le menu "Help | Check for Updates...". Si l'assistant affiche une page de bienvenue, cliquer sur "Suivant>". Le Centre d'update installé dans SQL*Developer à l'étape précédente est disponible et l'add-in qu'il contient également...


Après avoir redémarré SQL*Developer, l'Add-in précédente est accessible comme vous le voyez ci-dessous :

Bientôt un prochain track sur ce même thème...

-GarK!

Le projet complet est disponible ici.
Le fichier .jar de l'Addin est disponible ici.
Le fichier center.xml est disponible ici.

04 avril 2007

16 processor-core en Standard Edition

Avec l'arrivée du Xeon quad-core et du barcelona (AMD), les règles de pricing Oracle ont encore changé :

http://www.oracle.com/corporate/pricing/multicore_faq.pdf indique "Oracle Database Standard Edition can only be licensed on servers that have a maximum capacity of 4 sockets. When using RAC to cluster this limitation is mirrored in the cluster. It may be licensed on a single cluster of servers supporting up to a maximum of four sockets.
For SE One programs: Oracle Standard Edition One may only be licensed on servers that have a maximum capacity of 2 sockets"

En d'autre termes :
  • Vous pouvez mettre de la standard Edition sur 4 processeurs quad-core (soit 16 cores)
  • Vous pouvez mettre de la Standard Edition One sur 2 processeurs quad-core (soit 8 cores)
Bref, dommage que SE ne supporte pas le parallelisme parce que les prix deviennent vraiment acttractifs !

-GarK!

Algorithme 11.1... A lire !

Un papier excellent sur les évolutions des algorithmes de Oracle 11.1 (un peu dense, non ?). C'est Tom Kyte qui le publie, même s'il n'en est pas l'auteur : http://asktom.oracle.com/tkyte/row-pattern-recogniton-11-public.pdf !

GarK!

01 avril 2007

Add-In SQL*Developer / *+ Track 1 */

Ce thread est le premier d'un ensemble plus vaste destiné à décrire comment développer des Add-Ins pour SQL Developer. Pour plus d'informations, reportez-vous aux sites suivants :
Dans ce qui suit nous allons développer une première Add-In pour présenter les outils, le principe et les premiers détails. Cette Add-in est largement inspirée de l'exemple HelloX (Inclus dans l'ESDK) qui ajoute un Assistant nommé "HelloX" dans le menu "New... | General | Projects" de JDeveloper.

Les outils pour développer et tester
Pour développer, nous allons utiliser Jdeveloper 10.1.3.2. On pourrait biensûr utiliser n'importe quel IDE Java mais on peut installer simplement un ensemble de démonstration. Pour l'installer, téléchargez-le depuis OTN, décompressez-le dans un répertoire que nous appellerons $JDEV_HOME et lancez le grâce au programme $JDEV_HOME/jdev/bin/jdev sous unix/linux ou %JDEV_HOME%/jdeveloper.exe sous Windows.

Nous allons ensuite installer ESDK qui contient un ensemble d'exemple d'Add-In JDeveloper. SQL Developer étant basé sur le même IDE, les exemples sont généralement valables pour SQL Developer également. Pour installer les exemples et la documentation associées, sélectionnez le menu "Help | Check for Updates...". Passez l'assistant et sélectionnez l'ESDK. Il faut redémarrer JDeveloper pour qu'il soit pris en compte.

Remarques :

  • Si vous avez un proxy pour vous connecter à Internet, configurer votre proxy dans le menu "Tools | Préférence... | Web Browser and Proxy"
  • Si vous ne pouvez pas vous connecter à Internet, vous pouvez toujours télécharger le fichier ESDK.zip (por la version 10.1.3) à l'adresse suivante et décompresser son contenu dans le répertoire $JDEV_HOME/jdev/extensions avant de redémarrer JDeveloper.

Une fois l'ESDK installé, vous pouvez installer les exemples en sélectionnant le menu : "Help | Open Extension Samples". L'ensemble des exemples s'affichent. Attention, si vous les déployés, ils seront installés dans $JDEV_HOME/jdev/extensions et automatiquement intégré à JDeveloper !

Pour tester, nous allons utiliser SQL Developer 1.1. Pour l'installer, téléchargez-le depuis OTN, décompressez-le dans un répertoire que nous appellerons $SQLDEV_HOME et lancez le grâce au programme $SQLDEV_HOME/sqldeveloper.sh sous unix/linux ou %SQLDEV_HOME%/sqldeveloper.exe sous Windows.

Développer une Add-In simple
Nous allons développer une première Add-In simple en nous inspirant du projet extensionsdk\HelloX. Cette Add-In ajoute un assistant dans le menu "New...|" de SQL Developer qui affiche simplement une fenêtre. Nous allons procéder par l'ensemble des étapes suivantes :

1°) Créer une application et un projet
Sélectionner le menu "File | New... | General | Application" et cliquer sur "OK"
Donner le nom addins-application à votre application (Ne selectionnez pas de template)
Donner le nom addin01 au projet.

2°) Ajouter la bibliothèque Java "JDeveloper Extension SDK" au projet
Sélectionner le projet addin01 et avec le menu contextuel (bouton droit de la souris, sélectionner "project properties..."
Sélectionner "Libraries" et cliquez sur le bouton "Add Libraries".
Sélectionner "JDeveloper Extension SDK" et cliquez sur OK.
Déselectionner la case à cocher "Export" comme dans la copie d'écran ci-dessous:

Cliquer sur "OK" pour valider vos modifications.

3°) Créer une classe de type Wizard
Sélectionner le projet créé précedemment
Sélectionner le menu "File | New... | General | Java Class" et cliquer sur "OK"
Donnez lui les informations suivantes :
Name : addin01
Package : arkzoyd.sqldeveloper.addins
Extends : oracle.ide.wizard.Wizard
Public : coché
Generate Default Constructor : non coché
Generate Main Method : non coché

4°) Ajouter une icône dans le même répertoire que la classe java. On utiliser la même icone que celle de HelloX que vous pouvez télécharger ici (addin01.gif). Ajouter le fichier dans le répertoire de votre projet. Dans le sous répertoire src/arkzoyd/sqldeveloper/addins.
Pour importer l'image dans le projet, sélectionner le projet avec le menu contextuel (Bouton droit de la souris) l'option "Project Properties...". Dans l'option Project Content | Resource, cliquez sur le bouton "Add" et Ajoutez le fichier addin01.gif aux ressources
. Le fichier addin01.gif apparaît dans l'arborescence du projet.

5°) Ajoutez les propriétés suivantes à la classe addin01.java
private static final String WIZARD_NAME = "Addin01";
private static final String ICON_NAME = "addin01.gif";
private icon image = null;

6°) Ajoutez les méthodes qui suivent à la classe addin01.java pour implémenter la classe Wizard :

public String getShortLabel() {
return WIZARD_NAME;
}

public boolean isAvailable(Context context) {
return true;
}

public boolean invoke(Context ctx) {
if (!isAvailable(ctx)) return false;
JOptionPane.showMessageDialog(null, "Addin01 OK!", WIZARD_NAME,
JOptionPane.INFORMATION_MESSAGE);
return true;
}

public Icon getIcon() {
if (image == null) {
image = GraphicsUtils.createImageIcon(
GraphicsUtils.loadFromResource(ICON_NAME, this.getClass()));
}
return image;
}

Ajouter les imports en conséquence. Le fichier addin01.java est disponible ici.

7°) Ajouter un fichier extension.xml dans le répertoire META-INF. Pour cela :
Sélectionner le projet et sélectionner "File | New... | Général | XML | XML Document".
Le nommer extension.xml et le mettre dans le sous-répertoire src/META-INF du projet.
Le contenu du fichier est disponible ici.

8°) Créer un descripteur de déploiement pour installer directement le programme dans SQL Developer. Pour cela :
Selectionner le projet
Sélectionner le menu "Files | New... | General | Deployment Profiles | JAR File".
Le nommer "addin01"
Dans le champs JAR Files, changez le répertoire pour le mettre dans $SQLDEV_HOME/ide/extensions/arkzoyd.sqldeveloper.addins.addin01.jar ou %SQLDEV_HOME%\sqldeveloper\extensions\arkzoyd.sqldeveloper.addins.addin01.jar (Le nom du JAR doit correspondre au nom de l'Add-In dans le fichier extension.xml)

Déployer et utiliser l'Add-In...
1°) Sélectionner le fichier Addin01.deploy ;
avec le menu contextuel sélectionner "Deploy to JAR File"

2°) Lancer SQL*Developer. Si vous sélectionnez "File | New... | Database Tier | ArKZoYd", vous voyez le nouvel assistant Addin01 comme sur la capture d'écran ci-dessous. Si vous sélectionnez l'assistant et cliquez sur OK une fenêtre d'information indiquant "Addin01 OK!" s'affiche.


Dans les prochains threads, je commenterai d'autres aspects du développement d'Add-In pour SQL*Developer. C'est donc à suivre...

-GarK!

Le projet complet est disponible ici.