oracle中实现某个用户truncate 其它用户下的表

oracle文档中对truncate权限的要求是需要某表在当前登录的用户下,或者当前登录的用户有drop any table的权限。

但是如果不满足第一个条件的情况下,要让某用户满足第二个条件就导致权限过大了。

参考网上的讨论,可以使用存储过程来时间。

例如有两个用户 u1,u2,u1下有表 test1a

现在想要实现u2能 truncate u1下的表 test1a。

可以使用用户u1创建存储过程,

create procedure u1.stgtruncate(table_name in varchar2) as
begin
  execute immediate ‘truncate table ‘||table_name;
end;

然后将该存储过程的权限赋予u2,

grant execute on u1.stgtruncate to u2;

现在登录u2,通过执行如下sql即可truncate u1下的表test1a

call u1.stgtruncate(‘test1a‘);

以上。

原文地址:https://www.cnblogs.com/vanwoos/p/9364471.html

时间: 2024-10-28 00:46:35

oracle中实现某个用户truncate 其它用户下的表的相关文章

oracle中出现"数据被另一用户锁住"的解决方法

在oracle中执行: select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; alter system kill session 'SID,serial#' 版权声明:本文为博主原创文章,未经博主允许不得转载.

Oracle中的delete和truncate的关系

转自:http://chenxy.blog.51cto.com/729966/168459 1.相同点 a.都可以删除数据,其中truncate用于全表清空数据,而delete可以选择的删除 2.不同点: a.回滚,delete支持事物回滚,而truncate不支持.  延伸:在oracle中事物能回滚,是因为oracle中设计的undo表空间.数据再删除后仍能回滚是因为把数据放到了undo表空间     delte属于DML语言,DML语言需要手动提交事物,可以进行事务回滚 truncate属

oracle中查询所有外键引用到某张表的记录

其实查找这篇文章  我主要用的sql 是这句  select * from user_cons_columns t where t.constraint_name like 'FK_CTS_CONT_REINS__CRR'; 起因: 系统测试的时候发现如果某条记录已经被引用了,这个时候删除这条记录会引起数据不一致,系统会报错.比如警员信息,在考勤记录表里会引用警员ID,如果考勤记录表中已经存在这个警员ID了,这时从警员表中删除该警员,就会引起数据不一致,前台报错.所以,这个时候我就想查找数据库中

greenplum给某个用户赋予整个schema下所有表的权限

greenplum 虽然是postgresql的衍生产品 但是语法上略有不同 类似    grant all on all tables in schema schemaname to someone 就不行 报错提示  ERROR: syntax error at or near "all" 所以使用了笨办法 先生成语句 select 'grant all on table ' || schemaname || '.' || tablename || ' to usertest;'

【转载】Oracle的方案(Schema)和用户(User)的区别

免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:立正_敬礼_喊志哥     原文地址:http://my.oschina.net/u/1181927/blog/146879   从定义中我们可以看出方案(Schema)为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如

java实现调用ORACLE中的游标和包

今天把oracle中的包和游标学习了下,不废话,网上的的有些代码是错误的,抄来抄去,就自己实践了下,做个记录.直接上图,上代码 通过plsql创建自己的的包,包分为包头和包体. 1.包头如下: 1 CREATE OR REPLACE PACKAGE JAVALINKTEST 2 IS 3 TYPE CURSOR_TYPE IS REF CURSOR; --定义游标 4 PROCEDURE TEST_CURSOR(INPUT STRING, CURSOR_BACK OUT CURSOR_TYPE)

Oracle中merge into的使用 (转)

http://blog.csdn.net/yuzhic/article/details/1896878 http://blog.csdn.net/macle2010/article/details/5980965 该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动. 1,insert 和update是可选的 2,UPDATE 和INSERT 后面可以跟WHERE

【Oracle】Oracle中使用转义字符

1.Oracle 特殊字符 转义 关键词:oracle    转义                                           环境:oracle9i plsql 在plsql里边执行: update userinfo set pageurl='myjsp?page=1&pagesize=10' where id='test' 这条sql语句往数据库的pageurl字段放进去了一个url地址,但是执行的时候却并非那么理想,因为这其中有一个oracle的特殊字符,需要进行转

Oracle中merge into的使用

http://blog.csdn.net/yuzhic/article/details/1896878 http://blog.csdn.net/macle2010/article/details/5980965 该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动. 1,insert 和update是可选的 2,UPDATE 和INSERT 后面可以跟WHERE