Allen的专栏

当我们想要查看某个表或者是表空间的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类型返回

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 120set pages 1000set long 10000

—————————————————————————————

查看创建用户表的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;

查看当前用户视图的SQL:

SELECTDBMS_METADATA.GET_DDL(‘VIEW’, ‘MY_TABLES’)FROM DUAL;

查看其他用户视图的SQL:

SELECTDBMS_METADATA.GET_DDL(‘VIEW’, ‘MY_TABLES’,’SCOTT’)FROM DUAL;

SELECT TEXT FROM user_views WHERE view_name=’VIEW_NAME’;

—————————————————————————

SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, U.OBJECT_NAME)FROM USER_OBJECTS UWHERE U.OBJECT_TYPE IN (‘TABLE’,’INDEX’,’PROCEDURE’,’FUNCTION’);

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

发光并非太阳的专利,你也可以发光

Allen的专栏

相关文章:

你感兴趣的文章:

标签云: