解决Oracel导入dmp文件错误问题

    技术2022-05-11  86

    导入导出的dmp文件时出现如下错误经由常规路径导出由EXPORT:V09.02.00创建的文件....IMP-00017: 由于 ORACLE 的 922 错误,以下的语句失败IMP-00003: 遇到 ORACLE 错误 922ORA-00922: 缺少或无效选项IMP-00017: 由于 ORACLE 的 922 错误,以下的语句失败

    再次用indexfile参数导入文件得到对象创建语句,贴到sqlplus中执行发现是nocompress这个参数的问题,根源是版本问题,导出数据服务器和客户端的版本都是9.2,导入数据服务器和客户端的版本都是9.0,不过已经不可能再用9.0的客户端去导数据了。所以只能用这个dmp文件。开始想到的是修改indexfile选项导出的sql文件,创建表结构,可以完成。但是再次导入dmp文件发现还是无法继续进行。这样只能更改dmp文件了,用ultraedit32打开dmp文件,定位nocompress字符,把这些字符全部改成空格,空格的ascii码是32,16进制就是20,也就是把nocompress所包含的字符全部改成20即可。重新导入dmp文件,成功。不过编辑dmp文件始终是件危险的事情,不知道有没有方法可以在创建表结构以后跳过这些表结构定义语句直接导入数据的方法。

        我发现数据文件中的“TABLESPACE "USERS" LOGGING NOCOMPRESS”其实都是可以不要的,而它们的存在是导致不同版本数据库文件无法导入的根本原因,将其全部替换为空格,问题即可解决。

        注意:替换时一定要注意空格的数量一定要和替换的文字数量一致,否则会出错的! 


    最新回复(0)