Setting DBMS_METADATA.GET_DDL Output for Materialized Views
949652Aug 28 2012 — edited Aug 28 2012Hi all.
My Oracle version is 10g.
I'm extracting the DDL of all the objects from database using the DBMS_METADATA package. I'm using SET_TRANSFORM_PARAM to configure the output because I need a simple sql code, without information about tablespaces, storage and segment attributes. Everything works fine except when I'm working with mviews object types. I can't remove the information about tablespace, storage or segment attributes for materialized views.
I would like to know if there's a related issue about it. Or there's something missing in my code?
I tried to specify the object type as another parameter on DBMS_METADATA.SET_TRANSFORM_PARAM but don't work too.
The only transform parameter that works fine with Materialized Views is the SQLTERMINATOR.
------
See how I have done:
declare
vDDL clob;
begin
dbms_metadata.set_transform_param (DBMS_METADATA.SESSION_TRANSFORM, 'STORAGE', FALSE);
dbms_metadata.set_transform_param (DBMS_METADATA.SESSION_TRANSFORM, 'TABLESPACE', FALSE);
dbms_metadata.set_transform_param (DBMS_METADATA.SESSION_TRANSFORM, 'SEGMENT_ATTRIBUTES', FALSE);
dbms_metadata.set_transform_param (DBMS_METADATA.SESSION_TRANSFORM, 'SQLTERMINATOR',TRUE);
select dbms_metadata.get_ddl ('MATERIALIZED_VIEW', 'MV_STO020', 'HIS117_CHECK') into vDDL FROM DUAL;
dbms_output.put_line (vDDL);
end;
-------
and how the output is:
CREATE MATERIALIZED VIEW "HIS117_CHECK"."MV_STO020"
ORGANIZATION HEAP 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)
TABLESPACE "TS_HIS117"
BUILD IMMEDIATE
USING INDEX
REFRESH FORCE ON DEMAND
WITH PRIMARY KEY USING DEFAULT LOCAL ROLLBACK SEGMENT
DISABLE QUERY REWRITE
AS SELECT
STO020_MOVEMENT_LOG_ID STO020_MOVEMENT_LOG_ID
, STO020_QUANTITY STO020_QUANTITY
, STO020_DATE STO020_DATE
, STO020_BEFORE_BALANCE STO020_BEFORE_BALANCE
, STO011_PRODUCT_MOVEMENT_ID STO011_PRODUCT_MOVEMENT_ID
, ADM082_PRODUCT_ID ADM082_PRODUCT_ID
, ADM089_PRODUCT_PRESENTATION_ID ADM089_PRODUCT_PRESENTATION_ID
, STO010_MOVEMENT_TYPE_ID STO010_MOVEMENT_TYPE_ID
, STO001_STOCK_ID STO001_STOCK_ID
, STO001_TARGET_STOCK_ID STO001_TARGET_STOCK_ID
, STO003_PRODUCT_LOT_ID STO003_PRODUCT_LOT_ID
, SYS010_USER_ID SYS010_USER_ID
, EIR001_MPI EIR001_MPI
, ADM056_MEDICAL_ATTENTION_ID ADM056_MEDICAL_ATTENTION_ID
, ADM094_USE_UNIT_ID ADM094_USE_UNIT_ID
FROM
STO020_MOVEMENT_LOG;
Thank you in advanced!
Edited by: lucporto on 28/08/2012 07:26