oracle impdp全库导入时如何指定表空间位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle impdp全库导入时如何指定表空间位置相关的知识,希望对你有一定的参考价值。

由于进行全库迁移使用expdp方式导出全库,即指定full=y,但是在其他机器上导入时,由于expdp全库导出时已经自带建立表空间的脚本,而新机器盘符与原来不一样,无法创建表空间,如何在导入之前指定表空间的位置呢。比如原来是"I:\oracle\product\test" 而新机器就没有I盘,如何手动指定到"E:\oracle"文件夹下呢

表空间位置就是用户的位置,所以直接选择相应的用户就可以了。
举例:imp tmrpt/tmrpt@22.11.103.12:1521/bocReport full= y file=c:\yuCheng\event_log_realtime.dmp ignore= y;
备注:如果是本机的话,直接将ip替换成127.0.0.1即可,file是文件的绝对路径。
参考技术A impdp scott/tiger FULL=y directory=dumpo dumpfile=full.dmp REMAP_DATAFILE='I:\oracle\product\test\test.dbf':'E:\oracle\product\test\test.dbf'

希望对你有用
参考技术B 你先把表空间建好了再导入呢?

oracle 的 impdp 命令如何将数据导入到指定表空间的指定数据文件中

为了将十几个单位的数据放在一起,ORACLE原来的方法一个表空间包含多个数据文件,如:tablespace_test,数据文件为data_0,data_1,data_2……data_n,然后在建表时通过某列的值范围条件指定分区,将不同单位的数据写入不同的分区中。由于每个单位的数据表较多(近1000张数据表,各单位均相同),不想通过这种方式,所以想通过导入命令,强制将各单位的数据导入不同数据文件中,语句如下:
impdp p_test/test directory=EXPDIR dumpfile=1.dmp remap_schema=dzsp:p_test r
emap_tablespace=users:tablespace_test remap_datafile=%:data_1 table_exists_action=APPEN
D reuse_datafiles=y
执行成功后数据是导进去了,但没有按我的原意只将数据写入tablespace_test分区的data_1数据文件中,而是随机的写入了不同的数据文件中(data_1……n)中,请问要如何处理才能达到我的目的?

答案是:不可能做到!
oracle有自己的算法均衡地把数据分散到各个DATAFILE里去。
当然如果一个表空间只有一个数据文件,就只能写到这个数据文件里去了。
参考技术A 两边数据库的
db_block_size
一样大小不?
或者看看具体表空间的
db_block_size
是否相同

以上是关于oracle impdp全库导入时如何指定表空间位置的主要内容,如果未能解决你的问题,请参考以下文章

如何把dmp导入到指定用户指定的表空间 [转]

Oracle impdp导入异常

oracle IMPDP导入的时候,能自动把之前表中的数据都删除吗?

如何在Oracle中建表空间、建用户并导入dmp文件详解

oracle IMPDP导入的时候,能自动把之前表中的数据都删除吗?

oracle impdp导入问题