pl/sql批量导出创建索引的脚本

有同事要导出一个数据库用户下创建索引的脚本,然后拿到另外一个库里面去执行。很少有这样的需求,问了一下,他们要进行数据迁移,在新的库中要求索引单独放在一个表空间里面,于是就把所有的索引都删除了,进行重建。

本来这个可以用如下方法来实现:

ALTER INDEX index_name rebuild tablespace tbs_name;

 

既然索引已经删除了,就需要从原数据库中导出创建索引的脚本,索引是依附于表而存在的,没有办法用exp/expdp工具单独导出创建索引的脚本,不过我们可以通过如下方法进行:

1 生成批量导出索引的语句

在sqlplus中运行spool create_create_index.SQLSELECT'select dbms_metadata.get_ddl(''INDEX'', ' || ''''|| INDEX_NAME||'''' || ') from dual;'FROM user_indexes ;spool off

 

2 生成创建索引的sql语句

在sqlplus中运行spool create_index.SQL@create_create_index.SQLspool off

 

得到b.sql文件中即为创建索引的语句

3 创建索引

在sqlplus中运行@create_index.SQL

 

另外,如果用的是expdp迁移的话,在impdp的时候有一个SQLFILE参数,可以生成所有的ddl,这也包括所有的create index语句,但这个方法需要有expdp文件,另外需要在所有的ddl中选出相应的create index语句,相对以上方法较为复杂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值