我正在尝试使用 dbms_metadata.get_ddl 比较两个模式。这两个模式是使用完全相同的 SQL 脚本创建的。但是,在一个主键上,我发现 DDL 有所不同:
ALTER TABLE "SCHEMA_NAME"."AUDIT_EVENTS_LOG" ADD CONSTRAINT "AUDIT_EVENTS_LOG_PK" PRIMARY KEY ("LOG_ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
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 "DATA_INDEX" ENABLE
对比:
ALTER TABLE "SCHEMA_NAME"."AUDIT_EVENTS_LOG" ADD CONSTRAINT "AUDIT_EVENTS_LOG_PK" PRIMARY KEY ("LOG_ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
TABLESPACE "DATA_INDEX" ENABLE
两个模式都位于同一个数据库实例上。用于创建此主键的脚本(用于两个模式)是:
ALTER TABLE "AUDIT_EVENTS_LOG" ADD CONSTRAINT "AUDIT_EVENTS_LOG_PK" PRIMARY KEY ("LOG_ID")
USING INDEX TABLESPACE "DATA_INDEX" ENABLE;
当 GET_DDL 使用完全相同的脚本创建时,什么会导致结果不同?
您可以使用 DBMS_METADATA.SET_TRANSFORM_PARAM 控制是否包含存储参数。您可能在某个会话中更改了此设置。
要抑制存储参数,请执行以下命令,然后再次运行 GET_DDL:
完成后,您可以通过运行以下命令将其设置回默认值: