如何获取Oracle数据库中某个用户下的所有表、索引、约束、触发器
2013-11-26 00:00
471 查看
在Oracle数据库中,如何快速获取某个用户下的所有表、索引、约束及触发器的创建SQL语句呢?本文给出一个简单的示例脚本,经过测试,除位于回收站下的对象及只读视图的约束语句不能获取,其它对象基本均可获取CREATE语句。
脚本内容如下:
脚本内容如下:
[oracle@oracledg ~]$ cat get_ddl.sql -- Be sure the variable 'S' means the Schema name,it should be UPPERCASE. -- And this script COULDNOT get the constraints CREATE DDL,which CONSTRAINT_TYPE is 'O',cause it's READ ONLY on a view. def S='&Schema' set serveroutput on set long 20000 set lines 2000 pages 0 ver off echo off head off feed off set newpage none set trimspool on set long 5000000 spool &S..sql DECLARE CURSOR C1 IS SELECT '&S' AS u_name, table_name AS tab_name FROM user_tables; CURSOR C2 IS SELECT '&S' AS u_name, index_name AS idx_name FROM user_indexes; CURSOR C3 IS SELECT '&S' AS u_name, constraint_name AS cons_name FROM user_constraints where constraint_type not in('R','O'); CURSOR C4 IS SELECT '&S' AS u_name, table_name AS tab_name FROM user_constraints where constraint_type in('R'); CURSOR C5 IS SELECT '&S' AS u_name, trigger_name AS trig_name FROM user_triggers; V_MSG CLOB; BEGIN DBMS_OUTPUT.put_line('TheCREATEDDLforschema&S''s Tables are:'); FOR x IN C1 LOOP select dbms_metadata.get_ddl('TABLE', x.tab_name, x.u_name) INTO V_MSG from dual; DBMS_OUTPUT.put_line(V_MSG); END LOOP; DBMS_OUTPUT.put_line('TheCREATEDDLforschema&S''s Indexes are:'); FOR x IN C2 LOOP select dbms_metadata.get_ddl('INDEX', x.idx_name, x.u_name) INTO V_MSG from dual; DBMS_OUTPUT.put_line(V_MSG); END LOOP; DBMS_OUTPUT.put_line('TheCREATEDDLforschema&S''s Constraints are:'); FOR x IN C3 LOOP select dbms_metadata.get_ddl('CONSTRAINT', x.cons_name, x.u_name) INTO V_MSG from dual; DBMS_OUTPUT.put_line(V_MSG); END LOOP; DBMS_OUTPUT.put_line('TheCREATEDDLforschema&S''s Reference Constraints are:'); FOR x IN C4 LOOP select dbms_metadata.get_dependent_ddl('REF_CONSTRAINT', x.tab_name, x.u_name) INTO V_MSG from dual; DBMS_OUTPUT.put_line(V_MSG); END LOOP; DBMS_OUTPUT.put_line('TheCREATEDDLforschema&S''s Triggers are:'); FOR x IN C5 LOOP select dbms_metadata.get_ddl('TRIGGER', x.trig_name, x.u_name)INTOV_MSGfromdual; DBMS_OUTPUT.put_line(V_MSG); ENDLOOP; END; / spooloff; [oracle@oracledg ~]$
相关文章推荐
- 如何获取Oracle数据库中某个用户下的所有表、索引、约束、触发器
- 如何获取Oracle数据库中某表及索引、约束、触发器、对象权限的创
- 如何获取Oracle数据库中某表及索引、约束、触发器、对象权限的创
- 去除某SQL Server数据库中所有约束,索引,触发器,统计的代码
- 如何在oracle中查询所有用户表的表名、主键名称、索引、外键等 - Oracle 基础和管理_files
- 牛腩购物9 用户表设计/动软生成器/金钱字段decimal(18, 2)/ 注册的时候的前台js判断/后台代码判断/正则表达式软件/RegexBuddy/设置数据库字段的唯一性约束/如何获取控件在前台html的id值/如何将C#的后台正则换成js的正则
- MSSQL 如何删除字段的所有约束和索引
- JAVA微信开发:[17]如何获取所有关注用户
- 如何在oracle中查询所有用户表的表名、主键名称、索引、外键等
- 创建数据库、表、主外键、各种约束、存储过程、视图、索引、事务使用、触发器、创建登录账号、数据库用户 Sql语句示例
- Oracle 删除一个用户下的所有表、触发器、约束
- JS获取按键的代码,Js如何屏蔽用户的按键,Js获取用户按键对应的ASII码(兼容所有浏览器)
- MSSQL如何删除字段的所有约束和索引
- 如何获得数据库中所有用户创建的索引
- 如何在oracle中查询所有用户表的表名、主键名称、索引、外键等
- JS获取按键的代码,Js如何屏蔽用户的按键,Js获取用户按键对应的ASII码(兼容所有浏览器)
- 如何在oracle中查询所有用户表的表名、主键名称、索引、外键等
- openfire如何获取所有在线用户
- MyBatis: 获取一个用户的所有blog的基础上讲一下如何获取一篇文章机器作者的信息。
- 如何在oracle中查询所有用户表的表名、主键名称、索引、外键等