SELECT
D.OS_USERNAME
,D.terminal AS MACHINE
,D.OBJ_NAME
,D.ACTION_NAME
,D.timestamp
,D.Sql_Text
FROM DBA_AUDIT_TRAIL D
WHERE D.OWNER = 'HRADMIN'
AND D.ACTION_NAME LIKE '%INSERT%'
AND D.OS_USERNAME NOT IN ('MuhammadJav','zeeshankh1');
此查询给我记录
我想应用限制或限制,以便只有D.OS_USERNAME ('MuhammadJav','zeeshankh1','Alikh1')
可以运行insert,update,delete,alter语句,而其他用户不能插入,更新,delete,alter数据。
答案 0 :(得分:1)
在Oracle中,插入,更新或删除的权限在用户或角色级别上进行管理。这些用户是数据库用户,就像您的HRADMIN
一样。
如果像MuhammadJav,zeeshankh1,Alikh1这样的操作系统用户使用相同的oracle帐户,事情就会变得更加困难。
DML语句(如“ ALTER”或“ CREATE”)的处理方式完全不同。像“ HRADMIN”这样的用户可以使用其自己的架构中的表和其他对象来完成他/她想要的事情。可能,但很难阻止这种情况。
因此,传统的解决方案是给MuhammadJav,zeeshankh1,Alikh1他们自己的oracle帐户,并授予他们作为用户HRADMIN所需的特权:
GRANT INSERT,UPDATE,DELETE ON HRADMIN.your_table_name TO MUHAMMADJAV;
GRANT INSERT,UPDATE,DELETE ON HRADMIN.your_table_name TO ZEESHANKH1;
etc