DBMS_METADATA transform EMIT_SCHEMA not respected w/ MV Logs

From: Martin Klier - Performing Databases GmbH <martin.klier_at_performing-db.com>
Date: Tue, 22 Aug 2017 15:34:15 +0200 (CEST)
Message-ID: <2070237274.2406.1503408855159.JavaMail.zimbra_at_performing-db.com>



Hi Listers,

why does
DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM,'EMIT_SCHEMA', FALSE); not work for get_ddl on Materialized View Logs, or am I missing something?

I tried this:
<...>

DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'PRETTY',TRUE); 
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',FALSE); 
DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM,'EMIT_SCHEMA', FALSE); 
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',FALSE); 
-- Dynamic cursor for big loop over all MV Logs is defined here for rec in (
select LOG_OWNER, LOG_TABLE
from dba_mview_logs
where log_owner = upper(USERNAME)
)
-- now loop over all MV Logs matching above WHERE condition loop
dbms_output.put_line ('-- '||rec.log_owner ||'.'|| rec.log_table); -- make DDL CREATE string
DDL_MV_LOG := dbms_metadata.get_ddl('MATERIALIZED_VIEW_LOG',rec.log_table,rec.log_owner); dbms_output.put_line (DDL_MV_LOG);
dbms_output.put_line ('----------------------------------------------------------------------'); 
end loop;
<...>

and get:

CREATE MATERIALIZED VIEW LOG ON "MYSCHEMA"."RACK" PCTFREE 10 PCTUSED 30 INITRANS 1 MAXTRANS 255 LOGGING TABLESPACE "IWACS"
WITH PRIMARY KEY, ROWID EXCLUDING NEW VALUES but I would expect:
CREATE MATERIALIZED VIEW LOG ON "RACK"
PCTFREE 10 PCTUSED 30 INITRANS 1 MAXTRANS 255 LOGGING TABLESPACE "IWACS"
WITH PRIMARY KEY, ROWID EXCLUDING NEW VALUES As you can see, all the other SESSION_TRANSFORM keys I did set, worked well: PRETTY, SQLTERMINATOR, STORAGE.... but EMIT_SCHEMA "false" does not.

A few lines of code later (same concept of implicit cursor etc.), I extract the DDL of the materialized view itself, and wow, there EMIT_SCHEMA "false" is respected: Code:
<...>

DDL_MV := dbms_metadata.get_ddl('MATERIALIZED_VIEW',rec.object_name,rec.owner);
<...>

Result:
CREATE MATERIALIZED VIEW "MAT_ABCFEFINNODEVIEW" <...>

Did one of you ever got across this? Is there an explanation, or is it just in my head? ;) Thank you very much in advance, much appreciated!

Best regards

-- 
Martin Klier | Performing Databases GmbH 
Managing Partner | Senior DB Consultant 
Oracle ACE 

martin.klier_at_performing-db.com | https://www.performing-databases.com 

--
http://www.freelists.org/webpage/oracle-l
Received on Tue Aug 22 2017 - 15:34:15 CEST

Original text of this message