0
点赞
收藏
分享

微信扫一扫

oracle dbms_metadata.get_ddl方法总结

转角一扇门 2022-08-05 阅读 70


set line 200
set pagesize 0
set long 99999
set feedback off
set echo off

1.查看SYS.T1表的建表语句

SQL> select dbms_metadata.get_ddl('TABLE','T1','SYS') from dual;

DBMS_METADATA.GET_DDL('TABLE','T1','SYS')
--------------------------------------------------------------------------------

CREATE TABLE "SYS"."T1"
( "ID" NUMBER(*,0),
"NAME" VARCHAR2(10)
)

2.查看索引

SQL> create INDEX T1_INDEX ON SYS.T1(ID);

Index created.

SQL> select dbms_metadata.get_ddl('INDEX','T1_INDEX','SYS') from dual;

DBMS_METADATA.GET_DDL('INDEX','T1_INDEX','SYS')
--------------------------------------------------------------------------------

CREATE INDEX "SYS"."T1_INDEX" ON "SYS"."T1" ("ID")
PCTFREE 10 INITRANS 2 M

3.查看视图

SQL> create view T1_VIEW as select id from SYS.T1;

View created.

SQL> select dbms_metadata.get_ddl('VIEW','T1_VIEW','SYS') from dual;

DBMS_METADATA.GET_DDL('VIEW','T1_VIEW','SYS')
--------------------------------------------------------------------------------

CREATE OR REPLACE FORCE NONEDITIONABLE VIEW "SYS"."T1_VIEW" ("ID") AS
sele

4.查看PROCEDURE​

select dbms_metadata.get_ddl('PROCEDURE','PROCEDURE_NAME','PROCEDURE_OWNER') from dual;

5.查看FUNCTION

select dbms_metadata.get_ddl('FUNCTION','FUNCTION_NAME','FUNCTION_OWNER') from dual;

6.下面这个脚本用于获得某个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.OJECT_NAME, U.OWNER,) from dba_objects u where u.object_type = 'PROCEDURE';
select dbms_metadata.get_ddl('FUNCTION',U.OJECT_NAME, U.OWNER,) from dba_objects u where u.object_type = 'FUNCTION';
spool off;

7.获得表空间的DDL​​​​

select dbms_metadata.get_ddl('TABLESPACE','TBS_NAME') from dual;

8.获得所有表空间的DDL:

SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)
FROM DBA_TABLESPACES TS;

9.获得用户的DDL

select dbms_metadata.get_ddl('USER','EPAY_USER') from dual;

10.获得所有用户的DDL​

SELECT DBMS_METADATA.GET_DDL('USER',U.username) FROM DBA_USERS U;

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux,oracle

举报

相关推荐

0 条评论