ORA-39070

背景介绍:

项目以前建立的库,表空间文件文件比较多,问了一下dba,了解到表空间建立很多没有带来优惠(都在一块磁盘上),效率也不会提高;现在要进行新库的迁移(目前使用的是asm磁盘组rac集群),正好把多个表空间变成一个表空间

环境:

  原库:win2008,64位,oracle11g

  目标库:centos6.4,64位,oracle11g

过程:

一、win导出:

  sql> CREATE OR REPLACE DIRECTORY dpdata AS 'F:data_bak';--必须在server端执行,并且这个文件必须在server端有

  sql>grant read,write on directory dpdata to t1;

  退出sql在cmd的命令行执行:expdp t1/t1@orclsc directory=dpdata dumpfile=full.dmp schemas=t1

  注释:相关的expdp、impdp的命令可以查看网上说明,shcemas表示导出的用户,即上面的命令表示导出t1用户下的所有东东,文件和日志生成在f:data_bak下,会看到有full.dmp和一个export.log文件(这可用参数logfile指定)

  sql>select file_name,tablespace_name from dba_data_files;--查看目前的表空间,记录一下,比如:tp1,tp2等

二、linux下导入:

  1、把full.dmp上传到linux服务器,比如/home/data下

  2、给此目录授权,即可以读写的权限,网上可以搜一下,例如: chmod  -R 777 /home/data

  3、建立用户和表空间:这个不说了(例如用户test1,表空间tp)

  4、sql>create directory dpdata as '/home/data';

    sql>grant read,write on directory expdp_dir to test1;

       [oracle@db-1 ~]$ impdp test1/test1 directory=dpdata dumpfile=FULL.DMP remap_schema=t1:test1 remap_tablespace=tp1:tp,tp2:tp

    ok到这里,基本就结束了,下面说一下会遇到的问题,例如:

ORA-39002: invalid operation

ORA-39070: Unable to open the log file.

ORA-29283: invalid file operation

ORA-06512: at "SYS.UTL_FILE", line 475

ORA-29283: invalid file operation

无论expdp还是impdp都可能报这些问题,我这里列举一下我的原因:

1、create directory的文件不存在,必须存在,必须在server端,也就是数据库的服务器上存在

2、linux的时候,这个‘/home/data’这个文件夹的权限必须有,我用的oracel的用户进行impdp的,所以oracle这个用户对这个文件夹要有读写权限。

3、impdp的时候,dumpfile的文件名(FULL.DMP)大小写敏感

4、我自己遇到的rac环境下的sid的问题:impdp的时候加上sid报错,不加反而能导进去;应该是单节点的问题,这个以后注意一下

原文地址:https://www.cnblogs.com/aishangyizhihu/p/4691367.html