字符串缓冲区太小?--Oracle也谎报军情

为了几天后的系统测试,需要在虚拟机安装整个系统,数据库使用了Oracle 10.2.0版本,但由于Oracle的军情谎报,害我重装了N回。

目前正在运行的数据库服务器是10.2.0.3.0版本的Oracle,当我DMP出一个数据副本并IMP到虚拟机的数据库中时,Oracle竟然无法读取该文件。仔细查看后发现,虚拟机的数据库版本为10.1.0,遂将其卸载改换成Oracle 10.2.0。从此恶梦开始了。

IMP数据时,新版本的Oracle已经可以读取DMP文件,但在执行导入作业时,老是运行失败,并提示:

ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 

PL/SQL 第18行错误

....

几次都是这样。

无奈之下只能求助Google,搜索之后,发现了所谓的Oracle Bug之说。这正是我担心的,因为我手头只有10.2.0.1.0的安装文件。难道...没有别的办法,从网上死拖下来一个10.2.0.3.0的安装补丁,安装,经过N遍重装修补之后(安装补丁也不是那样顺利,错误N多,在此不细描述),现实又给我浇了盆冷水--还是同样的错误。

看来,并不是所谓的BUG在捣鬼。

于是只能重装回10.2.0.1.0(排除升级为10.2.0.3.0后带来的其它问题)。而对于这一错误的解决方法(出自于网络资源)--修改缓冲区大小我也是找不着地方无从下手,看来,俺今天要加班了。

临下班时,我在翻看导入log时猛然间发现了一个可疑的地方。

XXX导入错误,未找到表空间XXX

我迅速找到真实系统的表空间设置,果然发现该服务占用了两个表空间,而在虚拟机系统中只有一个表空间定义,而在导入的时候并没有做映射。难道...死马当活马医,三下五除二,做好了导入表空间的映射。导入...

漫长的2分钟过去,OK!成功了,那个令人费解的“字符串缓冲区太小 ”错误竟然没出来。

当系统跑起来的时候,都下班一个小时了,不过今天算没白加班,也替大家领教了一下Oracle的谎报技术。

你可能感兴趣的:(oracle,sql,虚拟机,Google)