情景:测试环境用表结构够和数据存在,但是索引没有,需要按照生产环境为测试环境中的所有表的创建索引。
用户名 scott .
解决方案:
一、在生产上生成scott索引定义的dump 文件
语法如下:
expdp scott/*** SCHEMAS=scott DIRECTORY=DUMP_DIR DUMPFILE=scott_index.dmp LOGFILE=scott_index.log content=METADATA_ONLY include=index
注:关键字content=METADATA_ONLY include=index 不可缺失
二、将文件cp 到测试环境
scp ....
三、在测试上生成.sql文件
语法如下:
impdp scott/*** directory=DUMP_DIR dumpfile=scott_index.dmp LOGFILE=scott_index.log sqlfile=scott_indexfile.sql
四、在测试环境下执行.sql文件
sqlplus scott/***
sql>@/oradata/dump_dir/stl_indexfile.sql
总结:以上,有几个需要注意的地方。
1、第一个是生成元数据时必须只include index ,不包含其它定义;
2、注意每一步是否会出现一些严重的错误
3、由于sit可能有的表已经有了相应的索引,所以在执行sqlfile 的时候出现一些index already exist 的错误时可以予以忽视。