Je dois utiliser DBD :: Oracle pour me connecter à une base de données Oracle qui a un déclencheur LOGON qui vérifie mon programme v $ session.program au moment de la connexion.
J'ai essayé:
use strict;
use warnings;
use DBI;
DBI->connect ('dbi:Oracle:host=<ip>;sid=<sid>', 'test', 'TEST',
{ ora_module_name => 'My Program'}) || die DBI::errstr;
mais cela ne fonctionne pas, parce que DBD :: Oracle ne définit pas v session.program $ jusqu'à ce que la connexion APRÈS.
Cependant, JDBC ne supporte la mise en avant se connecter, par:
Properties props = new Properties();
props.setProperty("user", username);
props.setProperty("password", password);
props.put("v$session.program", "My Program");
Class driver = Class.forName(driverClass);
Mais je ne suis pas en Java. J'utilise Perl. Aucune suggestion?!
[UPDATE]
course "strace" sur le processus détermine que le module DBD :: Oracle fait ce qui suit:
ouvert ("/ proc/self/cmdline", O_RDONLY) = 4 read (4, "perl \ 0test.pl \ 0", 255) = 13
Alors oui, je pourrais en théorie créer un script (ou un lien logiciel) nommé "Mon programme" et l'utiliser comme ligne de commande pour exécuter mon fichier. Mais ce taux est assez élevé sur l'échelle «très triste et pas gentil du tout». :(
Nous vous recommandons de supprimer le tag Java car il s'agit purement d'une discussion Perl et Oracle sur les connexions/propriétés/trigger. –