ORA-00942 表或视图不存在 问题的解决

查杀系统死锁的sql,最近想改造成存储过程,如下:

CREATE OR REPLACE PROCEDURE HERO_KILLLOCKSESSION

 

(OUT_COUNT OUT NUMBER, OUT_CUR OUT ZHUOCAIDEV.FUXJPACKAGE.FUXJRESULTSET) IS

 

BEGIN

 

  SELECT COUNT(*)

   INTO OUT_COUNT

   FROM V$LOCKED_OBJECT L, DBA_OBJECTS B,V$SESSION X, V$PROCESS C

  WHERE B.OBJECT_ID = L.OBJECT_ID

    AND L.SESSION_ID = X.SID

    AND C.ADDR = X.PADDR;

 

  OPEN OUT_CUR FOR

   SELECT B.OWNER,

          B.OBJECT_NAME,

          L.SESSION_ID,

          X.SERIAL#,

          X.USERNAME,

          X.LOGON_TIME,

          L.LOCKED_MODE,

          'alter system kill session '''|| X.SID || ',' || X.SERIAL# || '''' KILLSQL,

          C.SPID AS OS_PROCESS_ID,

          C.PID,

          'ps -ef | grep ' || C.SPID AS CHECK_OS_PROCESS_COMMAND,

          'kill -9 ' || C.SPID AS KILL_OS_PROCESS_COMMAND

     FROM V$LOCKED_OBJECT L, DBA_OBJECTS B,V$SESSION X, V$PROCESS C

    WHERE B.OBJECT_ID = L.OBJECT_ID

      AND L.SESSION_ID = X.SID

      AND C.ADDR = X.PADDR

    ORDER BY X.LOGON_TIME ASC;

 

END;

在系统sys模式下可以正常运行,在zhuocaidev下面报ORA-00942 表或视图不存在

但在正常的SQL中是能够对V$LOCKED_OBJECT , DBA_OBJECTS , V$SESSION ,V$PROCESS进行访问的。猜测估计是权限问题,联想到运行statspack报告的perfstat用户没有此问题,查看下statspack的创建脚本,发现需要单独使用下面语句进行赋权:

 

 

grant select on V_$SESSION toscott;

以sys用户登录,执行如下授权语句:

grant select on SYS.V_$LOCKED_OBJECTTO zhuocaidev;
grant select on  SYS.DBA_OBJECTS TOzhuocaidev;
grant select on SYS.V_$SESSION  TOzhuocaidev;
grant select on SYS.V_$PROCESS TO zhuocaidev;

在以zhuocaidev登录,可以正常创建存储过程.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值