µ±ÎÒÃÇÏëÒª²é¿´Ä³¸ö±í»òÕßÊDZí¿Õ¼äµÄDDLµÄʱºò£¬¿ÉÒÔÀûÓà dbms_metadata.get_ddl Õâ¸ö°üÀ´²é¿´¡£
dbms_metadata°üÖеÄget_ddlº¯ÊýÏêϸ²ÎÊý£º
GET_DDLº¯Êý·µ»Ø´´½¨¶ÔÏóµÄÔÊý¾ÝµÄDDLÓï¾ä£¬Ïêϸ²ÎÊýÈçÏÂ
-- object_type --- ÐèÒª·µ»ØÔÊý¾ÝµÄDDLÓï¾äµÄ¶ÔÏóÀàÐÍ
-- name --- ¶ÔÏóÃû³Æ
-- schema --- ¶ÔÏóËùÔÚµÄSchema£¬Ä¬ÈÏΪµ±Ç°Óû§ËùÔÚËùSchema
-- version --- ¶ÔÏóÔÊý¾ÝµÄ°æ±¾
-- model --- ÔÊý¾ÝµÄÀàÐÍĬÈÏΪORACLE
-- transform. --- XSL-T transform. to be applied.
-- RETURNS --- ¶ÔÏóµÄÔÊý¾ÝĬÈÏÒÔCLOBÀàÐÍ·µ»Ø
dbms_metadata°üÖеÄget_ddlº¯Êý¶¨Ò壺
FUNCTION get_ddl (
object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform. IN VARCHAR2 DEFAULT 'DDL'
) RETURN CLOB;
×¢Ò⣺Èç¹ûʹÓÃsqlplusÐèÒª½øÐÐÏÂÁиñʽ»¯£¬ÌرðÐèÒª¶Ôlong½øÐÐÉèÖ㬷ñÔòÎÞ·¨ÏÔʾÍêÕûµÄSQL
set linesize 120
set pages 1000
set long 10000
---------------------------------------------------------------------------------------
²é¿´´´½¨Óû§±íµÄSQL
²é¿´µ±Ç°Óû§±íµÄSQL£º
SELECT DBMS_METADATA.GET_DDL('TABLE','EMP') FROM DUAL;
²é¿´ÆäËûÓû§±íµÄSQL£º
SELECT DBMS_METADATA.GET_DDL('TABLE','DEPT','SCOTT') FROM DUAL;
²é¿´´´½¨Óû§Ë÷ÒýµÄSQL
²é¿´ËùÐè±íµÄË÷Òý£º
SELECT INDEX_NAME,INDEX_TYPE,TABLE_NAME FROM user_indexes WHERE table_name='EMP';
²é¿´µ±Ç°Óû§Ë÷ÒýµÄSQL£º
SELECT DBMS_METADATA.GET_DDL ('INDEX','PK_DEPT') FROM DUAL;
²é¿´ÆäËûÓû§Ë÷ÒýµÄSQL£º
SELECT DBMS_METADATA.GET_DDL ('INDEX','PK_DEPT','SCOTT') FROM DUAL;
²é¿´´´½¨Ö÷¼üµÄSQL
²é¿´ËùÐè±íµÄÔ¼Êø£º
SELECT OWNER,TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE
FROM user_constraints WHERE TABLE_NAME='EMP';
²é¿´´´½¨Ö÷¼üµÄSQL£º
SELECT DBMS_METADATA.GET_DDL('CONSTRAINT','EMP_PK') FROM DUAL;
²é¿´´´½¨Íâ¼üµÄSQL£º
SELECT DBMS_METADATA.GET_DDL('REF_CONSTRAINT','EMP_FK_DEPT') FROM DUAL;
²é¿´´´½¨VIEWµÄÓï¾ä
²é¿´µ±Ç°Óû§ÊÓͼµÄSQL£º
SELECT DBMS_METADATA.GET_DDL('VIEW', 'MY_TABLES') FROM DUAL;
²é¿´ÆäËûÓû§ÊÓͼµÄSQL£º
SELECT DBMS_METADATA.GET_DDL('VIEW', 'MY_TABLES','SCOTT') FROM DUAL;
²é¿´´´½¨ÊÓͼµÄSQLÒ²¿ÉÒÔ£º
SELECT TEXT FROM user_views WHERE view_name='VIEW_NAME';
---------------------------------------------------------------------------
DBMS_METADATA.GET_DDLµÄһЩʹÓü¼ÇÉ
µÃµ½Ò»¸öÓû§ÏµÄËùÓÐ±í£¬Ë÷Òý£¬´æ´¢¹ý³Ì£¬º¯ÊýµÄddlÓï¾ä£º
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, U.OBJECT_NAME)
FROM USER_OBJECTS U
WHERE U.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE','FUNCTION');
µÃµ½ËùÓбí¿Õ¼äµÄddlÓï¾ä£º
SELECT DBMS_METADATA.GET_DDL('TABLESPACE',TS.tablespace_name)
FROM DBA_TABLESPACES TS;
µÃµ½ËùÓд´½¨Óû§µÄddlÓï¾ä£º
SELECT DBMS_METADATA.GET_DDL('USER',U.username)
FROM DBA_USERS U;
---------------------------------------------------------------------------
ÀûÓÃDBMS_METADATA.GET_DDL°üµÃµ½Êý¾Ý¿âµÄ¶ÔÏóµÄddl½Å±¾
»ñÈ¡µ¥¸öµÄ½¨±í¡¢ÊÓͼºÍ½¨Ë÷ÒýµÄÓï·¨£º
SET PAGESIZE 1000
SET LINESIZE 120
SET NEWPAGE 0
SET ECHO OFF /* ÏÔʾÎļþÖеÄÃüÁֻÏÔʾִÐнá¹û */
/* SET ECHO ON ÏÔʾÎļþÖеÄÿÌõÃüÁî¼°Ö´Ðнá¹û */
SET LONG 10000
SPOOL spool/dept.sql
select dbms_metadata.get_ddl('TABLE','TABLE_NAME','SCOTT') from dual;
select dbms_metadata.get_ddl('VIEW','VIEW_NAME','SCOTT') from dual;
select dbms_metadata.get_ddl('INDEX','INDEX_NAME','SCOTT') from dual;
SPOOL OFF;
»ñȡһ¸öSCHEMAϵÄËùÓн¨±í¡¢ÊÓͼºÍ½¨Ë÷ÒýµÄÓï·¨£¬ÒÔscottΪÀý£º
SET PAGESIZE 1000
SET LINESIZE 120
SET NEWPAGE 0
SET ECHO OFF
SET LONG 10000
SPOOL 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;
»ñȡij¸öSCHEMAµÄ½¨È«²¿´æ´¢¹ý³ÌµÄÓï·¨£º
SET PAGESIZE 1000
SET LINESIZE 120
SET NEWPAGE 0
SET ECHO OFF
SET LONG 10000