你是不是执行的动态语句?动态语句的话需要显式的授权,否则即使是dba用户也访问不到

解决方案 »

  1.   

    authid current_user不是为了不用显示授权的吗?而且在这个数据库之前(大概几个月前)是可以执行的,只是现在不行了
      

  2.   

    都加了的,访问其他Schema下表都采用schemaName.tableName格式的
      

  3.   

    这个目的是切换执行的用户,
    没有AUTHID CURRENT_USER表示定义者权限(definer rights),以定义者身份执行;加上AUTHID CURRENT_USER表示调用者权限(invoker rights),以调用者身份执行。
    和授权本身没啥关系
      

  4.   

    执行存储过程的用户有DBA权限,而且之前(大概几个月前)曾经执行过,现在执行提示“表或视图不存在”
      

  5.   

    因为另外一个schema是别的单位创建的,让他们授权基本属于不可能的,所以这个用户才给了DBA权限的
      

  6.   

    确认过程中是否有动态语句的方式执行sql语句,
    这些语句涉及到的表需要显式的授权
    否则即使dba用户也不能访问
      

  7.   

    你有dba权限还怕啥
    你可以在你的dba帐号下创建一个对方帐号那个表的同义词,你访问对方表的语句改为访问本用户的同义词,这样就没啥问题了
      

  8.   

    那存储过程加上authid current_user岂不就是没有用了吗?
      

  9.   

    如果你的过程建在自身dba用户下,那加不加效果是一样的
      

  10.   

    找到原因了,是另外一个存储过程被别人重写后没有加上authid current_user