Very good case described.

Igor Neyman, OCP DBA
[EMAIL PROTECTED]



----- Original Message -----
To: "Multiple recipients of list ORACLE-L" <[EMAIL PROTECTED]>
Sent: Wednesday, January 22, 2003 2:16 PM


> Take the case of an insert (we'll call tx1), where space allocation is
> required. As you insert records, the table allocated additional extents
> (updating fet$ (free extent table) and uet$ (used extent table) in the
data
> dictionary). These updates to the data dictionary are implicitly
committed,
> even if you issue an explicit rollback for the insert statement. Imagine
if
> the dd changes are not immediately committed. Let's say another tx (we'll
> call tx2) needs to allocate an extent in the same datafile.  If fet$
> contains only a single row for the file requested, then tx1 will have an
> exclusive lock on the row. tx2 needs to also lock the row exclusively in
> order to update it. Thus, tx2 would wait until tx1 has completed and
> released the lock. In the meantime, any transaction that needs to allocate
a
> new extent in that file will have to wait...and wait...and wait.
>
> A different strategy is to commit the changes to fet$ and uet$
immediately.
> Then the next tx can access the row and grab space. While this could
result
> in an overallocation of space if the tx is rolled back, it does not block
> other txs. If space was allocated to an object, and the tx failed, there
is
> a strong probability that this space will be used at some point in the
> future.
>
> It seems that the tradeoff here is that the access to the data dictionary
is
> kept to a minimum duration at the expense of periodic space wastage
> (initially).
>
> As for the other data dictionary tables, it may be a case of read
> consistency conflicts. If a long running transaction needs to access a
table
> definition, but a previous transaction has updated the table definition,
but
> not committed, which table definition do you use? There are some issues
with
> definitions not being the same at the start of a transaction and at a
later
> point. As I recall, Oracle terminates the transaction if object
definitions
> change while the transaction is running.
>
> All in all, it makes sense (at least to me) that changes to the data
> dictionary are immediately committed. Otherwise, the performance and
> integrity of the system would be comprimised.
>
> Dan Fink
>
> -----Original Message-----
> Sent: Wednesday, January 22, 2003 10:01 AM
> To: Multiple recipients of list ORACLE-L
>
>
>
> That raises another doubt. For an simple insert statement, could also
> update the UET$ or FET$ tables? So, if the purpose was to preserve all
> changes to the data dictionary, What's different between OBJ$, COL$ and
> these space management tables?
>
> Thanks
> Raj
> --
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> --
> Author: Fink, Dan
>   INET: [EMAIL PROTECTED]
>
> Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
> San Diego, California        -- Mailing list and web hosting services
> ---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from).  You may
> also send the HELP command for other information (like subscribing).
>

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Igor Neyman
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to