2

假设我有一个平台,允许用户输入一些 SQL 查询并执行它们。数据库是 Oracle 11.2

有没有办法限制用户对CREATE TABLE、CREATE VIEW 和ALTER table ADD COLUMN 的操作?

我看到的唯一方法是使用 Oracle DB 11.2 的语法解析所有用户提供的查询。但是这种方式是一种非常乏味的方式,因为免费访问中没有完整的语法(至少我找不到),并且实施一个需要几天甚至几周的时间。

4

1 回答 1

1

授予 CREATE TABLE 和 CREATE VIEW 权限。
对于 ALTER TABLE,仅限制 ADD COLUMN,可以创建过程并授予 EXECUTE:

create or replace add_column( tableName varchar2, columnDefinition varchar2 ) 
as
  execute immediate 'alter table '|| tableName || ' add column ' || columnDefinition; 
end;
/

(未测试)

GRANT EXECUTE on ADD_COLUMN to user2;
于 2013-10-13T19:41:02.553 回答