dbms_metadata.get_ddl()来获得对象的定义语句

简介:
今天打算将一个数据库的索引在另一个测试库上重新创建一遍,研究了一下。
set pagesize 0
set long 90000
set feedback off
set echo off
spool all_index.sql
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
FROM USER_INDEXES u;
spool off;
最后找个编辑器替换一下表空间名,在表空间名后面加上个;
然后让ORACLE慢慢执行吧
其实是调用DBMS_METADATA.GET_DDL这个外部过程来获得创建DLL语句,还能获得很多东西

这个是所有用户的创建DLL
SELECT DBMS_METADATA.GET_DDL('USER',U.username)
FROM DBA_USERS U;

这个是所有表的DLL

SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
FROM USER_TABLES u;

所有表空间的DLL
SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)
FROM DBA_TABLESPACES TS;

组合一下,所有表,索引存储过程

SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)
  FROM USER_OBJECTS u
 where U.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE');

另外一个相关的语句生成删除某个用户全部索引的语句
select 'drop index '||index_name||';' form. user_indexes;
目录
相关文章
|
7月前
|
SQL 数据库
SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用
NULL 值是指字段没有值的情况。如果表中的字段是可选的,那么可以插入新记录或更新记录而不向该字段添加值。此时,该字段将保存为 NULL 值。需要注意的是,NULL 值与零值或包含空格的字段不同。具有 NULL 值的字段是在记录创建期间留空的字段。
119 0
|
4月前
|
存储 NoSQL 关系型数据库
什么是DBMS及其类型
【8月更文挑战第3天】
258 6
什么是DBMS及其类型
|
4月前
|
存储 JSON 关系型数据库
什么是DBMS及其类型?
【8月更文挑战第1天】
169 6
什么是DBMS及其类型?
|
4月前
|
SQL 数据处理 数据库
DELETE 和 TRUNCATE 语句之间的详细区别
【8月更文挑战第31天】
537 0
|
SQL 数据库 数据库管理
sql数据定义语句(cascade,set,null,no action的区别)
sql数据定义语句(cascade,set,null,no action的区别)
276 0
|
SQL 缓存 运维
SQL 中delete与truncate的区别
SQL 中delete与truncate的区别
|
SQL
使用 CREATE SCHEMA 语句来创建模式
使用 CREATE SCHEMA 语句来创建模式
186 0
|
关系型数据库 MySQL
DDL-数据定义语句
DDL-数据定义语句
|
SQL 测试技术
abap代码使用sql语句删除自定义表的1条数据
自定义表,指的是abap开发人员使用SE11创建的透明表。既然是自己创建的表,那么增删改查的时候,基本上很自由,至少可以随意使用sql语句对表的内容进行处理。那么,对于这种情况,如何删除数据呢?如下图,是表的内容,红框中的数据,是我们打算删除的内容:删除一条记录。
2138 0