dbms_metadata.get_ddl paketi
Databasede bulunan objelerin, userların CREATE scriptine ihtiyacımız olursa bu noktada
DBMS_metadata paketi imdadımıza yetişiyor.Başka yollarla da elde etmek mümkün(toad, plsql developer VB tollar) Ama biz burada dbms_metadata paketini ve neler yapabildiğini inceleyeceğiz. Paketin genel kullanımı 3 parametre vererek DDL scriptlerine erişebiliyoruz.
dbms_metadata.get_ddl(object_type,NAME,SCHEMA) şeklinde kullanılır.
Aşağıda örnekleyelim.
–Table script
SELECT dbms_metadata.get_ddl(‘TABLE’,name => ‘STRESSTEST#VR120515_VR1’ ,schema => ‘DM’) FROM dual;
–Index Script
select dbms_metadata.get_ddl(‘INDEX’,’NB’,’DM’) from dual;
–Tablespace Script
select dbms_metadata.get_ddl(‘TABLESPACE’,’DM’) from dual;
–User Script
SELECT DBMS_METADATA.GET_DDL(‘USER’,’DM’) FROM dual;
–Trigger Script
SELECT DBMS_METADATA.GET_DDL(‘TRIGGER’,’UPDATE_JOB_HISTORY’,’MX’) FROM dual;
–Package Script
SELECT DBMS_METADATA.GET_DDL(‘PACKAGE’,’DBMS_OUTPUT’,’SYS’) FROM dual;
— DB link Script
select DBMS_METADATA.GET_DDL(‘DB_LINK’,’DBLINKDEV’) from dual;
–Sequence Script
SELECT dbms_metadata.get_ddl(‘SEQUENCE’,name => ‘ACCCFG#FIL_ACCD_DBFS’ ,schema => ‘MX’) FROM dual;
–Yetki Scriptleri
— Roller DDL
SELECT DBMS_METADATA.GET_GRANTED_DDL(‘ROLE_GRANT’,’DEV3_DM’) from dual;
— Obje Yetkileri
SELECT DBMS_METADATA.GET_GRANTED_DDL(‘OBJECT_GRANT’,’DEV3_DM’) from dual;
— Sistem Yetkileri
SELECT DBMS_METADATA.GET_GRANTED_DDL(‘SYSTEM_GRANT’,’DEV3_DM’) from dual;
Eğer obje schemada yoksa aşağıdaki gibi hata dönecektir.Ya da schemaya erişim yetkisi
yoksa SELECT_CATALOG_ROLE yetkisi verilmelidir.
ORA-31603: object “VR120515_VR2” of type TRIGGER not found in schema “PROD_DM”
GRANT SELECT_CATALOG_ROLE TO USER;