oracle job的奇怪问题(已解决,个人分析是大小写转换的缘故)
2008-03-13 17:58
459 查看
同样一段SQL,除了表名分为大小写ow_ws_entp_line,执行情况如下:
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'OW_WS_ENTP_LINE','ESTIMATE',NULL,20,'for table');
PL/SQL procedure successfully completed
以上执行情况正常。看以下执行:
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'ow_ws_entp_line','ESTIMATE',NULL,20,'for table');
begin dbms_ddl.analyze_object('TABLE',NULL,'ow_ws_entp_line','ESTIMATE',NULL,20,'for table'); end;
ORA-20000: Unable to analyze TABLE "ow_ws_entp_line", insufficient privileges or does not exist
ORA-06512: at "SYS.DBMS_DDL", line 192
ORA-06512: at line 2
出现了如上的问题。不清楚是否是由其表名的大小写引起的。决定再试一个表:
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'ow_ws_worksheet_group','ESTIMATE',NULL,20,'for table');
begin dbms_ddl.analyze_object('TABLE',NULL,'ow_ws_worksheet_group','ESTIMATE',NULL,20,'for table'); end;
ORA-20000: Unable to analyze TABLE "ow_ws_worksheet_group", insufficient privileges or does not exist
ORA-06512: at "SYS.DBMS_DDL", line 192
ORA-06512: at line 2
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'OW_WS_WORKSHEET_GROUP','ESTIMATE',NULL,20,'for table');
PL/SQL procedure successfully completed
还真的跟表名大小写有关。估计这个包在系统中找表的时候是按照大写来找的,对于小写的表也不做转换,因此一旦遇到小写的表,就抱错找不到该表或没权限了。
测试,将小写的表转成大写,执行:
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,upper('ow_ws_worksheet_group'),'ESTIMATE',NULL,20,'for table');
PL/SQL procedure successfully completed
ok。基本上确定问题所在了。
测试,一个不存在的表,执行:
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'test','ESTIMATE',NULL,20,'for table');
begin dbms_ddl.analyze_object('TABLE',NULL,'test','ESTIMATE',NULL,20,'for table'); end;
ORA-20000: Unable to analyze TABLE "test", insufficient privileges or does not exist
ORA-06512: at "SYS.DBMS_DDL", line 192
ORA-06512: at line 2
报同样错误。
由此可得知Oracle对此问题没有做大小写转换,不知道是bug还是故意这样做的。
目前还不清楚其对分区表的影响。
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'OW_WS_ENTP_LINE','ESTIMATE',NULL,20,'for table');
PL/SQL procedure successfully completed
以上执行情况正常。看以下执行:
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'ow_ws_entp_line','ESTIMATE',NULL,20,'for table');
begin dbms_ddl.analyze_object('TABLE',NULL,'ow_ws_entp_line','ESTIMATE',NULL,20,'for table'); end;
ORA-20000: Unable to analyze TABLE "ow_ws_entp_line", insufficient privileges or does not exist
ORA-06512: at "SYS.DBMS_DDL", line 192
ORA-06512: at line 2
出现了如上的问题。不清楚是否是由其表名的大小写引起的。决定再试一个表:
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'ow_ws_worksheet_group','ESTIMATE',NULL,20,'for table');
begin dbms_ddl.analyze_object('TABLE',NULL,'ow_ws_worksheet_group','ESTIMATE',NULL,20,'for table'); end;
ORA-20000: Unable to analyze TABLE "ow_ws_worksheet_group", insufficient privileges or does not exist
ORA-06512: at "SYS.DBMS_DDL", line 192
ORA-06512: at line 2
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'OW_WS_WORKSHEET_GROUP','ESTIMATE',NULL,20,'for table');
PL/SQL procedure successfully completed
还真的跟表名大小写有关。估计这个包在系统中找表的时候是按照大写来找的,对于小写的表也不做转换,因此一旦遇到小写的表,就抱错找不到该表或没权限了。
测试,将小写的表转成大写,执行:
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,upper('ow_ws_worksheet_group'),'ESTIMATE',NULL,20,'for table');
PL/SQL procedure successfully completed
ok。基本上确定问题所在了。
测试,一个不存在的表,执行:
SQL> exec dbms_ddl.analyze_object('TABLE',NULL,'test','ESTIMATE',NULL,20,'for table');
begin dbms_ddl.analyze_object('TABLE',NULL,'test','ESTIMATE',NULL,20,'for table'); end;
ORA-20000: Unable to analyze TABLE "test", insufficient privileges or does not exist
ORA-06512: at "SYS.DBMS_DDL", line 192
ORA-06512: at line 2
报同样错误。
由此可得知Oracle对此问题没有做大小写转换,不知道是bug还是故意这样做的。
目前还不清楚其对分区表的影响。
相关文章推荐
- CString与char[] 的相互转换方法以及结尾乱码问题的分析解决
- sqlite中文乱码问题原因分析及解决(utf8和ascii相互转换)
- JavaScript 特有奇葩问题“字符串类型与数字类型混乱”的分析与解决,与类型转换
- 死锁问题分析(个人认为重点讲到了gap间隙锁,解决了我一些不明报死锁的问题)
- CString与char[] 的相互转换方法以及结尾乱码问题的分析解决
- CString与char[] 的相互转换方法以及结尾乱码问题的分析解决
- mysql查询不区分大小写问题分析和解决
- ThinkPHP 3.2.3 数据表大小写问题(查询时候强制转换小写)解决办法
- OpenRisc-31-关于在设计具有DMA功能的ipcore时的虚实地址转换问题的分析与解决
- OpenRisc-31-关于在设计具有DMA功能的ipcore时的虚实地址转换问题的分析与解决
- 关于fastjson大小写转换问题的解决办法
- struts2日期转换在Win10上失败问题的分析和解决
- c# 关于string与控件id的转换问题(个人笔记)
- 使用clone解决hibernate+spring集成中的延迟加载问题及分析(no session or session was closed)
- 关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
- 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧(转)
- 人民币大小写转换问题
- 学会发现问题--提出问题--分析问题--解决问题
- Activity后台运行一段时间回来crash问题的分析与解决
- 个人总结:AS升级到3.0后遇到的问题及解决方法