Re: Table Row Locked By Non-Existent Session

  • From: David Barbour <david.barbour1@xxxxxxxxx>
  • To: Jonathan Lewis <jlewisoracle@xxxxxxxxx>
  • Date: Wed, 3 Mar 2021 14:09:59 -0600

gv$ (and v$)database_block_corruption do not show any blocks marked as
corrupt.

REPAIR_TABLE indicates:

SQL> select REPAIR_DESCRIPTION from repair_table;

REPAIR_DESCRIPTION
--------------------------------------
mark block software corrupt

This has been happening for a while, so a restore probably isn't going to
help.
gv$_transaction is also not showing anything I would not expect - like a
really old transaction.

Was hoping there might be a way to break that lock, but I'll just mark it
and move on.

Thanks.

On Wed, Mar 3, 2021 at 12:07 PM Jonathan Lewis <jlewisoracle@xxxxxxxxx>
wrote:

fix_corrupt_blocks simply marks the block as logicall corrupt so that it
(tends to be) ignored are run time and doesn't result in ora_01578 errors.

Have you already tried Block Media Recovery? You may find that Oracle can
fix the problem by reloading an old image of just that block from a backup
and then running through the archived redo log.



https://docs.oracle.com/en/database/oracle/oracle-database/12.2/bradv/rman-block-media-recovery.html#GUID-1E226393-17D0-4AB0-A05D-91210255D8FF

Regards
Jonathan Lewis


On Wed, 3 Mar 2021 at 16:53, David Barbour <david.barbour1@xxxxxxxxx>
wrote:

Good Morning,
Oracle 12.2 RAC
Linux 7.6

We have a procedure that is supposed to download the results of a query
to a .csv file.  It fails with a *kdsgrp1 error.*

Ran DBMS_REPAIR.CHECK_OBJECT and it shows:

* kdbchk: row locked by non-existent transaction*

Any way to unlock this puppy, or should I just go ahead
with DBMS_REPAIR.FIX_CORRUPT_BLOCKS?


Other related posts: