Temat: ORA-01410: niepoprawny ROWID
Próbuje znaleźć blokowany przez inną transakcję rekord który inna sesja próbuje modyfikować jak niżej:sesjia1
SQL> desc test_trzy;
Nazwa Wartość NULL? Typ
----------------------------------------- -------- ----------
A NUMBER
B NUMBER
C NUMBER
SQL> update test_trzy set a=2 where a=254;
1 wiersz został zmodyfikowany.
sesja2
SQL> update test_trzy set a=2 where a=254;
sesja2 czeka
sesja3
SQL> select a.object_id from v$locked_object a, dba_objects c where a.object_id=
c.object_id;
OBJECT_ID
----------
197013
197013
SQL> select dbms_rowid.rowid_create(1, row_wait_obj#, row_wait_file#, row_wait_b
lock#, row_wait_row#) from v$session where row_wait_obj#=197013;
DBMS_ROWID.ROWID_C
------------------
AAAwGVAAGAAARgeAAA
SQL> select * from test_trzy where rowid = 'AAAwGVAAGAAARgeAAA';
select * from test_trzy where rowid = 'AAAwGVAAGAAARgeAAA'
*
BŁĄD w linii 1:
ORA-01410: niepoprawny ROWID
SQL> select rowid from test_trzy where a = 254;
ROWID
------------------
AAAxFoAAGAAARgeAAA
Widać, że ROWID wygenerowany przez dbms_rowid.rowid_create jest inny niż rzeczywisty ROWID.
Czy ktoś spotkał się już z takim problemem i udało mu się rozwiązać.
Za odpowiedzi z góry dzięki.