前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【怎么办002】想要获取数据库对象的定义(DDL)怎么办

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

作者头像
SQLplusDB
发布2020-04-27 10:55:00
7070
发布2020-04-27 10:55:00
举报

问题:

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

方法:

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

1. 使用DBMS_METADATA.GET_DDL程序包

代码语言:javascript
复制
 SQL> set pages 0
     SQL> set longchunksize 3000
     SQL> set long 2000000000
     SQL> select dbms_metadata.get_ddl('<对象类型>','<对象名>','<对象SCHEMA>') from dual;

例:

代码语言:javascript
复制
  --表定义
     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;

参考:

代码语言:javascript
复制
   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

代码语言:javascript
复制
     --创建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

例:

代码语言:javascript
复制
    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 视图查看动态视图的定义

例:

代码语言:javascript
复制
    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视图查看数据库中的视图定义。

例:

代码语言:javascript
复制
 set long 100000
 select text from dba_views where view_name='UNIFIED_AUDIT_TRAIL';

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Oracle数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档