From: Jonathan C. <cra...@pc...> - 2003-06-17 16:54:38
|
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 |