oracle创建触发器权限不足,创建触发器时,报告错误:ORA-01031: insufficient privileges...

〖现象(Symptom)〗

创建触发器时,报告权限不足,具体过程如下。

Step01:system的身份登陆数据库

SQL> connect system@wm

Enter password:

Connected.

Step02:创建触发器trigger_autoadd

SQL> CREATE OR REPLACE TRIGGER trigger_autoadd

2before insert

3on test.autoadd

4for each row

5begin

6select test.SEQ_id.nextval into :new.id from dual;

7end;

8/

Warning: Trigger created with compilation errors

SQL> show error

Errors for TRIGGER SYSTEM.TRIGGER_AUTOADD:

LINE/COL ERROR

-------- ------------------------------------------

2/16PL/SQL: ORA-01031: insufficient privileges

2/4PL/SQL: SQL Statement ignored

在表autoadd上创建触发器trigger_autoadd。

用户system有角色(role)DBA权限,而DBA已经就有CREATE ANY TRIGGER

的权限,因此,system就有create any trigger的权限。

Step03:system用户也能往表autoadd中也能插入数据库。

SQL> insert into test.autoadd

2values(4,'sdfds','sdfsdf');

1 row inserted

Step04:序列也可以正常访问。

SQL> select test.SEQ_id.nextval from dual;

NEXTVAL

----------

205

这就非常奇怪,用户system有CREATE ANY TRIGGER的权限,system有访问触发器中所引用的对象(表)上的权限,为什么还报告“权限不足”呢?

〖原理(Cause)〗

要想创建触发器,必须要有CREATE TRIGGER,CREATE ANY TRIGGER的权限。如:

要想使用户tt有创建触发器的权限,则执行命令:

Grant CREATE TRIGGER to tt;

要想使用户tt有在其他模式(any schema)创建触发器的权限,则执行命令:

Grant CREATE ANY TRIGGER to tt;

本例中,用户system已经有了CREATE ANY TRIGGER和访问任何对象的权限。那么,用户System自然也有访问序列(sequence)seq_id的权限,但是这个权限是从角色(role)DBA继承而来的权限。创建触发器(trigger)时,ORACLE有一个限制,触发器(trigger)的拥有者必须被显示(explicitly)授予访问触发器(trigger)中涉及到的对象的权限(也就是说这些权限不能由角色继承而来)。

〖方法(Action)〗

Step01:显示(explicitly)授予触发器的拥有者(system)访问序列(sequence)seq_id的权限。

SQL> grant select on test.seq_id to system;

Grant succeeded.

Step02:再次执行创建触发器trigger_autoadd3的脚本。

SQL> CREATE OR REPLACE TRIGGER trigger_autoadd3

2before insert

3on test.autoadd

4for each row

5begin

6select test.SEQ_id.nextval into :new.id from dual;

7end;

8/

Trigger created

触发器创建成功。

相关推荐

C#实战:基于ONNX与SCRFD/ArcFace的高效人脸识别系统开发

本文详细介绍了如何在C#环境中,利用ONNX Runtime高效部署SCRFD人脸检测与ArcFace人脸识别模型,构建一个完整的、高性能的人脸识别系统。内容涵盖环境搭建、模型推理、人脸对齐、特征提取等核心模块,并提供了从Demo到生产系统的优化思路与实战代码,为.NET开发者提供了一套开箱即用的解决方案。

weixin_29061821的博客 454

orcal sql 常见问题

Warning: Trigger created with compilation errors 一般出现这种警示是表示 触发器创建 引发的编译错误 解决方法:检查有没有 拼写错误 或者字符没加 ‘ ’ 号

Cumming123的博客 723

QML教程04 - Image:搞定界面上的所有图片

本文是QML教程系列的第四篇,重点讲解Image控件的实战用法。文章从图片显示常见的变形、卡顿等问题入手,详细介绍了Image的核心属性和使用技巧。主要内容包括:图片路径的三种写法(相对路径、qrc资源、网络URL)、最重要的fillMode属性解析(PreserveAspectFit、PreserveAspectCrop、Stretch的适用场景)、性能优化方法(sourceSize设置)、异步加载(asynchronous)以及圆形头像的实现方案。

BenBierBa的博客 1588

Oracle创建Database trigger 出现ORA-01031:权限不足

#Oracle创建Database trigger 出现ORA-01031:权限不足# 创建编译on database 触发器,出现ORA-01031提示权限不足,原因是创建数据库级触发器需要使用administrator database trigger权限. 解决办法: grant administrator database trigger to username; ...

weixin_42275580的博客 2394

oracle触发器权限不足,oracle-存储过程提示ORA-01031: 权限不足错误解决

