oracle job的奇怪问题(已解决,个人分析是大小写转换的缘故)

同样一段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还是故意这样做的。
目前还不清楚其对分区表的影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值