oracle procedure 表或视图不存在的问题

oracle procedure 表或视图不存在的问题今天在写一个procedure,让其每天定时统计表空间的增长情况,定时功能通过oracle的job来完成。在代码里,写了这样一个语句selectsum(bytes)fromdba_data_fileswheretablespace_name=’USRES’编译时总是提示“tableorviewdoesnotexist”,表或…_oracle在procedure中系统视图失效

大家好,欢迎来到IT知识分享网。oracle

      今天在写一个procedure,让其每天定时统计表空间的增长情况,定时功能通过oracle的job来完成。

      在代码里,写了这样一个语句

select  sum(bytes)  from dba_data_files where tablespace_name='USRES'

       编译时总是提示“table or view does not exist”,表或视图不存在。但是这个语句在procedure外面,作为单独的SQL语句来执行的时候是没有问题的,困惑了。Google之后,有人提到说,在procedure里,甚至是PL/SQL里,用户的role不在起作用了,被屏蔽掉了。噢~~,原来dba_data_files这个视图本来是属于sys用户的,如果你在创建其他的用户的时候将其角色设置为dba,普通情况下,该视图对这个用户是可见的,而在procedure里这个视图对他是不可见的。只有当sys用户显式把这个视图的权限grant给这用户的时候,在procedure里才对其可见,执行了grant select on dba_data_files to myuser后,这个错误消失,编译通过。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27367.html

(0)
上一篇 2023-12-11 18:15
下一篇 2023-12-13 18:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信