当前位置导航:炫浪网>>网络学院>>编程开发>>Oracle教程

Oracle:10.0.1.2.0中的程序缺陷


  测试环境:windows 2000 server, oracle10.1.0.2.0
  
  背景:操作系统上装oracle 9207 和 10.1.0.2.0,
  
  先从另外一服务器(9206) exp 一用户,之后imp 到10,然后使用10的expdp 导出数据后,删除该用户,再impdp, 此时出现错误。
  
  处理对象类型 SCHEMA_EXPORT/FUNCTION/FUNCTION
  ORA-39083: 对象类型 FUNCTION 创建失败, 出现错误:
  ORA-06502: PL/SQL: 数字或值错误
  ORA-06512: 在 "SYS.KUPW$WORKER", line 11729
  ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  失败的 sql 为:
  CREATE FUNCTION "STUDY"."FUN_SALERSTRUTEST" ( --用途:促销员结构分析查询
  VDEPT NUMBER, ----事业部
  VTOP NUMBER, ----顶点机构
  VSDATE VARCHAR2, ----开始日期
  VEDATE VARCHAR2, ----结束日期
  VSALERSTATE NUMBER, ----促销员状态:所有:-1,在职:1,离职:0 AS
  VORG2 NUMBER, ----大区 1或0 表选与
  ORA-39083: 对象类型 FUNCTION 创建失败, 出现错误:
  ORA-06502: PL/SQL: 数字或值错误
  ORA-06512: 在 "SYS.KUPW$WORKER", line 11729
  ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  失败的 sql 为:
  CREATE FUNCTION "STUDY"."FUN_TEST" (
  VDEPT NUMBER, ----事业部
  VTOP NUMBER, ----顶点机构
  VPRODUCTTYPE NUMBER, ----产品类型
  VSDAT VARCHAR2, ----开始日期
  VEDAT VARCHAR2) ----结束日期
  RETURN LONG
  AS
  VBDATE DATE := TO_DATE(VSDAT,'YYYY-MM-DD'); ----开始日期
  VEDATE DATE :=
  ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  作业 "SYS"."SYS_IMPORT_SCHEMA_01" 因致命错误于 16:10 停止
  
  尝试了几回,都无法成功,几天后,再做一遍测试,此次操作和之前的类似,只是exp的时候,不带数据。测试结果如下:
  
  . . 导出了 "STUDY"."T_TRACKORGPLAN" 0 KB 0 行
  . . 导出了 "STUDY"."T_TRACKSALEREGIONPLAN" 0 KB 0 行
  . . 导出了 "STUDY"."USERDATA" 0 KB 0 行
  . . 导出了 "STUDY"."USERDEPARTMENT" 0 KB 0 行
  . . 导出了 "STUDY"."USERGROUP" 0 KB 0 行
  . . 导出了 "STUDY"."USERORGRIGHT" 0 KB 0 行
  . . 导出了 "STUDY"."USERPRODUCTRIGHT" 0 KB 0 行
  . . 导出了 "STUDY"."YEARPLAN" 0 KB 0 行
  . . 导出了 "STUDY"."YEARPLANPRODUCT" 0 KB 0 行
  已成功加载/卸载了主表 "STUDY"."SYS_EXPORT_SCHEMA_01"
  ******************************************************************************
  STUDY.SYS_EXPORT_SCHEMA_01 的转储文件集为:
  H:\TEMP\EXPDP\EXPDP_STUDY_20050816.DMP
  作业 "STUDY"."SYS_EXPORT_SCHEMA_01" 已于 10:20 成功完成
  
  F:\ORACLE\bin>impdp dumpfile=expdp_study_20050816.dmp logfile=impdp_study_20050816.log schemas=stu
  dy userid=study/1
  
  Import: Release 10.1.0.2.0 - Production on 星期二, 16 8月, 2005 10:25
  
  Copyright (c) 2003, Oracle. All rights reserved.
  
  连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
  With the Partitioning, OLAP and Data Mining options
  已成功加载/卸载了主表 "STUDY"."SYS_IMPORT_SCHEMA_01"
  启动 "STUDY"."SYS_IMPORT_SCHEMA_01": dumpfile=expdp_study_20050816.dmp logfile=impdp_study_200508
  16.log schemas=study userid=study/********
  处理对象类型 SCHEMA_EXPORT/USER
  ORA-31684: 对象类型 USER:"STUDY" 已存在
  处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT
  处理对象类型 SCHEMA_EXPORT/ROLE_GRANT
  处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
  处理对象类型 SCHEMA_EXPORT/TABLESPACE_QUOTA
  处理对象类型 SCHEMA_EXPORT/SE_PRE_SCHEMA_PROCOBJACT/PROCACT_SCHEMA
  处理对象类型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
  处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
  处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
  . . 导入了 "STUDY"."ABCTYPE" 0 KB 0 行
  . . 导入了 "STUDY"."BAND" 0 KB 0 行
  . . 导入了 "STUDY"."BIGCUST" 0 KB 0 行
  ......
  . . 导入了 "STUDY"."USERPRODUCTRIGHT" 0 KB 0 行
  . . 导入了 "STUDY"."YEARPLAN" 0 KB 0 行
  . . 导入了 "STUDY"."YEARPLANPRODUCT" 0 KB 0 行
  处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
  处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
  处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
  处理对象类型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
  处理对象类型 SCHEMA_EXPORT/TABLE/COMMENT
  处理对象类型 SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
  处理对象类型 SCHEMA_EXPORT/FUNCTION/FUNCTION
  ORA-39083: 对象类型 FUNCTION 创建失败, 出现错误:
  ORA-06502: PL/SQL: 数字或值错误
  ORA-06512: 在 "SYS.KUPW$WORKER", line 11729
  ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  失败的 sql 为:
  CREATE FUNCTION "STUDY"."FUN_SALERSTRUTEST" ( --用途:促销员结构分析查询
  VDEPT NUMBER, ----事业部
  VTOP NUMBER, ----顶点机构
  VSDATE VARCHAR2, ----开始日期
  VEDATE VARCHAR2, ----结束日期
  VSALERSTATE NUMBER, ----促销员状态:所有:-1,在职:1,离职:0 AS
  VORG2 NUMBER, ----大区 1或0 表选与
  ORA-39083: 对象类型 FUNCTION 创建失败, 出现错误:
  ORA-06502: PL/SQL: 数字或值错误
  ORA-06512: 在 "SYS.KUPW$WORKER", line 11729
  ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  失败的 sql 为:
  CREATE FUNCTION "STUDY"."FUN_TEST" (
  VDEPT NUMBER, ----事业部
  VTOP NUMBER, ----顶点机构
  VPRODUCTTYPE NUMBER, ----产品类型
  VSDAT VARCHAR2, ----开始日期
  VEDAT VARCHAR2) ----结束日期
  RETURN LONG
  AS
  VBDATE DATE := TO_DATE(VSDAT,'YYYY-MM-DD'); ----开始日期
  VEDATE DATE :=
  ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  
  作业 "STUDY"."SYS_IMPORT_SCHEMA_01" 因致命错误于 10:26 停止
  
  F:\ORACLE\bin>
  
  不知道是不是该版本的一个bug, 升级到10.1.0.4.0 再试,升级后测试,问题已依旧!
  
     24-AUG-05 05:55:14 GMT
  
  .
  ISSUE CLARIFICATION
  ====================
  ORA-39083: Object type FUNCTION failed to create with error:
  ORA-06502: PL/SQL: numeric or value error
  ORA-06512: at "SYS.KUPW$WORKER", line 11849
  ORA-06502: PL/SQL: numeric or value error: character string buffer too small
  
  eos (end of section)
  
  .
  ISSUE VERIFICATION
  ===================
  
  Verified the issue through TAR update
  
  eos (end of section)
  
  .
  DATA COLLECTED
  ===============
  ORA-39083: Object type FUNCTION failed to create with error:
  ORA-06502: PL/SQL: numeric or value error
  ORA-06512: at "SYS.KUPW$WORKER", line 11849
  ORA-06502: PL/SQL: numeric or value error: character string buffer too small
  Failing sql is:
  CREATE FUNCTION "STUDY"."FUN_TEST" (
  VDEPT NUMBER,
  VTOP NUMBER,
  VPRODUCTTYPE NUMBER,
  VSDAT VARCHAR2,
  VEDAT VARCHAR2)
  RETURN LONG
  AS
  VBDATE DATE := TO_DATE(VSDAT,'
  Processing object type
  SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
  Processing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
  ORA-39083: Object type ALTER_FUNCTION failed to create with error:
  ORA-04043: object FUN_SALERSTRUTEST does not exist
  Failing sql is:
  ALTER FUNCTION "STUDY"."FUN_SALERSTRUTEST" COMPILE PLSQL_OPTIMIZE_LEVEL=
  2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS
  TIMESTAMP '2005-08-16:14:05:40'
  ORA-39083: Object type ALTER_FUNCTION failed to create with error:
  ORA-04043: object FUN_TEST does not exist
  Failing sql is:
  ALTER FUNCTION "STUDY"."FUN_TEST" COMPILE PLSQL_OPTIMIZE_LEVEL= 2
  PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP
  '2005-08-16:14:05:43'
  
  eos (end of section)
  
  .
  CAUSE DETERMINATION
  ====================
  The import datapump fails to import the procedure when the Create procedure
  statem
相关内容
赞助商链接