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

〖现象(Symptom)   

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

Step01system的身份登陆数据库

SQL> connect system@wm

Enter password:

Connected.

 

Step02创建触发器trigger_autoadd

SQL> CREATE OR REPLACE TRIGGER trigger_autoadd

  2     before insert

  3       on test.autoadd

  4       for each row

  5  begin

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

  7  end;

  8  /

Warning: Trigger created with compilation errors

 

SQL> show error

Errors for TRIGGER SYSTEM.TRIGGER_AUTOADD:

LINE/COL ERROR

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

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

2/4      PL/SQL: SQL Statement ignored

在表autoadd上创建触发器trigger_autoadd

 

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

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

 

Step03system用户也能往表autoadd中也能插入数据库。

SQL> insert into test.autoadd

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

1 row inserted

 

Step04序列也可以正常访问。

SQL> select test.SEQ_id.nextval from dual;

 

   NEXTVAL

----------

       205

 

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

 

〖原理(Cause    

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

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

Grant CREATE TRIGGER to tt;

 

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

Grant CREATE ANY TRIGGER to tt;

 

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

 

〖方法(Action    

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

SQL> grant select on test.seq_id to system;

Grant succeeded.

 

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

SQL> CREATE OR REPLACE TRIGGER trigger_autoadd3

  2   before insert

  3        on test.autoadd

  4         for each row

  5    begin

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

  7    end;

  8  /

 

Trigger created

触发器创建成功。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13804621/viewspace-351814/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13804621/viewspace-351814/

Oracle数据库迁移实战:从EXP/IMP到Data Pump的完整指南 数据库迁移是数据库管理员(DBA)的核心技能之一,它涉及将数据从一个环境安全、高效地转移到另一个环境。其原理基于逻辑备份与恢复,通过导出数据库对象的定义和数据,再在目标环境重新创建。这项技术的核心价值在于保障数据一致性、支持系统升级、硬件更换和容灾备份。在实际应用场景中,无论是测试环境搭建、生产系统迁移还是定期数据归档,都离不开可靠的迁移工具。Oracle数据库提供了两套主要工具:传统的EXP/IMP和现代的Data Pump(EXPDP/IMPDP)。其中,**数据泵(Data Pump)** 凭借其** 阅读详情

相关推荐

AWS DMS生产级数据库迁移实战:全量+增量、CDC与切流避坑指南

数据库迁移是云原生架构演进的核心环节,其本质是在保障业务连续性的前提下实现数据一致性同步。AWS DMS作为托管式数据迁移服务,通过全量加载(Full Load)与变更数据捕获(CDC)双阶段协同,构建低延迟、高可观测的分布式数据管道。其技术价值在于无需修改应用代码即可支撑跨引擎、跨版本、跨云的异构迁移,广泛应用于上云迁移、灾备建设及实数仓同步等场景。然而真实落地中,复制实例选型失当、源库CDC权限缺失、表映射规则误配等细节极易引发延迟飙升、数据截断或切流失败。本文聚焦DMS在Oracle/MySQL/S

weixin_34074740的博客 440

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

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

weixin_35851374的博客 2940

Latex小白也能搞定!5分钟教你用Overleaf打造个性化简历(附免费模板)

本文为LaTeX新手提供了一份快速上手指南,教你如何在5分钟内使用Overleaf在线平台和现成模板,轻松打造专业且个性化的简历。文章详细介绍了从选择模板、替换个人信息到进行颜色、图标等个性化调整的完整流程,让你无需深入学习LaTeX语法,即可高效制作出排版精美、脱颖而出的求职简历。

2a4s6d8f0g的博客 666

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

〖现象(Symptom)〗创建触发器报告权限不足,具体过程如下。Step01:system的身份登陆数据库SQL> connect system@wmEnter password:Connected.Step02:创建触发器trigger_autoaddSQL> CREATE OR REPLACE TRIGGER trigger_autoadd2before insert3on t...

weixin_29083373的博客 4337

ora-01031:insufficient privileges

ora-01031:insufficient privileges解决方法(注意登录用户权限和角色) 注意多个数据库实例候,set ORACLE_SID='', 1、检查sqlnet.ora(WINDOWS下位于%ORACLE_HOME%NETWORKADMIN目录)是否包含这句:SQLNET.AUTHENTICATION_SERVICES=(NTS),没有的话加上 2、检查登陆wind...

jackhexl的博客 1387

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

创建sequence和触发器出现权限不足

解决方式: 已sysdba登陆后,进行授权   grant create any sequence to [用户]创建sequence权限不足解决方法 grant create trigger to [用户]     创建trigger权限不足解决方法   详情如下: grant create any sequence to vgsm 创建sequence权限不足解决方法gran...

weixin_34150503的博客 1616

关于创建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

ORA-01031:权限不足的问题

创建视图报错:ORA-01031 给用户赋予创建视图权限: grant create view to xw_jeecms;依旧不能创建视图。 grant create any view to xw_jeecms;依旧不能创建视图。 grant connect,resource,dba to xw_jeecms; 依旧不能创建视图。 赋予任何主机访问数据的权限,问题得到了解决...

hu_shengyang的专栏 570

Oracle登录ERROR: ORA-01031 insufficient privileges解决办法

Oracle登录ERROR: ORA-01031 insufficient privileges解决办法

专业的计算机毕业设计指南 3037

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

mysql用户创建触发器权限不足跟参数log_bin_trust_function_creators

问题描述 有业务反馈当前用户无法创建触发器和存储过程,让用户自己测试,该用户进行对表的增删改查等其他权限没有问题,这边用root用户查证,该用户拥有对当前库的所有权限,但是为什么就是创建不了触发器呢?创建语句不涉及其他库,只是对当前库进行创建触发器,下面自己进行测试。 处理过程:将参数log_bin_trust_function_creators设置为ON即可 现有一下疑问? 1.用户拥有对当前库的所有权限,但是为什么创建不了触发器呢? 2.log_bin_trust_function_creators参数

weixin_56309996的博客 1072

ORACLE 12C存储过程ALTER Trigger出现ORA-01031错误

最近在ORACLE 12C数据库的存储过程中尝试启用和禁用on database级别触发器出现权限不足的情况,存储过程的属主和调用存储过程的用户均拥有dba角色和alter any trigger权限,一番查找后发现存储过程的属主缺少administer database trigger权限

DBA_JohnHuang 1416

create or replace view ORA-01031: 权限不足(转)

情况如下: 我想在A用户下create or replace view v_testas select tab1.*,b.tab2.* from tab1,b.tab2 where tab1.id=b.tab2.id;其中tab1是A用户下的表,tab2是B用户下的表,A用户是赋予了DBA角色的现在执行create view会提示错误ORA-01031: 权限不足单独 select tab1.*,

dragoo1的专栏 4799
上一篇: 执行存储过程,为什么没有输出?
下一篇: 出席ITPUB北京俱乐部成立大会
conglu3326
博客等级 码龄10年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值