Oracle:在另一个模式中授予Create表?

时间:2014-01-28 17:37:12

标签: oracle

我有两个用户:Schema1和Schema2

如何将Schema2上的Create Table权限授予Schema1?

我一直在转身,我感到困惑。 我试过了:

从Schema2我试过,

GRANT CREATE TABLE TO SCHEMA1 WITH ADMIN OPTION;

但似乎这样可以在自己的Schema中为Schema1创建表,而不是在Schema2中。

有什么想法吗?

谢谢。

3 个答案:

答案 0 :(得分:14)

允许非DBA用户在另一个模式中创建表的唯一方法是为用户提供CREATE ANY TABLE系统特权。

此权限只能由具有DBA权限的用户授予SCHEMA1。

答案 1 :(得分:5)

您想要授予create ANY table

grant create any table to schema1;

any“修饰符”允许以非自己的模式创建表。

答案 2 :(得分:2)

更好的解决方案(最小化CREATE ANY TABLE权限带来的安全威胁......)

  • 在schema2上创建一个以表定义为例的过程 “input”参数(例如varchar2(4000)中的p_tab_def。
  • 里面放了一个execute_immediate(p_tab_def);声明。你必须首先检查p_tab_def,以保护自己免受其他DDL语句的影响 “创建表[...]”。 (例如,您可以通过检查前两个来使用简单的检查 单词 - >它必须是“CREATE TABLE”)。
  • GRANT EXECUTE ON schema2.procedure_name TO schema1;

这是一个简单的概念......我在以前的工作中使用过这些概念。