- 论坛徽章:
- 1
|
1。背景:
2006年12月27日,某市公安局为解决某常住人口户籍二代证管理软件的年终统计工作慢的问题,
通知技术维护部和开发部,开发部反馈需要将常口软件升级,即主要将几个主要的业务表进行分区处理。但是在升级时,发现ORACLE有错误提示 ORA-00439 “未启用的特性:Partitioning”。
检查v$version视图,发现版本是Oracle 9i Release 9.2.0.1.0 - 64 bit Production,的确不支持分区表特性。远程连接到其他支持此特性的业务库,其版本是 Oracle 9i Enterprise Edition Release 9.2.0.1.0 - 64 bit Production。由此,需要进行全库逻辑导出、所有数据文件/口令文件/控制文件/pfile/spfile/.profile等文件的冷备份、Oracle版本升级、恢复数据或者全库逻辑导入的工作。
2。环境:
IBM P670/ Oracle9i Release 9.2.0.1.0 64 bit / 实例hz2004
3。问题:
在进行常规的逻辑全库导出之后,进行测试导入时,当只是导入一个业务表hjls_hjywlsb户籍业务流水表以后,启用主键约束时,报错:
IMP-00017: following statement failed with ORACLE error 603:
"CREATE UNIQUE INDEX "PK_HJLS_HJYWLSB" ON "HJLS_HJYWLSB" ("HJYWID") PCTFRE"
"E 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GRO"
"UPS 1) TABLESPACE "HZ2004_IDX" LOGGING"
IMP-00003: ORACLE error 603 encountered
ORA-00603: ORACLE server session terminated by fatal error
IMP-00017: FOLLOWING statement failed with ORACLE error 3114:
"BEGIN DBMS_STATS.SET_INDEX_STATS(NULL,'"PK_HJLS_HJYWLSB"',NULL,NULL,NULL,1"
"1537030,15508,11537030,1,1,32209,2,0); END;"
IMP-00003: ORACLE error 3114 encountered
ORA-03114: not connected to ORACLE
IMP-00000: Import terminated unsuccessfully
4。分析:
在网络上查询相关问题时,没有看到确切的解决方法,只有一条:“重新建立临时表空间,然后将此表空间划归此用户使用。”
然后查询 alerthz2004.log 文件,看到很多类似如下的相关错误:
ORA-01114: IO error writing block to file 201 (block #556)
ORA-27063: skgfospo: number of bytges read/written is incorrect
IBM AIX RISC System/6000 Error: 28: No space left on device
Additional information: -1
Additional information: 229376
然后以sys用户的sysdba权限登录报错无法写入审计文件,由此怀疑是否 oracle 系统文件所在的文件系统空间或者inode已满造成此问题。然后运行此命令查看此文件系统:
df -m | grep oracle
Filesystem MB blocks Free %Used Iused %Iused Mounted on
/dev/lv01 8000.00 2.00 100% 67361 7% /oracle
5。解决:
检查的确是 /oracle 空间已满,原来在此空间下有两个业务系统的各自两个实例的相关文件,主要是背景进程文件、用户进程文件、联机日志、系统安装默认的回滚空间文件、临时空间文件。
经检查后删除全部trace文件后才空出大约10M空间,再检查回滚和临时空间文件,发现都使用了自动扩展属性,怀疑是此影响到导入的主键索引建立。
将临时表空间自动扩展和回滚自动扩展属性去除,比如:
ALTER DATABASE TEMPFILE '/oracle/app/oracle/oradata/hz2004/temp01.dbf' AUTOEXTEND OFF;
之后清除已导入的表,重新导入,没有出现类似错误,查看临时表空间和回滚空间,都已经使用了我手动增加在存储上的相关数据文件;问题解决。
6。结论:
当出现问题时,一定要结合当前的工作查看相关的报警日志再仔细分析Oracle的出错提示,必要时还要查看相关的trace文件,才能圆满的解决问题。 |
|