[Oracle] dbms_metadata.get_ddl 的使用方法总结
达赖拉嘛简历,周六福,牛奶营养成分
dbms_metadata.get_ddl()用于获取对象的ddl,其具体用法如下。
注意:在sqlplus里,为了更好的展示ddl,需要设置如下参数:
set line 200
set pagesize 0
set long 99999
set feedback off
set echo off
1)获得表、索引、视图、存储过程、函数的ddl
select dbms_metadata.get_ddl('table','table_name','table_owner') from dual;
select dbms_metadata.get_ddl('index','index_name','index_owner') from dual;
select dbms_metadata.get_ddl('view','view_name','view_owner') from dual;
select dbms_metadata.get_ddl('procedure','procedure_name','procedure_owner') from dual;
select dbms_metadata.get_ddl('function','function_name','function_owner') from dual;
下面这个脚本用于获得某个schema下所有的表、索引、视图、存储过程、函数的ddl
set pagesize 0
set long 90000
set feedback off
set echo off
spool schema_ddl.sql
select dbms_metadata.get_ddl('table',u.table_name,u.owner) from dba_tables u;
select dbms_metadata.get_ddl('view',u.view_name,u.owner) from dba_views u;
select dbms_metadata.get_ddl('index',u.index_name,u.owner) from dba_indexes u;
select dbms_metadata.get_ddl('procedure',u.object_name, u.owner,) from dba_objects u where u.object_type = 'procedure';
select dbms_metadata.get_ddl('function',u.object_name, u.owner,) from dba_objects u where u.object_type = 'function';
spool off;
2)获得表空间的ddl
获得单个表空间的ddl:
select dbms_metadata.get_ddl('tablespace','tbs_name') from dual;
获得所有表空间的ddl:
select dbms_metadata.get_ddl('tablespace', ts.tablespace_name)
from dba_tablespaces ts;
3)获得用户的ddl
获得单个用户的ddl:
select dbms_metadata.get_ddl('user','epay_user') from dual;
获得所有用户的ddl:
select dbms_metadata.get_ddl('user',u.username)
from dba_users u;
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!!
点击进行留言回复
相关文章:
-
-
-
-
-
-
快速向表插入大量数据
当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候,oracle需要生成 redo log和undo log;此时最...
[阅读全文]
-
-
-
Oracle入门学习五
学习视频: https://www.bilibili.com/video/BV1tJ411r7EC?p=55 数据的完整性:保证插入表格的数据必须正确。...
[阅读全文]
-
Oracle入门学习六
事务:把一组操作看做一个工作单元,要么都执行,要么都不执行。dml操作才有事务,查询没有事务。 开始事务:从上一次的事务结束之后,从第一次dml操作,就...
[阅读全文]
-
网友评论