2011-08-18 12 views
8

Sử dụng SQL sau, DDL cho một chế độ xem vật chất nhất định có thể thu được.Xóa thông tin vùng bảng khỏi Chế độ xem được hiển thị hóa tài liệu DDL

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); 
END; 
SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW', 'OBJECT_NAME', 'SCHEMA_NAME') FROM DUAL; 

Tôi đang gặp khó khăn khi truy xuất DDL mà không có thông tin về không gian bảng. Các chỉ thị SET_TRANSFORM_PARAM thực sự được ghi lại là cụ thể cho các bảng và các chỉ mục (không phải là các khung nhìn vật chất hóa). Số STORAGE thực sự hoạt động trong khi các số TABLESPACESEGMENT_ATTRIBUTES không có hiệu lực. Có cách nào để bỏ qua các thông tin tablespace từ DDL được tạo ra không?

+0

Bạn đang chạy mã ở đâu và đầu ra trông như thế nào? –

Trả lời

6

Bạn cần đặt object_type trong các lệnh gọi hàm SET_TRANSFORM_PARAM thành MATERIALIZED_VIEW. Trong ví dụ của tôi bên dưới, không gian bảng không được đề cập:

create materialized view mv 
as select * from large_t where rownum < 100; 

begin DBMS_METADATA.SET_TRANSFORM_PARAM (
       transform_handle => dbms_metadata.session_transform, 
       name    => 'TABLESPACE', 
       value   => false, 
       object_type  => 'MATERIALIZED_VIEW'); 
end; 
/

select dbms_metadata.get_ddl(
      'MATERIALIZED_VIEW', 
      'MV', 
      user) 
     from dual; 

CREATE MATERIALIZED VIEW "SODONNEL"."MV" ("OWNER", "OBJECT_NAME", "SUBOBJECT_NAME", "OBJECT_ID", "DATA_OBJECT_ID", "OBJECT_TYPE", "CREATED", "LAST_DDL_TIME", "TIMESTAMP", "STATUS", "TEMPORARY", "GENERATED", "SECONDARY", "NAMESPACE", "EDITION_NAME") 
    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 FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
    BUILD IMMEDIATE 
    USING INDEX 
    REFRESH FORCE ON DEMAND 
    USING DEFAULT LOCAL ROLLBACK SEGMENT 
    USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE 
    AS select * from large_t where rownum < 100