I've just committed a fix for a long-standing problem in the Perl object
layer. The object layer (GUS/ObjRelP) was previously hard-coded to
use an Oracle rollback segment ("BIGRBS0", and later "BIGRBS1") that is
specific to CBIL's Oracle instances. This posed a problem for sites
without a rollback segment of the same name, as well as sites that are
using Oracle 9i's new "AUTO undo management" facility, which eschews
the notion of rollback segments entirely. In the newly-modified code,
the default behavior is that the object layer will *not* attempt to use
a specific rollback segment at all (relying instead on whatever segment
Oracle assigns it by default.)
The implication for users not at CBIL should be that the following
annoying (but non-fatal) error messages should go away (and the similar
warnings that appear when an Oracle instance supports rollback segments
but doesn't have one called "BIGRBS1"):
DBD::Oracle::db do failed: ORA-30019: Illegal rollback Segment operation in Automatic Undo
mode
+(DBD ERROR: OCIStmtExecute) [for statement ``set transaction use rollback segment BIGRBS1''])
+at /home/gus/run/lib/perl/GUS/ObjRelP/DbiDatabase.pm line 149.
The implication for users at CBIL is that--if you want to continue using
BIGRBS1 as your default rollback segment--you must add the following line
to your $GUS_CONFIG_FILE (after getting the updated code from CVS, of
course):
oracleDefaultRollbackSegment=BIGRBS1
I've done some brief tests and it appears to work OK. Perl object layer
programmers should note that DbiDatabase now has an extra optional parameter
that specifies the rollback segment to use (if any). If this parameter is
undefined, the empty string, or =~ /^none$/i, the object layer will not attempt
to run any "set transaction use rollback segment" commands. Let me know if
you encounter any problems.
Jonathan
|