Of course not. At least, they are not part of SQL. The description in my
mail was a short-cut of what the script is actually doing, and the
startup/shutdown part may be somewhat misleading.

However, whereas it is necessary to call sqlplus to startup/shutdown a
DB, it is nevertheless useful to be able to login to an instance, even
if it is shut down (e.g., there are V$... views that are interesting to
query, even in this state). And although connect (ora_session_mode = 2)
does a sysdba connect, this only works if the instance is started,
otherwise you still get an ORA-1034. This has obviously to do with
OCISessionBegin(), but I cannot tell at the moment, whether this
function simply cannot do it, whether my test has a flaw, or whether the
function is not called correctly from DBD. Personally, I suspect the
former (this is typical behavior of Oracle, where context independence
is not very appreciated), but I have no time at present to check it.

Anyway, thanks for the help.
George


> -----Original Message-----
> From: Jared Still [SMTP:[EMAIL PROTECTED]]
> Sent: Monday, January 13, 2003 5:10 AM
> To:   Georg Botorog; Tim Bunce
> Cc:   [EMAIL PROTECTED]
> Subject:      Re: Problem with login as sysdba in DBI/DBD::Oracle
> 
> 
> Georg,
> 
> I don't think DBD::Oracle knows about the 'shutdown' and 
> 'startup' commands.  These are database control features
> that were previously available only svrmgrl, and are now
> standard in sqlplus.
> 
> It seems that you can't directly startup/shutdown a database
> using DBD::Oracle.  I just tried it, it doesn't work for me.
> 
> Tim?
> 
> Jared
> 
> On Monday 06 January 2003 03:45, Georg Botorog wrote:
> > Hello and a Happy New Year,
> >
> > I'm afraid I have not succeeded in making myself understood. The
> problem
> > is neiher selecting from V$... nor determining my own SID, the
> problem
> > is that my login is not done "as sysdba". Therefore, in particular,
> I
> > cannot login if the instance is down to start it up (and vice-versa,
> I
> > cannot shut it down when it is running). DBD seems to ignore the
> > parameter "ora_session_mode". However, I cannot imagine that
> > "ora_session_mode" is not working, because starting up / shutting
> down a
> > database is such a common operation, that somebody must have used
> this
> > parameter before. On the other hand, my example is so trivial, that
> I do
> > not see what could be wrong in it. My suspicion is that I lack some
> > package belonging to DBD::Oracle or that I have an older version
> > thereof. However, I have downloaded this package recently (the day I
> > wrote the first mail) with ppm.
> >
> > Any suggestion? Thanks.
> >
> > > -----Original Message-----
> > > From:     Tim Bunce [SMTP:[EMAIL PROTECTED]]
> > > Sent:     Monday, December 30, 2002 1:11 PM
> > > To:       Jared Still
> > > Cc:       Georg Botorog; [EMAIL PROTECTED]
> > > Subject:  Re: Problem with login as sysdba in DBI/DBD::Oracle
> > >
> > > On Tue, Dec 24, 2002 at 07:31:00AM -0800, Jared Still wrote:
> > > > The problem you are having is most likely due to your
> > > > use of v$session_connect_info.  Getting your own sessions
> > > > SID and using it to choose the correct row from
> > >
> > > v$session_connect_info
> > >
> > > > is notoriously tricky.
> > > >
> > > > Try doing this instead:
> > > >
> > > > my $sql=q{select sys_context('userenv', 'authentication_type')
> > >
> > > auth_type from
> > >
> > > > dual};
> > > > my $sth = $dbh->prepare($sql);
> > > > $sth->execute;
> > > > my ($authtype) = $sth->fetchrow;
> > > > print "Authtype: $authtype";
> > > > $sth->finish;
> > >
> > > Of course that could be reduced to just:
> > >
> > >   my $authtype = $dbh->selectrow_array("select
> sys_context('userenv',
> > > 'authentication_type') auth_type from dual");
> > >   print "Authtype: $authtype\n";
> > >
> > > Tim.
> > >
> > > > HTH,
> > > >
> > > > Jared
> > > >
> > > > On Thursday 19 December 2002 01:21, Georg Botorog wrote:
> > > > > Hi,
> > > > >
> > > > > I have the following trivial piece of code:
> > > > >
> > > > > use DBI           ;
> > > > > use DBD::Oracle   ;
> > > > > use strict        ;
> > > > >
> > > > > my $db   = "..." ;
> > > > > my $usr  = "..."         ;
> > > > > my $pwd  = "..."      ;
> > > > > my $mode = 2             ;
> > > > >
> > > > > my $dbh = DBI->connect ("dbi:Oracle:".$db, $usr, $pwd,
> > >
> > > {ora_session_mode
> > >
> > > > > => $mode}) ;
> > > > > ...
> > > > > $dbh->disconnect ;
> > > > >
> > > > > However, the connect is not done "as sysdba", but normally. I
> know
> > >
> > > this,
> > >
> > > > > because:
> > > > > 1. if the DB is shut down, then I get ORA-1034 ("Oracle not
> > >
> > > available")
> > >
> > > > > 2. if the DB is open, then the column AUTHENTICATION_TYPE of
> the
> > >
> > > view
> > >
> > > > > V_$Session_Connect_Info
> > > > >    has the value "DATABASE" (as with normal logins) for the
> given
> > > > > session, instead of "OS" (as with "as
> > > > >    sysdba" connects)
> > > > >
> > > > > What am I doing wrong?
> > > > >
> > > > > I use Perl 5.6.1, DBI 11.3, and DBD::Oracle 1.80.
> > > > >
> > > > > Thanks
> > > > > G. Botorog

Reply via email to