我可以阻止在Oracle DB上更新或删除吗?

时间:2017-08-28 08:51:51

标签: database oracle readonly

我必须实施财务申请。其中一个验收标准是:

  

"数据可能永远不会改变。"

因此,我需要阻止数据库上的updatedelete操作,因为它将部署在客户拥有和管理的计算机上。

这甚至可能吗?也许有触发器?如果没有,是否有其他数据库可以阻止updatedelete

2 个答案:

答案 0 :(得分:3)

最简单的方法是通过角色,例如查询角色。授予对该角色的表列表的select选项,并将该角色授予应用程序的用户。您当然可以创建其他人,例如具有更新和删除权限的管理员角色,以便稍后在需要时授予。

示例:

CREATE ROLE FIN_APP_INS_SEL_ROLE;                                   
GRANT INSERT, SELECT on <table1> to FIN_APP_INS_SEL_ROLE;
GRANT INSERT, SELECT on <table2> to FIN_APP_INS_SEL_ROLE;
GRANT CONNECT, FIN_APP_INS_SEL_ROLE to <app_user>; 

您也可以将表空间设为只读,

ALTER TABLESPACE <name> READ ONLY;

或整个数据库只读。

ALTER DATABASE OPEN READ ONLY;

答案 1 :(得分:0)

事实证明这是不可能的。

如果不允许INSERT,则无法授予UPDATE权限。据我了解,INSERT权限被解释为可能会更改该表的数据