Devo utilizzare DBD :: Oracle per connettermi a un database Oracle che ha un trigger LOGON che verifica il mio v $ session.program al momento dell'accesso.
ho provato:
use strict;
use warnings;
use DBI;
DBI->connect ('dbi:Oracle:host=<ip>;sid=<sid>', 'test', 'TEST',
{ ora_module_name => 'My Program'}) || die DBI::errstr;
ma questo non funzionerà, perché DBD :: Oracle non imposta v $ session.program fino a dopo la connessione.
Tuttavia, JDBC non supporta l'impostazione prima di connettersi, da:
Properties props = new Properties();
props.setProperty("user", username);
props.setProperty("password", password);
props.put("v$session.program", "My Program");
Class driver = Class.forName(driverClass);
ma non sto utilizzando Java. Sto usando Perl. Eventuali suggerimenti?!
[UPDATE]
Running "strace" sul processo determina che il modulo DBD :: Oracle sta facendo il seguente:
aperto ("/ proc/self/cmdline", O_RDONLY) = 4 leggi (4, "perl \ 0test.pl \ 0", 255) = 13
Quindi sì, in teoria, potrei creare uno script (o un collegamento software) denominato "Il mio programma" e usarlo come riga di comando per eseguire il mio file. Ma questo è abbastanza alto nella scala "molto triste e per nulla simpatica". :(
Consiglia di rimuovere il tag Java in quanto si tratta puramente di una connessione Perl e Oracle/proprietà/discussione di trigger. –