truncate 跨用户权限

0
 在A用户下truncate B用户下的表的权限是怎么写
 
我在网上找了一些如都没用,求大神解答

 
已邀请:
0

老头子 - 专注是唯一的捷径 2016-02-19 回答

我记着是drop any table的权限,truncate的的时候要加schema
如:
A用户下truncate B用户的表:
truncate table B.emp
 
注意:即便有同义词,也必须加schema,因为truncate是DDL语句
0

我是最优雅的杀手,不杀人专杀狗 - 日光之下并无新事 2016-02-19 回答

Truncate table只能是owner用户,或者是拥有drop any table的用户

方法1:
登陆DBA权限用户,授权给 用户 A drop any table 权限
grant drop any table to A;
方法2:创建存储过程
--a:在账户USER_A 下创建
create or replace procedure P_TRUNCATE_A is
begin
execute immediate 'truncate table user_TABLE_A';
end;
--b:过程授权给USER_B 用户
grant execute on P_TRUNCATE_A to USER_B;
--c:在账户USER_B 下执行
begin
USER_A.P_TRUNCATE_A;
end;

 

要回复问题请先登录注册