Home  >  Article  >  Database  >  从Oracle817导入到Oracle10.2.0.4过程中发生的错误及解决办法

从Oracle817导入到Oracle10.2.0.4过程中发生的错误及解决办法

WBOY
WBOYOriginal
2016-06-07 17:21:031157browse

这个错误,有点喜剧了,经过oracle817和oracle10g同一个表的表结构对比,发现oracle10g有这个外键,而且好像比oracle817的要好。

1、错误1:RBS和TEMP表空间无法创建。

IMP-00017: following statement failed with Oracle error 1119:
 "CREATE TABLESPACE "RBS" DATAFILE  'D:\ORACLE\ORADATA\ORCL\RBS01.DBF' SIZE 5"
 "45259520      AUTOEXTEND ON NEXT 5242880  MAXSIZE 16383M DEFAULT  STORAGE("
 "INITIAL 524288 NEXT 524288 MINEXTENTS 8 MAXEXTENTS 4096 PCTINCREASE 50) ONL"
 "INE PERMANENT "
IMP-00003: ORACLE error 1119 encountered
ORA-01119: error in creating database file 'D:\ORACLE\ORADATA\ORCL\RBS01.DBF'
ORA-27040: file create error, unable to create file
OSD-04002: unable to open file
O/S-Error: (OS 3) 系统找不到指定的路径。
IMP-00017: following statement failed with ORACLE error 12913:
 "CREATE TABLESPACE "TEMP" DATAFILE  'D:\ORACLE\ORADATA\ORCL\TEMP01.DBF' SIZE"
 " 127270912      AUTOEXTEND ON NEXT 655360  MAXSIZE 16383M DEFAULT  STORAGE"
 "(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0)"
 " ONLINE TEMPORARY "
IMP-00003: ORACLE error 12913 encountered
ORA-12913: Cannot create dictionary managed tablespace

RBS是oracle817的回滚段表空间,里面没有数据,到了10g,回滚段的办法已经改变了,使用的是UNDOTBS1表空间,已经创建,所以放弃。

TEMP是oracle817的临时表空间,也没有数据,而且10g的临时表空间不再使用字典管理模式,而是采用本地管理模式,这个过时了,所以放弃。

2、错误2:
IMP-00017: following statement failed with ORACLE error 3249:
 "CREATE TABLESPACE "TOOLS" DATAFILE  'D:\ORACLE\ORADATA\ORCL\TOOLS01.DBF' SI"
 "ZE 18481152      AUTOEXTEND ON NEXT 327680  MAXSIZE 16383M DEFAULT  STORAG"
 "E(INITIAL 32768 NEXT 32768 MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0) ONLI"
 "NE PERMANENT "
IMP-00003: ORACLE error 3249 encountered
ORA-03249: Uniform. size for auto segment space managed tablespace should have atleast 5 blocks
TOOLS是oracle817的工具表空间,主要是管理用户SYSTEM的默认表空间,在oracle817,我无法分析出TOOLS表空间内是否存放有数据对象,所以还是导入的为好,原因在于TOOLS表空间原先没有被创建,所以在导入的时候,导入程序认为要创建,,但是创建不成功,报错。
解决办法:在oracle10g创建表空间的语句中,添加TOOLS表空间创建。

3、错误3:
IMP-00017: following statement failed with ORACLE error 959:
 "ALTER USER "SYSTEM" IDENTIFIED BY VALUES 'D4DF7931AB130E37' DEFAULT TABLESP"
 "ACE "TOOLS" TEMPORARY TABLESPACE "TEMP""
IMP-00003: ORACLE error 959 encountered
ORA-00959: tablespace 'TOOLS' does not exist
这个错误,原因是oracle817默认的SYSTEM用户默认表空间在TOOLS中,所以在导入的时候,自然因为TOOLS表空间没有创建而失败。
解决办法:只要TOOLS表空间创建起来,自然错误就消失了。:

4、错误4:
IMP-00017: following statement failed with ORACLE error 1031:
 "CREATE DATABASE LINK "DATA_LINK.WORLD" CONNECT TO "DATA" IDENTIFIED BY "DATA" "
 "USING 'ora7'"
IMP-00003: ORACLE error 1031 encountered
ORA-01031: insufficient privileges
我导入使用的是SYSTEM用户,好像是因为SYSTEM用户权限不够,不过因为这个没有用了,所以放弃创建,以后要用的话,可以再单独创建,就可以了。

5、错误5:这个才是这篇记录中最关键的一个,也是因为这个我才写这篇记录的,因为有时候,可能难以理解。
IMP-00017: following statement failed with ORACLE error 20005:
 "DECLARE  SREC DBMS_STATS.STATREC; BEGIN SREC.MINVAL := NULL; SREC.MAXVAL :="
 " NULL; SREC.EAVS := 0; SREC.CHVALS := NULL; SREC.NOVALS := DBMS_STATS.NUMAR"
 "RAY(0,0); SREC.BKVALS := DBMS_STATS.NUMARRAY(0,1); SREC.EPC := 2; DBMS_STAT"
 "S.SET_COLUMN_STATS(NULL,'"DEF$_AQERROR"','"EXCEPTION_QUEUE"', NULL ,NULL,NU"
 "LL,0,0,0,srec,0,2); END;"
IMP-00003: ORACLE error 20005 encountered
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 1610
ORA-06512: at "SYS.DBMS_STATS", line 2120
ORA-06512: at "SYS.DBMS_STATS", line 5010
ORA-06512: at line 1
这个错误有点蹊跷,主要错误是object statistics are locked (stattype=all),经过查询,发现这个错误发生的原因在于数据库统计信息。但是更深层次的原因,还不清楚。暂时理解的是,由于默认的导入策略是statistics=always,这个策略要求的是一定要导入原先的数据库统计信息,这个策略,还是觉得有点问题,数据库统计信息,由于是使用了新的数据库版本,原先的统计信息,基本上80%左右的统计信息应该是不正确的,所以为什么导入策略还要默认是statistics=always呢。所以,我的决定是不导入或者重新统计数据库统计信息。
解决办法 :imp 命令最后添加参数statistics=none,这个参数就是要求不导入或者重新计算数据库统计信息。

6、错误6:
IMP-00017: following statement failed with ORACLE error 2270:
 "ALTER TABLE "DEF$_CALLDEST" ADD CONSTRAINT "DEF$_CALL_DESTINATION" FOREIGN "
 "KEY ("DBLINK") REFERENCES "DEF$_DESTINATION" ("DBLINK") ENABLE NOVALIDATE"
IMP-00003: ORACLE error 2270 encountered
ORA-02270: no matching unique or primary key for this column-list
这个错误,有点喜剧了,经过oracle817和oracle10g同一个表的表结构对比,发现oracle10g有这个外键,而且好像比oracle817的要好。所以放弃了。
解决办法:忽视。

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn