ITPub博客

首页 > 数据库 > 数据库开发技术 > 【怎么办002】想要获取数据库对象的定义(DDL)怎么办

【怎么办002】想要获取数据库对象的定义(DDL)怎么办

原创 数据库开发技术 作者:lukeunique 时间:2020-04-22 21:31:00 0 删除 编辑

问题:

想要获取数据库对象的定义(DDL)怎么办?


方法:

可以通过以下的方法获取数据库对象的定义(DDL)。


1. 使用DBMS_METADATA.GET_DDL程序包


     SQL> set pages 0     SQL> set longchunksize 3000     SQL> set long 2000000000     SQL> select dbms_metadata.get_ddl('<对象类型>','<对象名>','<对象SCHEMA>') from dual;

    例:


--表定义 SQL> set pages 0 SQL> set longchunksize 3000 SQL> set long 2000000000 SQL> select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual;
--索引定义 SQL> select dbms_metadata.get_ddl('INDEX','EMP_IND','SCOTT') from dual;
--用户视图定义 SQL> select dbms_metadata.get_ddl('VIEW','EMP_VIEW','SCOTT') from dual;


    参考:

    Home / Oracle Database Online Documentation Library, 12c Release 1 (12.1.0.2)    Database PL/SQL Packages and Types Reference    https://docs.oracle.com/database/121/ARPLS/d_metada.htm#ARPLS66885    >GET_xxx Functions



2. 使用Datapump获取DDL


    --创建DUMP导出路径    create or replace directory test_dir as '<DIRECTORY>';
--使用expdp的content=metadata_only仅导出metadata的DUMP expdp <LOGIN>/<PASSWORD> DIRECTORY=<DIRECTORY_NAME> content=metadata_only dumpfile=<DUMP_NAME>.dmp

--使用impdp的SQLFILE从DUMP导出DDL impdp <LOGIN>/<PASSWORD> DIRECTORY=<DIRECTORY_NAME> DUMPFILE=<DUMP_NAME>.dmp SQLFILE=<SQLFILE_NAME>.sql FULL=y

    例:

    expdp system/oracle DIRECTORY=test_dir content=metadata_only dumpfile=ddl.dmp SCHEMAS=SCOTT    impdp system/oracle DIRECTORY=test_dir SQLFILE=allsql.sql dumpfile=ddl.dmp FULL=y    



3.使用v$fixed_view_definition 视图查看动态视图的定义


    例:

    set pagesize 0    select view_name, view_definition from    v$fixed_view_definition where view_name =upper('gv$session');

注意:v$fixed_view_definition仅能显示4000个字符,

所以查看到的视图定义有可能不完整。



4.通过DBA_VIEWS视图查看数据库中的视图定义。


    例:

 set long 100000 select text from dba_views where view_name='UNIFIED_AUDIT_TRAIL';



【怎么办专栏】

数据库技术支持专家免费教你解决工作中的实际问题。

关于小编:
10+年数据库运维/开发/技术支持经验,多年项目维护/开发/团队管理经验,熟悉Oracle/MySQL/DB2等关系型数据库,翻译出版《MySQL基础教程》,Oracle 11g OCM大师认证、10g/11g/12c OCP、RAC&GI  OCE、Cloud等认证专家,IBM DB2 数据库V8.1 DBA认证。

本文仅代表个人观点,与任何公司无关。


原文作者:SQL和数据库技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-07-21

  • 博文量
    107
  • 访问量
    63572