2026-03-12 20:23:15

This commit is contained in:
root
2026-03-12 21:23:47 +01:00
parent eab4b36eca
commit 93039b8489
3332 changed files with 699614 additions and 0 deletions

55
tpt/aot/demo11.sql Normal file
View File

@@ -0,0 +1,55 @@
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
-- Bug 12345717 - ORA-600 [13013] or hang/spin from MERGE into table with added column [ID 12345717.8]
--
-- ORA-600 [13013] can occur when executing a MERGE statement
-- with an UPDATE clause into a table which has had an ADD COLUMN
-- executed against it with a DEFAULT value with add column
-- optimization enabled.
--
--
-- Rediscovery Notes:
-- ORA-600 [13013] on a MERGE SQL.
-- In some cases this problem can also show up as a spin
-- executing a MERGE SQL against a table with an added column.
--
-- In both cases the problem can occur only if the target table has
-- a NOT NULL added column with a default value.
-- You can check this with SQL of the form below which shows such columns:
-- select owner, object_name, name
-- from dba_objects, col$
-- where bitand(col$.PROPERTY,1073741824)=1073741824
-- and object_id=obj#;
--
-- Workaround
-- Set _add_col_optim_enabled=false before adding columns
-- (this can cause the ADD COLUMN DDL to take longer as
-- all rows need updating)
-- For existing tables set the parameter then rebuild the table
-- to remove any existing optimized columns.
-- DROP TABLE tab1;
-- DROP TABLE tab2;
CREATE TABLE TAB1 ( ID_NACE NUMBER(5) );
ALTER TABLE TAB1 ADD (
ID_INDUSTRY NUMBER(5) DEFAULT -1 NOT NULL
);
insert into TAB1 values(1, 1);
insert into TAB1 values(2, 2);
CREATE TABLE TAB2 (
ID_NACE NUMBER(5),
ID_INDUSTRY NUMBER(5)
);
insert into TAB2 values(1, 3);
commit;
MERGE /*+ LEADING(c) */
INTO TAB1 c
USING (SELECT * from TAB2 b) a
ON (c.id_nace=a.id_nace)
WHEN matched THEN
UPDATE SET c.ID_INDUSTRY=a.ID_INDUSTRY;