2014-09-04 82 views
0

我想知道是否有可能对数据库管理员做类似的东西,以现有数据库Oracle数据库的限制

  1. 给只读访问。
  2. 但是,用户应该能够创建新表(甚至临时表也很好)。
  3. 用户可以写入由他创建的所有新临时表,并且这些临时表在会话关闭时消失。

我知道第一点是可能的,但是有可能将第2点和第3点中指定的权限授予仅对现有数据库表具有只读访问权限的人员。

回答

1

特权不会授予数据库或模式,仅限于对象。您当然可以创建一个数据库用户并授予该用户访问您希望他访问的数据库的每个模式中的每个表的访问权限。如果创建了新对象,则需要将这些新对象的权限授予此用户。然后,您可以在该表空间上为该用户提供CREATE TABLE权限以及适当的配额,以便允许用户创建新表。这主要是照顾#1和#2。

至于#3,Oracle没有这样一个表,它的定义对于特定的会话来说是本地的,所以当会话结束时你不能删除表。我想你可以创建一个注销触发器,通过dbms_job提交作业,在用户注销后立即删除用户架构中的所有表。然而,这将是非常不寻常的,所以我会强烈建议你避免这种情况,除非你正在做一些非常不寻常的事情(例如,sqlfiddle在封面上做了很多奇怪的事情,因为使用Oracle是一种非常奇怪的方式数据库)。

+0

感谢贾斯汀的回复 – Prabhjot 2014-09-04 19:52:59