由于存储过程及触发器引用ORACLE动态视图v$session编译不通过而执行时报错ORA-04098

简介:     今天遇见一个很神奇的问题,ERP合同系统需要记录登录oracle数据库的用户名、IP地址、登录时间、登录客户端类型记录信息,需要创建个触发器, 在触发器中需要查询v$session视图,如下所示:  create or replace trigger EPMFRAMEWORK.
    今天遇见一个很神奇的问题,ERP合同系统需要记录登录oracle数据库的用户名、IP地址、登录时间、登录客户端类型记录信息,需要创建个触发器,
在触发器中需要查询v$session视图,如下所示:
 create or replace trigger EPMFRAMEWORK.PRF_OP_LOG 
  before delete or update on EPMFRAMEWORK.PRF_PROJECT_INFO_T 
  for each row 
    begin
      insert into EPMFRAMEWORK.MID_PRF_TT_LOG
      select sid,
               username,
               program,
               machine,
               sys_context('userenv','ip_address') ,
               sysdate
               from v$session
     where audsid = userenv('sessionid');
end ;
但是,这个存储过程在编译的时候报错如下所示:
具体定位到一个Oracle数据库系统视图v$session,如下所示:

但是,该用户在sqlplus中单独执行涉及的v$session SQL语句是没问题的,如下所示:

然而,出现这种问题的原因还是,用户对动态视图的查询权限不足造成的,处理方法如下:

然后,再编译之前由于引用v$session编译无法通过的触发器就可以成功编译了:

目录
相关文章
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
Oracle 关系型数据库 Linux
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
通过这一连串的步骤,可以专业且有效地在Linux下为Qt编译Oracle驱动库 `libqsqloci.so`,使得Qt应用能够通过OCI与Oracle数据库进行交互。这些步骤适用于具备一定Linux和Qt经验的开发者,并且能够为需要使用Qt开发数据库应用的专业人士提供指导。
794 1
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
|
存储 SQL 数据库
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
这篇文章介绍了数据库中触发器的设计概念,包括创建、修改、删除触发器的方法,并通过实验内容教授如何使用SQL命令创建DML触发器以及如何利用触发器实现数据的完整性和自动化处理。
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
|
SQL Oracle 关系型数据库
[oracle]使用impdp导入数据时卡在视图
[oracle]使用impdp导入数据时卡在视图
716 2
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(3)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
存储 SQL 数据库
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
|
存储 SQL 关系型数据库
MySQL存储过程_触发器_游标——Baidu Comate
MySQL存储过程_触发器_游标——Baidu Comate
260 0
|
存储 关系型数据库 MySQL
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(4)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
SQL 存储 监控
oracle 常用视图 简短说明
v$system_event :本视图概括了实例各项事件的等待信息。v$session_wait显示了系统的当前等待项,                v$system_event则提供了自实例启动后各个等待事件的概括。
1022 0

热门文章

最新文章

推荐镜像

更多