Created
January 17, 2025 11:57
-
-
Save kleontev/7e11e00a177757f80533e95316b9b304 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SQL> | |
SQL> select banner from v$version; | |
BANNER | |
---------------------------------------------------------------------------------------------------- | |
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production | |
1 row selected. | |
SQL> | |
SQL> drop table test_fk_detail_ix purge; | |
Table dropped. | |
SQL> drop table test_fk_detail_no_ix purge; | |
Table dropped. | |
SQL> drop table test_fk_master_ix purge; | |
Table dropped. | |
SQL> drop table test_fk_master_no_ix purge; | |
Table dropped. | |
SQL> | |
SQL> whenever sqlerror exit failure | |
SQL> | |
SQL> create table test_fk_master_ix(id int primary key); | |
Table created. | |
SQL> create table test_fk_master_no_ix(id int primary key); | |
Table created. | |
SQL> | |
SQL> create table test_fk_detail_ix(id int primary key, master_id int references test_fk_master_ix(id)); | |
Table created. | |
SQL> create index ix_test_fk_detail_ix on test_fk_detail_ix(master_id); | |
Index created. | |
SQL> | |
SQL> create table test_fk_detail_no_ix(id int, master_id int references test_fk_master_no_ix(id)); | |
Table created. | |
SQL> | |
SQL> insert into test_fk_master_ix values(1); | |
1 row created. | |
SQL> insert into test_fk_master_no_ix values(1); | |
1 row created. | |
SQL> | |
SQL> insert into test_fk_detail_ix values (1,1); | |
1 row created. | |
SQL> insert into test_fk_detail_no_ix values (1,1); | |
1 row created. | |
SQL> | |
SQL> commit; | |
Commit complete. | |
SQL> | |
SQL> whenever sqlerror continue | |
SQL> | |
SQL> -- 10704 deprecated since 12.2? | |
SQL> alter session set events 'trace[ksq] disk medium'; | |
Session altered. | |
SQL> | |
SQL> delete test_fk_master_ix where id = 1; | |
delete test_fk_master_ix where id = 1 | |
* | |
ERROR at line 1: | |
ORA-02292: integrity constraint (SYS_C0013126820) violated - child record found | |
SQL> | |
SQL> delete test_fk_master_no_ix where id = 1; | |
delete test_fk_master_no_ix where id = 1 | |
* | |
ERROR at line 1: | |
ORA-02292: integrity constraint (SYS_C0013126821) violated - child record found | |
SQL> | |
SQL> break on trace_filename skip page duplicates | |
SQL> | |
SQL> select | |
2 -- trc.trace_filename, | |
3 to_char(object_id,'0XXXXXXX') object_id_hex, | |
4 uo.object_name, | |
5 uo.subobject_name, | |
6 regexp_substr(trc.payload, 'mode=[0-9]') lock_mode, | |
7 trc.payload | |
8 from user_objects uo | |
9 join v$diag_trace_file_contents trc on 1 = 1 | |
10 and (trc.session_id, trc.serial#) = (select sid, serial# from v$session where sid = userenv('sid')) | |
11 and trc.payload like '%TM-' || to_char(uo.object_id, 'FM0XXXXXXX') || '%' | |
12 where uo.object_name like 'TEST\_FK%' escape '\' | |
13 order by uo.object_name, lock_mode, trc.timestamp; | |
OBJECT_ID_HEX OBJECT_NAME SUBOBJECT_NAME LOCK_MODE PAYLOAD | |
--------------------------- ------------------------------ --------------- --------- ------------------------------------------------------------------------------------------------------------------------------------------------------ | |
18BAFAD3 TEST_FK_DETAIL_IX mode=0 2025-01-17 14:50:16.097*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFAD3-00000000-4ABDF995-00000000 mode=0 timeout=0 lockmode=3 lockreq=0 | |
18BAFAD3 TEST_FK_DETAIL_IX mode=3 2025-01-17 14:50:16.096*:ksq.c@9213:ksqgtlctx(): *** TM-18BAFAD3-00000000-4ABDF995-00000000 mode=3 flags=0x401 why=173 timeout=21474836 *** | |
18BAFAD3 TEST_FK_DETAIL_IX mode=3 2025-01-17 14:50:16.096*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFAD3-00000000-4ABDF995-00000000 mode=3 timeout=21474836 lockmode=0 lockreq=0 | |
18BAFAD6 TEST_FK_DETAIL_NO_IX mode=0 2025-01-17 14:50:16.222*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFAD6-00000000-4ABDF995-00000000 mode=0 timeout=0 lockmode=4 lockreq=0 | |
18BAFAD6 TEST_FK_DETAIL_NO_IX mode=0 2025-01-17 14:50:16.223*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFAD6-00000000-4ABDF995-00000000 mode=0 timeout=0 lockmode=4 lockreq=0 | |
18BAFAD6 TEST_FK_DETAIL_NO_IX mode=4 2025-01-17 14:50:16.222*:ksq.c@9213:ksqgtlctx(): *** TM-18BAFAD6-00000000-4ABDF995-00000000 mode=4 flags=0x401 why=173 timeout=21474836 *** | |
18BAFAD6 TEST_FK_DETAIL_NO_IX mode=4 2025-01-17 14:50:16.222*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFAD6-00000000-4ABDF995-00000000 mode=4 timeout=21474836 lockmode=0 lockreq=0 | |
18BAFAD6 TEST_FK_DETAIL_NO_IX mode=4 2025-01-17 14:50:16.223*:ksq.c@9213:ksqgtlctx(): *** TM-18BAFAD6-00000000-4ABDF995-00000000 mode=4 flags=0x401 why=173 timeout=21474836 *** | |
18BAFAD6 TEST_FK_DETAIL_NO_IX mode=4 2025-01-17 14:50:16.223*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFAD6-00000000-4ABDF995-00000000 mode=4 timeout=21474836 lockmode=0 lockreq=0 | |
18BAFACF TEST_FK_MASTER_IX mode=0 2025-01-17 14:50:16.097*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFACF-00000000-4ABDF995-00000000 mode=0 timeout=0 lockmode=3 lockreq=0 | |
18BAFACF TEST_FK_MASTER_IX mode=3 2025-01-17 14:50:16.096*:ksq.c@9213:ksqgtlctx(): *** TM-18BAFACF-00000000-4ABDF995-00000000 mode=3 flags=0x401 why=173 timeout=21474836 *** | |
18BAFACF TEST_FK_MASTER_IX mode=3 2025-01-17 14:50:16.096*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFACF-00000000-4ABDF995-00000000 mode=3 timeout=21474836 lockmode=0 lockreq=0 | |
18BAFAD1 TEST_FK_MASTER_NO_IX mode=0 2025-01-17 14:50:16.224*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFAD1-00000000-4ABDF995-00000000 mode=0 timeout=0 lockmode=3 lockreq=0 | |
18BAFAD1 TEST_FK_MASTER_NO_IX mode=3 2025-01-17 14:50:16.222*:ksq.c@9213:ksqgtlctx(): *** TM-18BAFAD1-00000000-4ABDF995-00000000 mode=3 flags=0x401 why=173 timeout=21474836 *** | |
18BAFAD1 TEST_FK_MASTER_NO_IX mode=3 2025-01-17 14:50:16.222*:ksq.c@7302:ksqcmi(): ksqcmi TM-18BAFAD1-00000000-4ABDF995-00000000 mode=3 timeout=21474836 lockmode=0 lockreq=0 | |
15 rows selected. | |
SQL> | |
SQL> exit |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
col lock_mode for a9 | |
col object_name for a30 | |
col payload for a150 | |
col subobject_name for a15 | |
col trace_filename for a50 | |
col banner for a100 | |
set echo on | |
set lines 300 | |
set time off | |
set timi off | |
cl scr | |
set sqlprompt "SQL> " | |
spool test_delete_fk.log replace | |
select banner from v$version; | |
drop table test_fk_detail_ix purge; | |
drop table test_fk_detail_no_ix purge; | |
drop table test_fk_master_ix purge; | |
drop table test_fk_master_no_ix purge; | |
whenever sqlerror exit failure | |
create table test_fk_master_ix(id int primary key); | |
create table test_fk_master_no_ix(id int primary key); | |
create table test_fk_detail_ix(id int primary key, master_id int references test_fk_master_ix(id)); | |
create index ix_test_fk_detail_ix on test_fk_detail_ix(master_id); | |
create table test_fk_detail_no_ix(id int, master_id int references test_fk_master_no_ix(id)); | |
insert into test_fk_master_ix values(1); | |
insert into test_fk_master_no_ix values(1); | |
insert into test_fk_detail_ix values (1,1); | |
insert into test_fk_detail_no_ix values (1,1); | |
commit; | |
whenever sqlerror continue | |
-- 10704 deprecated since 12.2? | |
alter session set events 'trace[ksq] disk medium'; | |
delete test_fk_master_ix where id = 1; | |
delete test_fk_master_no_ix where id = 1; | |
break on trace_filename skip page duplicates | |
select | |
-- trc.trace_filename, | |
to_char(object_id,'0XXXXXXX') object_id_hex, | |
uo.object_name, | |
uo.subobject_name, | |
regexp_substr(trc.payload, 'mode=[0-9]') lock_mode, | |
trc.payload | |
from user_objects uo | |
join v$diag_trace_file_contents trc on 1 = 1 | |
and (trc.session_id, trc.serial#) = (select sid, serial# from v$session where sid = userenv('sid')) | |
and trc.payload like '%TM-' || to_char(uo.object_id, 'FM0XXXXXXX') || '%' | |
where uo.object_name like 'TEST\_FK%' escape '\' | |
order by uo.object_name, lock_mode, trc.timestamp; | |
exit |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment