在9i以后,可以利用DBMS_METADATA.GET_DDL包得到数据库的对象的ddl脚本。以下语句均在sqlplus中执行
1. 获取单个的建表、视图和建索引的语法
1 set pagesize 0
2 set long 90000
3 set feedback off
4 set echo off
5 spool DEPT.sql
6 --以下参数可以根据实际情况打开或关闭
7 --输出信息采用缩排或换行格式化
8 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'pretty', true);
9 --确保每个语句都带分号
10 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'sqlterminator', true);
11 --关闭表索引、外键等关联(后面单独生成)
12 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'constraints', false);
13 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'ref_constraints', false);
14 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'constraints_as_alter', false);
15 --关闭存储、表空间属性
16 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'storage', false);
17 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'tablespace', false);
18 --关闭创建表的PCTFREE、NOCOMPRESS等属性
19 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'segment_attributes', false);
20
21 --表
22 SELECT DBMS_METADATA.GET_DDL('TABLE','TAB_NAME','HR') FROM DUAL; --表名(TAB_NAME) SECHEMA(HR)
23 --视图
24 SELECT DBMS_METADATA.GET_DDL('VIEW','VIEW_NAME','HR') FROM DUAL;
25 --索引
26 SELECT DBMS_METADATA.GET_DDL('INDEX','IDX_NAME','HR') FROM DUAL;
27 spool off;
2. 获取一个SCHEMA下的所有建表、视图和建索引的语法,以HR为例:
1 2. 获取一个SCHEMA下的所有建表、视图和建索引的语法,以HR为例:
2 set pagesize 0
3 set long 90000
4 set feedback off
5 set echo off
6 spool schema.sql
7 connect HR/HR12345; --当前所连接用户
8
9 --输出信息采用缩排或换行格式化
10 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'pretty', true);
11 --确保每个语句都带分号
12 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'sqlterminator', true);
13 --关闭表索引、外键等关联(后面单独生成)
14 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'constraints', false);
15 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'ref_constraints', false);
16 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'constraints_as_alter', false);
17 --关闭存储、表空间属性
18 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'storage', false);
19 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'tablespace', false);
20 --关闭创建表的PCTFREE、NOCOMPRESS等属性
21 exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'segment_attributes', false);
22
23 --表
24 SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;--获取当前用户的DDL语句
25 --视图
26 SELECT DBMS_METADATA.GET_DDL('VIEW',u.VIEW_name) FROM USER_VIEWS u;
27 --索引
28 SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
29 spool off;
3. 获取HR下的全部存储过程的语法
1 set pagesize 0
2 set long 90000
3 set feedback off
4 set echo off
5 spool procedures.sql
6 connect HR/HR12345;
7
8
9 select DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name)
10 from user_objects u
11 where object_type = 'PROCEDURE';
12 spool off;
4. 获取HR下的全部函数的语法
1 set pagesize 0
2 set long 90000
3 set feedback off
4 set echo off
5 spool function.sql
6 connect HR/HR12345;
7 select DBMS_METADATA.GET_DDL('FUNCTION',u.object_name)
8 from user_objects u
9 where object_type = 'FUNCTION';
10 spool off;
复制代码
5.得到所有表空间的ddl语句
复制代码
1 set pagesize 0
2 set long 90000
3 set feedback off
4 set echo off
5 spool tablespace.sql
6
7 SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)
8 FROM DBA_TABLESPACES TS;
9
10 spool off;
复制代码
6.得到所有创建用户的ddl
复制代码
1 set pagesize 0
2 set long 90000
3 set feedback off
4 set echo off
5 spool user.sql
6
7 SELECT DBMS_METADATA.GET_DDL('USER',U.username)
8 FROM DBA_USERS U;
9
10 spool off;
复制代码
通过以上sql的组合,可以获取到一个数据库或SCHEMA的逻辑结构
- 浏览: 3791 次
- 性别:
- 来自: 苏州
相关推荐
Dr.Racket, r5s5语言 写的一个简单迭代,可以计算阶乘。
Dr.Racket,r5s5 语言 写的 牛顿开方 算法,可以计算平方根。
毕业设计MATLAB源码资料
Quanta LX9 schematic
Quanta LX6 schematic
historical perspective
JetBrainsColorScheme 配色主题 个人喜欢。支持 phpstorm idea webstorm!
MIT关于Sheme的教程
价值不菲的国软公司的XML内部培训资料11M包含内容: XML DTD SHEME SAX XMLSPY 官方卖价上万元,官方网站:www.guoruan.com
SynthWave BBEdit Color Sheme(主题) 这是我为BBEdit创建的主题,该想法基于 。 这个想法很简单。 创建一个看起来很酷的主题,让您想起80年代,您可能从未住过。 没有光泽,没有光泽,看起来很酷,像霓虹灯。 ...
不再使用URL SHEME拦截方式,直接采用webview的addJavaScriptInterface,此方法根据Android跟踪,是目前采用webview方案js与原生交互效率最高的一种系统实现;对于API小于17的用户,1.0.3版本将支持版本降低到14,...
RISC-V项目 首先,我们将实现这个表示代表Reg-Reg ALU指令的数据路径的sheme。 每个框将具有其VHDL代码的每个目录
Lisp 方言 Scheme 的一个解释器,可以按照在 Windows 系统上,使用非常方便,也很只智能。
我们在一篇文章中读到了这个 sheme,当我们讨论它时,我们想试一试。 所以不要责怪我们,因为我们做了这么大而且看起来像代码一样不舒服,只要注意这些简单的编码指南,杰夫贝推荐的和我们目前正在使用的(即使我们...