Thanks !
The first solution (SIGCHILD) works well for me (I only use system
after disconnect to DBI)
I will test "BEQUEATH_DETACH = YES" soon.
Other solution who works for me --> connect with sys user :
$dbh = DBI->connect("dbi:Oracle:host=$ENV{HOSTNAME};sid=
$ENV{ORACLE_SID}","sys","PWD_SYS",{ ora_session_mode => ORA_SYSDBA})
On 31 juil, 22:43, [EMAIL PROTECTED] (Martin J. Evans) wrote:
> olwin wrote:
> > Sorry for my poor English.
>
> > After connect in SYSDBA to an Oracle 10.2.0.2 Database, all system
> > command return '-1' (No child processes).
>
> > Problem detect on a Solaris 10 x86 server :
>
> > Details :
> > perl -MDBI -e 'DBI->installed_versions'
> > Perl : 5.008006 (i86pc-solaris-thread-multi)
> > OS : solaris (2.10)
> > DBI : 1.42
> > DBD::Sponge : 11.10
> > DBD::Proxy : 0.2004
> > DBD::Oracle : 1.15
> > DBD::File : 0.30
> > DBD::ExampleP : 11.12
> > DBD::DBM : 0.01
>
> > It's a production server, I can't upgrade DBD::Oracle for the moment.
> > It's the first application on the server to use perl,others only use
> > shell/sqlplus
>
> > This code will show the problem :
>
> > use DBD::Oracle qw(:ora_session_modes);
>
> > my $dsn = "dbi:Oracle:"; # no dbname here
> > print "TWO_TASK not defined\n" if (not defined($ENV{TWO_TASK}));
> > print "ORACLE_SID : $ENV{ORACLE_SID} \n";
>
> > my $dbh = DBI->connect($dsn, "", "", { ora_session_mode =>
> > ORA_SYSDBA });
> > $dbh->{RaiseError} = 1;
>
> > my $sth = $dbh->prepare( "select sysdate from dual" );
> > $sth->execute();
> > my $date=$sth->fetchrow();
> > print "Date : $date \n";
> > $sth->finish();
> > $dbh->disconnect();
>
> > my $ret=system("date");
>
> > print "retour : $ret";
>
> > Result on my machine :
> > TWO_TASK not defined
> > ORACLE_SID : KJD00
> > Date : 30-JUL-08
> > mercredi, 30 juillet 2008, 14:32:22 MEST
> > retour : -1
>
> > Get you the same result as me?
>
> At first glance it seemed to me that this has nothing to do with
> DBD::Oracle or DBI and did not belong on this list. However, you are
> using the system command and given it returns -1 it failed. If you use
> the system command like above, it forks, issues your command and does a
> wait for the child to exit (this may depend on SIGCHILD signal). The
> oracle client libraries fiddle with SIGCHILD handling - presumably
> because it wants to know a SIGCHILD signals. You probably want to return
> SIGCHILD behaviour back to the default but you should realise this may
> impact on the oracle client libraries. The following link might help
> explain some of this but I cannot recollect a definite solution for
> system in perl and Oracle:
>
> http://www.easysoft.com/support/kb/kb00967.html
>
> This link looks promising:
>
> http://coding.derkeiler.com/Archive/Perl/perl.dbi.users/2008-06/msg00...
>
> which mentions
>
> BEQUEATH_DETACH = yes
>
> Martin- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -