Yeah! That's it! Thank you very much, Andy!

You simply have to provide an empty user AND an empty password AND
ora_session_mode of SYSDBA:
-------------------------------
$ cat dummy.pl
#!/usr/bin/perl -wT

# setup environment
BEGIN {
   $ENV{ORACLE_HOME}    = '/oracle/app/oracle/product/9.2.0';
   $ENV{ORACLE_SID}     = 'ora920';
}

use strict;
use DBI;

# does'nt work im my environment:
# "ora_session_modes" is not defined in %DBD::Oracle::EXPORT_TAGS
#use DBD::Oracle qw/:ora_session_modes/;

my $mode = 2;    # SYSDBA
# $mode = 4;    # SYSOPER

my $dbh = DBI->connect( 'dbi:Oracle:','', '',
                { ora_session_mode => $mode,
                  RaiseError => 1, AutoCommit => 0 } )
        || die "cannot connect to oracle\n   $DBI::errstr\n";

print $dbh->selectrow_array('select instance_name from v$instance') . "\n";
print $dbh->selectrow_array('select user from dual') . "\n";

$dbh->disconnect;

__END__
-------------------------------
$ perl -wT dummy.pl
ora920
SYS
-------------------------------

----- Original Message -----
From: "Andy Hassall" <[EMAIL PROTECTED]>
To: "Christian Merz" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Thursday, June 05, 2003 11:35 PM
Subject: Re: Oracle connect internal/OS authentification


> Christian Merz wrote:
> > this topic has been discussed several times, i know. But i have not
> > seen a solution by now.
> >
> > On UNIX i can open an Oracle DB "connect internal" connection by
> >     $ sqlplus "/ as sysdba"
> > when i am in OS group 'dba' - there is no need to specify a password.
> >
> > Whichever type of connection i use with DBI i HAVE TO specify a
> > password. But i certainly do not want to code my sys/system passwords
> > in my skripts.
> >
> > Any short slution on this?
>
>
>  FWIW it _appears_ to work on Windows, at least, unless I've done
something
> silly?
>
> #!perl -w
> use strict;
> use DBI;
> use DBD::Oracle qw/:ora_session_modes/;
>
> my $dbh = DBI->connect('dbi:Oracle:',
>          shift||'',
>          shift||'',
>          {
>              RaiseError => 1,
>              AutoCommit => 0,
>              ora_session_mode => ORA_SYSDBA,
>          })
>   or die DBI->errstr;
>
> print $dbh->selectrow_array('select instance_name from v$instance') .
"\n";
> print $dbh->selectrow_array('select user from dual') . "\n";
>
> $dbh->disconnect;
>
> __END__
>
> ActiveState Perl 5.8.0, DBD-Oracle 1.14 + a couple of minor patches
(nothing
> to do with OS auth though), DBI 1.37.
> Windows 2000, Oracle 9.2.0.3, user is a member of the ORA_DBA group and OS
> authentication temporarily turned on for this test.
>
> Running this with a few different parameters gives:
>
> [EMAIL PROTECTED] /cygdrive/h/temp
> $ perl os_auth_test.pl
> dev92
> SYS
>
> [EMAIL PROTECTED] /cygdrive/h/temp
> $ perl os_auth_test.pl darth vader
> dev92
> SYS
>
>
> [EMAIL PROTECTED] /cygdrive/h/temp
> $ perl os_auth_test.pl darth
> DBI connect('','darth',...) failed: ORA-01005: null password given; logon
> denied (DBD ERROR: OCISessionBegin) at os_auth_test.pl line 6
>
> Which seems to show it works... but if you specify a username you have to
at
> least put some nonsense in for the password.
>
> Also works if I put the database name into the DSN, i.e.
'dbi:Oracle:dev92'.
>
> (Haven't got around to putting Oracle on the Linux partition yet though,
and
> haven't got access to a Unix environment with Oracle until next week; so
> milage may vary on Unix)
>
> --
> Andy Hassall ([EMAIL PROTECTED]) icq(5747695) (http://www.andyh.co.uk)
> Space: disk usage analysis tool (http://www.andyhsoftware.co.uk/space)
>

Reply via email to