Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

dbms_metadata.get_ddl for table adds Supplemental Logging

Girish KaleJan 16 2021 — edited Jan 16 2021

Hello Experts,
I've a code that converts an unpartitioned table into a partitioned one.
I do so in the following sequence.
Rename table to be partitioned to table_name||_OLD
Use dbms_metadata.get_ddl to generate a basic create table script appended with partition clause
Run the script.
But when I do so, I get an error: ORA-02261: such unique or primary key already exists in the table. The error is thrown because the dbms_metadata.get_ddl generates supplemental log syntax which causes this error.
Following is the table generated script.

 CREATE TABLE "my_table_name" 
  ("COMPLIANCE_RULE_RESULT_ID" NUMBER(38,0), 
	"SEQUENCE_ID" NUMBER(38,0), 
	"ASSET_SELECTOR_ID" NUMBER(38,0), 
	"IS_DELETED" NUMBER(1,0), 
	 SUPPLEMENTAL LOG GROUP "GGS_142538" ("COMPLIANCE_RULE_RESULT_ID", "SEQUENCE_ID") ALWAYS, 
	 SUPPLEMENTAL LOG DATA (ALL) COLUMNS, 
	 SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS, 
	 SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS, 
	 SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS, 
	 SUPPLEMENTAL LOG GROUP "GGS_451137" ("COMPLIANCE_RULE_RESULT_ID", "SEQUENCE_ID") ALWAYS
  ) SEGMENT CREATION IMMEDIATE 
 PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
 TABLESPACE "ABC"

Can you suggest something? Maybe some transform directive to suppress these supplemental log entries. Or anything to have the table created without error.

Thank you!
Girish

Comments
Post Details
Added on Jan 16 2021
1 comment
834 views