dbms_metadata怎么用

网友投稿 485 2024-01-03

dbms_metadata怎么用

小编给大家分享一下dbms_metadata怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

dbms_metadata怎么用

dbms_metadata包中的get_ddl函数

1.得到一个表或索引的ddl语句

SELECT DBMS_METADATA.GET_DDL(TABLE,DEPT,SCOTT) FROM DUAL;

select dbms_metadata.get_ddl(INDEX,PK_DEPT,SCOTT) from dual;

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);

存储过程:查看 存储过程 的定义语句

SQL> SET LONG 9999

SQL> select dbms_metadata.get_ddl(PROCEDURE,ANALYZEDB,NEWCCS) from dual; 

CREATE OR REPLACE PROCEDURE "NEWCCS"."ANALYZEDB"

IS 

   CURSOR get_ownertable 

   IS 

      SELECT table_name 

        FROM user_tables; 

ownertable   get_ownertable%ROWTYPE;

BEGIN 

   OPEN get_ownertable; 

   LOOP 

      FETCH get_ownertable 

       INTO ownertable; 

EXIT WHEN get_ownertable%NOTFOUND;

      EXECUTE IMMEDIATE    analyze table  

                        || ownertable.table_name 

|| compute statistics for table for all indexes for all indexed  columns;

   END LOOP; 

EXCEPTION 

   WHEN OTHERS 

   THEN 

RAISE;

END;

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;

================================================================================

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

a. 获取单个的建表、视图和建索引的语法

set pagesize 0 

set long 90000 

set feedback off 

set echo off 

spool DEPT.sql

select dbms_metadata.get_ddl(TABLE,TAB_NAME,SCOTT) from dual; 

select dbms_metadata.get_ddl(VIEW,VIEW_NAME,SCOTT) from dual;

select dbms_metadata.get_ddl(INDEX,IDX_NAME,SCOTT) from dual; 

spool off;

b.获取一个SCHEMA下的所有建表、视图和建索引的语法,以scott为例: 

set pagesize 0 

set long 90000 

set feedback off 

set echo off 

spool schema.sql

connect scott/tiger; 

SELECT DBMS_METADATA.GET_DDL(TABLE,u.table_name) FROM USER_TABLES u;

SELECT DBMS_METADATA.GET_DDL(VIEW,u.VIEW_name) FROM USER_VIEWS u; 

SELECT DBMS_METADATA.GET_DDL(INDEX,u.index_name) FROM USER_INDEXES u;

spool off;

c.    获取某个SCHEMA的建全部存储过程的语法 

set pagesize 0 

set long 90000

set feedback off 

set echo off 

spool procedures.sql  

select   DBMS_METADATA.GET_DDL(PROCEDURE,u.object_name) from     user_objects u where     object_type = PROCEDURE;

spool off;

d.    获取某个SCHEMA的建全部函数的语法 

set pagesize 0

set long 90000 

set feedback off 

set echo off 

spool function.sql  

select   DBMS_METADATA.GET_DDL(FUNCTION,u.object_name) from     user_objects u where     object_type = FUNCTION;

spool off;

看完了这篇文章,相信你对“dbms_metadata怎么用”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

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

上一篇:PostgreSQL查询优化对表达式预处理中连接Var溯源的过程是什么
下一篇:EXP/IMP双引号有什么用
相关文章

 发表评论

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