rt。我从window的oracle上做全库导出,然后导入到linux RHEL的oracle中,oracle的版本相同。导出时没有报错,在导入的时候发现了如下的错误信息。请教各位大侠了Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01":  system/******** directory=IN_DUMP dumpfile=FULL.DMP full=y logfile=impdp_201212051515.log 
Processing object type DATABASE_EXPORT/TABLESPACE
ORA-31684: Object type TABLESPACE:"SYSAUX" already exists
ORA-31684: Object type TABLESPACE:"UNDOTBS1" already exists
ORA-31684: Object type TABLESPACE:"TEMP" already exists
ORA-31684: Object type TABLESPACE:"USERS" already exists
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-19502: write error on file "C:\ORADATA\XXXX_TEST_01.DBF", block number 49664 (block size=8192)
ORA-27072: File I/O error
Linux-x86_64 Error: 25: Inappropriate ioctl for device
Additional information: 4
Additional information: 49664
Additional information: 237568
Failing sql is:
CREATE TABLESPACE "XXXX_TEST" DATAFILE 'C:\ORADATA\XXXX_TEST_01.DBF' SIZE 1073741824 LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DE

解决方案 »

  1.   

    看log感觉是由于在window下存在的dbf文件,在用expdp导出的时候把对应这个文件的信息也导出来了,而在linux下用impdp导入的时候,发现找不到对应的路径。我的导出导入用的是expdp以及impdpexpdp test/test directory=dump_mars dumpfile=full.dmp full=y;
    impdp system/manager directory=IN_DUMP dumpfile=FULL.DMP full=y logfile=impdp_`date '+%Y%m%d%H%M'`.log;
      

  2.   

    1)impdp system/manager@tns串
       看一下:cat $ORACLE_HOME/network/admin/tnsnames.ora2)少了schemas=
       remap_schema=
       把这两个参数不全了3)要学会使用帮助 impdp help=y
      

  3.   

    在linux上的oracle里面县创建好XXXX_TEST的tablespace之后再导。如果有其他windows的oracle里面自建的tablespace,也预先创建好再导。
      

  4.   


    1)感谢帮忙,我参考网上的一些资料,发现全库导入的时候没有@XXX的这个段,正常我如果是按用户导入的时候,会@一个数据库实例的名字。我的tnsnames.ora如下,请问如果我要使用@tns的话,是该写@orcl么?
    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.redhat6)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl.redhat6)
        )
      )
    2)我现在是全库导入,不是按照用户的那种,schema是不是不用写了就
    3)额,关于字符集的问题,我也注意到了,已经设置了环境变量才导出导入的,谢谢提醒啦~
      

  5.   


    恩,我昨天也是把log中提示不存在的表空间都创建号了再导的,现在报出的错误大都是一些XXX已经存在的错误。不过也有些看不明白的。
    请问像下面这样alreay exist的错误是不是就可以忽略了?相同类型的错误我就用省略号了
    ORA-31684: Object type ROLE:"JAVAIDPRIV" already exists
    ......
    ORA-31684: Object type SEQUENCE:"SYSTEM"."MVIEW$_ADVSEQ_GENERIC" already exists
    ......
    ORA-31684: Object type SEQUENCE:"TEST"."TEST_POWER" already exists
    ......
    ORA-39111: Dependent object type OBJECT_GRANT:"ORDDATA" skipped, base object type SEQUENCE:"ORDDATA"."ORDDCM_DOCS_ID_SEQ" already exists
    ......
    ORA-31684: Object type DIRECTORY:"ORACLE_OCM_CONFIG_DIR" already exists
    ......
    ORA-31684: Object type CONTEXT:"DBFS_CONTEXT" already exists
    ......
    ORA-31684: Object type SYNONYM:"PUBLIC"."ORDDCM_DOCUMENTS" already exists
    ......
      

  6.   

    ORA-19502: write error on file "C:\ORADATA\XXXX_TEST_01.DBF", block number 49664 (block size=8192)Failing sql is:
    CREATE TABLESPACE "XXXX_TEST" DATAFILE 'C:\ORADATA\XXXX_TEST_01.DBF' SIZE 1073741824 LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DE
    =====================================================================================
    检查 C:盘的 'C:\ORADATA\ 文件夹是否存在,C:盘空间是否足够