您可以授予特权以仅创建全局临时表,即不创建CREATE TABLE吗?
这种情况的背景源于不允许“ CREATE TABLE”的安全模型...我找不到对任何特定特权的引用。
答案 0 :(得分:5)
我找不到对任何特定特权的引用。
因为据我所知,没有。您仍然必须向用户授予CREATE TABLE
特权,这样他才能创建TEMPORARY
表。
为了防止用户创建常规表并允许他仅创建临时表,您可以考虑以下内容:
授予用户CREATE TABLE
特权并撤销特定表空间上的配额。
alter user <<user_name>> quota 0M on <<tablespace>>;
它可能是用户的默认表空间,也可能是其他表空间。
在没有DEFFERED_SEGMENT_CREATION
的Oracle版本中,当用户尝试创建常规表时,足以看到space quota exceeded for tablespace
。
在带有DEFFERED_SEGMENT_CREATION
的Oracle版本中,用户仍然可以创建常规表,但不能填充常规表。用户尝试执行INSERT
语句的第二秒钟,将显示space quota exceeded for tablespace
。
因此,您可以考虑将deferred_segment_creation
参数设置为false
。
alter system set deferred_segment_creation = false;