zoukankan      html  css  js  c++  java
  • [转] Oracle利用DBMS_METADATA.GET_DDL获取对象DDL语句

    dbms_metadata.get_ddl

    1.得到一个表或索引的ddl语句
    SELECT DBMS_METADATA.GET_DDL('TABLE','DEPT','SCOTT') FROM DUAL;

    select dbms_metadata.get_ddl('INDEX','PK_DEPT','SCOTT') from dual;

    2.得到一个用户下的所有表,索引,存储过程的ddl

    SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)
    FROM USER_OBJECTS u
    where U.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE');

    3.得到所有表空间的ddl语句

    SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)
    FROM DBA_TABLESPACES TS;

    4.得到所有创建用户的ddl

    SELECT DBMS_METADATA.GET_DDL('USER',U.username)
    FROM DBA_USERS U;

    应用:

    a. 获取单个的建表、视图和建索引的语法

    set pagesize 0
    set long 90000
    set feedback off
    set echo off
    spool DEPT.sql
    select dbms_metadata.get_ddl('TABLE','TAB_NAME','SCOTT') from dual;
    select dbms_metadata.get_ddl('VIEW','VIEW_NAME','SCOTT') from dual;
    select dbms_metadata.get_ddl('INDEX','IDX_NAME','SCOTT') from dual;
    spool off;

    b.获取一个SCHEMA下的所有建表、视图和建索引的语法,以scott为例:
    set pagesize 0
    set long 90000
    set feedback off
    set echo off
    spool schema.sql
    connect scott/tiger;
    SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
    SELECT DBMS_METADATA.GET_DDL('VIEW',u.VIEW_name) FROM USER_VIEWS u;
    SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
    spool off;

    c. 获取某个SCHEMA的建全部存储过程的语法
    set pagesize 0
    set long 90000
    set feedback off
    set echo off
    spool procedures.sql
    select DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name) from user_objects u where object_type = 'PROCEDURE';
    spool off;

    d. 获取某个SCHEMA的建全部函数的语法
    set pagesize 0
    set long 90000
    set feedback off
    set echo off
    spool function.sql
    select DBMS_METADATA.GET_DDL('FUNCTION',u.object_name) from user_objects u where object_type = 'FUNCTION';
    spool off;

    获取某个用户的所有索引的DDL

    select dbms_metadata.get_ddl('INDEX',index_name,owner) from dba_indexes a where a.owner='SCOTT';

    select dbms_metadata.get_ddl('INDEX',index_name,owner) from dba_indexes a where a.owner not like '%SYS%';

  • 相关阅读:
    L1-050. 倒数第N个字符串
    全排列问题(递归)
    L2-014. 列车调度
    连通 OR 不连通(NOJ 1044)
    数三角形(codevs 3693)
    Min(BZOJ 1441)
    STL中heap用法
    军训分批(codevs 2751)
    团伙(codevs 2597)
    Subsequence(hdu 3530)
  • 原文地址:https://www.cnblogs.com/fengaix6/p/4065827.html
Copyright © 2011-2022 走看看