在调用存储过程,尤其是含有DDL或者动态SQL语句的过程中,经常出现此错误,详细解释如下:默认情况下,在调用存储过程用户的角色是不起作用的,即在执行存储过程只有Public权限。所以如果被调用的存储过程中如果有execute immediate ‘create table..’语句,将会引发ORA-01031: insufficient privileges错误。存储过程分为两种,即DR(Def...

weixin_35851374的博客 2940

oracle创建触发器权限不足,Oracle创建触发器遇到的问题

create or replace trigger drs_asynchronous_trigbefore insert on drs_asynchronousFOR EACH ROWdeclare-- local variables herev_trigger_user varchar2(100);v_trigger_date date;v_sqlcode varchar2(6)...

weixin_36268255的博客 720

创建触发器报告错误ORA-01031: insufficient privileges

〖现象(Symptom) 〗 创建触发器报告权限不足,具体过程如下。 Step01:system的身份登陆数据库 SQL> connect system@wm Enter password: Conne...

conglu3326的博客 825

关于创建ON DATABASE触发器出现ORA-01031: insufficient privileges问题

问题:关于创建ON DATABASE触发器出现ORA-01031: insufficient privileges问题 如图: 解决办法: ADMINISTER DAT...

congjiu9273的博客 384

ORA-01031: insufficient privileges权限不足)和 ORA-06512: at "SYS.DBMS_SESSION"问题

因为要搭建测试环境,所以创建了另一个oracle数据库实例,将触发器啊,存储过程啊之类的统统copy过来,一切准备好后,运行程序是发现一个问题!!! 执行存储过程报错; 17:00:47,275 ERROR DbExec:911 - SQLException:{call riskcontrol.rule_match(?,?,?,?,?,?,?,?)}| java.sql.SQLExcepti

4080

impdp导入报权限问题

检查文件系统、directory、用户权限均正常,并且导入过一次也正常。发现是个触发器,并且重编译发生错误,所以干脆删掉。根据报错查看编译出错的对象。

lmxx2020的博客 509

Oracle

OracleOracle0.概念1.数据库对象1.1 视图 View1.1.1 创建视图的语法1.1.2 视图的查询1.1.3 视图的作用1.1.4 授权创建视图1.1.5 创建简单视图(单表)1.1.6 创建复杂视图(多表)1.1.7 查询当前用户名下的所有视图1.1.8 删除视图1.1.9 同一数据库,两个不同账户之间表的授权1.2 序列 SEQ1.2.1 什么是序列?1.2.2 创建序列1.2.3 查询用户的序列1.2.4 删除序列1.3 索引1.3.1 索引的概念1.3.2 创建索引1.3.3修改和

weixin_43766298的博客 1170

oracle创建触发器权限不足,oracle 创建触发器是非法的 ORA-04098: trigger 'USER_TRIGGER'is invalid and failed re-v...

ORA-04098: ORA-04098: trigger 'USER_TRIGGER'is invalid and failed re-valid代码:create table t_user(user_id int primary key,user_name varchar(30),credits int,u_password varchar(32),last_visit date,last_i...

weixin_42535720的博客 909

oracle触发器ORA-01031权限不足

在超级用户下,使用语句grant dba to c##hfy;授权即可 最后,ps用的好,作业写得少。大家一定先学会ps如何修改文字,比会ctrl+c +v更爽!!!

qq_43340941的博客 893

oracle 创建函数报Warning: Function created with compilation errors.

今天偷懒了,直接在网上找了一个create or replace function 语句就到Oracle数据库中执行,结果得不偿失,一直就是Warning: Function created with compilation errors。我它喵的头都大了,能不能来点好的,在网上劈里啪啦一顿搜,还没有什么有用的东西。劝解各位最好还是搞清楚他们的原理,再来写吧。 在这儿留下解决方式吧。其实很简单,就是老老实实的把搜到的语句在客户端敲一遍就行了。原因oracle创建函数是,不支持table键来对齐。 这解

weixin_44031114的博客 3461

oracle创建储存过程编译提示错误

去网上搜了一下,发现是因为utl_file这个基础包当前用户没有执行权限,导致定义的utl_file对象无法识别,编译报错,可以查一下。特别总结:若遇到存储过程编译报错的问题,先show errors找到问题,再分析解决问题。#PUBLIC是数据库所有用户对象,查看是否具有utl_file包执行权限。结果显示no row select, 说明没有utl_file包执行权限。utl_tcp,utl_http,utl_smtp等,类似的处理方法一致。完成解决,像utl_file这样的oracle基础包还有。

qq_43423634的博客 2278

无法对sys拥有的对象创建触发器

以sys用户登录oracle数据库创建触发器,提示无法对sys拥有的对象创建触发器,原因如下: sys拥有的对象大部分是数据字典 数据字典是数据库正常运行的基础 如果在数据字典上创建TriggerOracle数据字典的修改会变的不正常 整个数据库也就会不正常连接甚至瘫痪 所以Oracle是禁止对sys拥有的对象(尽管有些对象是我们自己创建的)创建Trigger的。

钱多多 3097

Oracle 新手编写-存储过程 报错:Procedure created with compilation errors.及PLS-00905: object V3XUSER1.PRO_STU_AD

新手第一次写存储过程必看

标题有点难 3579
上一篇: 创建用1填充的的数组python,python创建一维数组
下一篇: oracle acfs 快照,Oracle ASM Cluster File Systems (ACFS)应用指南
mcjh0503
博客等级 码龄9年 33粉丝 1038原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值