Home >Database >Mysql Tutorial >从Oracle817导入到Oracle10.2.0.4过程中发生的错误及解决办法
这个错误,有点喜剧了,经过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的要好。所以放弃了。
解决办法:忽视。