您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

oracle 如何查看创建表等数据库对象时的DDL语句

2024/5/24 2:56:04发布17次查看
当我们想要查看某个表或者是表空间的ddl的时候,可以利用dbms_metadata.get_ddl这个包来查看。 dbms_metadata包中的get_ddl函数详细参数 get_ddl函数返回创建对象的原数据的ddl语句,详细参数如下 -- object_type ---需要返回原数据的ddl语句的对象类型 -- n
当我们想要查看某个表或者是表空间的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 180    
set pages 999
set long 90000    
查看创建用户表的sql
查看当前用户表的sql
select dbms_metadata.get_ddl('table','employees') from dual;
查看其他用表或索引的sql
select dbms_metadata.get_ddl('table','dept','scott') from dual;
查看创建用户索引的sql
查看所需表的索引
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
查看所需表的约束
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
sql> select dbms_metadata.get_ddl('ref_constraint','emp_fk_dept') from dual;
查看创建view的语句
查看当前用户视图的sql
sql> select dbms_metadata.get_ddl('view', 'my_tables')
查看其他用户视图的sql
sql> select dbms_metadata.get_ddl('view', 'my_tables','scott‘) from dual;
查看创建视图的sql也可以
sql> select text from user_views where view_name=upper('&view_name');
dbms_metadata.get_ddl的一些使用技巧
1、得到一个用户下的所有表,索引,存储过程,函数的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‘);
2、得到所有表空间的ddl语句
select dbms_metadata.get_ddl('tablespace', ts.tablespace_name)
from dba_tablespaces ts;
3、得到所有创建用户的ddl
select dbms_metadata.get_ddl('user',u.username)
from dba_users u;
4、去除storage等多余参数
execute dbms_metadata.set_transform_param(dbms_metadata.session_transform,'storage',false);
常见错误
sql> select dbms_metadata.get_ddl('table','pc','scott') from dual;
error:
ora-19206: invalid value for query or ref cursor parameter
ora-06512: at sys.dbms_xmlgen, line 83
ora-06512: at sys.dbms_metadata, line 345
ora-06512: at sys.dbms_metadata, line 410
ora-06512: at sys.dbms_metadata, line 449
ora-06512: at sys.dbms_metadata, line 615
ora-06512: at sys.dbms_metadata, line 1221
ora-06512: at line 1
no rows selected
解决办法:运行$oracle_home/rdbms/admin/catmeta.sql
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product