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%';

  • 相关阅读:
    C# 获取电脑SN号
    Windows 使用ffmpeg将MP4视频转换为m3u8格式
    C# 创建或打开TXT文件并逐行写入
    Dictionary通过下标获取key和value
    Winfrom 连接考勤机设备时界面假死
    Win 10操作系统快捷键
    SQL Server 2008 在表中插入新的字段
    什么是CSR
    Sql Server中的事务隔离级别
    Web验证方式(4)--JWT
  • 原文地址:https://www.cnblogs.com/fengaix6/p/4065827.html
Copyright © 2011-2022 走看看