oracle中如何获取建表ddl语句

网友投稿 890 2024-01-03

oracle中如何获取建表ddl语句

小编给大家分享一下oracle中如何获取建表ddl语句,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

oracle中如何获取建表ddl语句

在使用DIP工具初始化时遇到大量分区表,无法正常使用全同步功能,故先提取表结构,后同步数据。

第一种方法是使用工具,如:

pl/sql developer,在【工具】--【导出用户对象】出现就可以得到建表脚本。

第二种方法是,sql语句。

DBMS_METADATA.GET_DDL包可以得到数据库的对象的ddl脚本。如下(SQLPLUS中执行): 

1.得 到一个表的ddl语句:

SET SERVEROUTPUT ON

SET LINESIZE 1000 

SET FEEDBACK OFF 

set long 99999           

set pagesize 4000   

---去除storage等多余参数(可选)

SQL> EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,STORAGE,false);

-- 获取ddl        ##(TABLE,表名,用户名)

SQL> SELECT DBMS_METADATA.GET_DDL(TABLE,CBZS_DMCODE_DEP_TYPE,MOBILE_CBZS) FROM DUAL;

DBMS_METADATA.GET_DDL(TABLE,CBZS_DMCODE_DEP_TYPE,MOBILE_CBZS)

--------------------------------------------------------------------------------

  CREATE TABLE "MOBILE_CBZS"."CBZS_DMCODE_DEP_TYPE"

(    "TYPE_ONE" VARCHAR2(6),

        "TYPE_ONE_DESC" VARCHAR2(30),

        "TYPE_TWO" VARCHAR2(6),

"TYPE_TWO_DESC" VARCHAR2(30),

        "TYPE_ONE_ORD" NUMBER,

        "TYPE_TWO_ORD" NUMBER

) PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255 COMPRESS LOGGING

  TABLESPACE "DM_TBS_001"

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;

另外,若执行不了该包,则需要正确安装好相应的包。

拓展:-- 通过dblink补数据

insert into MOBILE_CBZS.MSS_BMS_ZHIJU_YUSUAN select * from MOBILE_CBZS.MSS_BMS_ZHIJU_YUSUAN@oldhbdw;

以上是“oracle中如何获取建表ddl语句”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:怎么解决数据库LATCH:ROW CACHE OBJECTS问题
下一篇:怎么理解Oracle临时表空间组
相关文章

 发表评论

暂时没有评论,来抢沙发吧~