HP3000-L Archives

June 2008, Week 4

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Brian Donaldson <[log in to unmask]>
Reply To:
Brian Donaldson <[log in to unmask]>
Date:
Mon, 23 Jun 2008 01:38:58 -0400
Content-Type:
text/plain
Parts/Attachments:
text/plain (94 lines)
Sorry, Denys:

You cannot DBUNLOCK inside a DBXBEGIN/DBXEND pair.

If you try to DBUNLOCK while a DBXBEGIN is active, the DBUNLOCK
will fail (-230 Image error code)

The theory behind my logic is that either everything belonging to a 
base/set/item triplet gets updated or nothing gets updated.

Scenario -- Base 1 updates 300 records, Base 2 updates 300 records
and then there is a program abort or system failure. Without the DBX
procedures these two data bases would be left in an incomplete state.
Recovering would be a real pain in the you-know-what.

With the usage of the DBXBEGIN/DBXEND combo, if and when an error
occurs the call to DBXUNDO will backout all these entries that were 
added/updated leaving the bases in the condition they were in prior to 
running the program. If the system fails I believe (but not sure about this
100%) there will be an automatic DBXUNDO.....


Brian.


On Mon, 23 Jun 2008 00:11:03 -0500, Denys Beauchemin <[log in to unmask]> wrote:

>The lock area in the DBG has limited space. Also, I would venture to say
>that your longer transactions would actually overflow the undo log area.  I
>seem to remember that you could play with the XM logfile settings, but even
>that is going to be prone to overflow.
>
>I'm a little perplexed about your usage of DBXBEGIN, DBLOCK (MR of course,)
>then DBEXEND and finally DBUNLOCK.  I would suggest you loop you
>DBLOCK/DBUNLOCK inside the DBXBEGIN/DBXEND transaction pair.
>
>Another way would be to move the loop of transaction outside the
>DBXBEGIN/DBXEND pair.
>
>Is there a reason all the updates make up a single transaction?
>
>Denys
>
>-----Original Message-----
>From: HP-3000 Systems Discussion [mailto:[log in to unmask]] On Behalf
>Of Brian Donaldson
>Sent: Sunday, June 22, 2008 9:50 PM
>To: [log in to unmask]
>Subject: [HP3000-L] TurboIMAGE Error -- DBLOCK Mode5 -- 62 error code
>
>My app DBOPEN's two databases, lets call them BASE-1 and BASE-2
>
>The logic goes like this --
>
>DBOPEN base-1
>DBOPEN base-2
>
>A single DBXBEGIN across BASE-1 and BASE-2
>
>BASE-1 is DBLOCKed @ mode3 level
>BASE-2 is DBLOCKED @ mode5 level
>
>Loop here for as many entries in dataset of BASE-1
>
>BASE-1 dataset is DBUPDATEd
>BASE-2 dataset is DBPUT
>
>end of loop
>
>DBXEND across both bases
>DBUNLOCK BASE-1
>DBUNLOCK BASE-2
>DBCLOSE BASE-1
>DBCLOSE BASE-2
>
>Works great when processing just a few hundred entries, but when trying to
>do a mass update (processing a number of entries whose entry count > 2600)
>then the DBLOCK mode5 on BASE-2 fails with a 62 error code (DBG Full)
>
>Anyone have an idea how to get around this problem?
>
>
>TIA as always,
>Brian.
>
>* To join/leave the list, search archives, change list settings, *
>* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *
>
>* To join/leave the list, search archives, change list settings, *
>* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *

* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *

ATOM RSS1 RSS2