Oracle角色,权限和自定义类型分布在不同的模式中

时间:2015-02-02 23:13:30

标签: oracle types roles

我有一个架构,其中包含我的项目DEV2上的绝大多数表。

此外,我有一个包含DEV2使用的oracle自定义类型的模式:PUBLIC_TYPES。

我希望能够在DEV2上创建访问PUBLIC_TYPES中的角色的触发器,但是更喜欢用角色执行此操作,这样当我创建DEV3(DEV2的克隆)时,我可以将角色授予DEV3在编译触发器之前。

目前,如果我执行以下操作:

grant all on public_types.type_name to DEV2;

然后(在DEV2用户上)我输入:

desc public_types.type_name;

我得到了类型的正确描述。

但是,如果我改为执行以下操作:

create role TABLE_PRIVS;
grant all on public_types.type_name_2 to TABLE_PRIVS;
grant table_privs to DEV2;

(然后切换到我的DEV2用户和desc)

desc public_types.type_name_2

我得到了

ORA-04043: object public_types.type_name_2 does not exist

我错过了什么?我已授予角色权限,并授予用户角色权限。这对于类型有何不同?

提前致谢!

1 个答案:

答案 0 :(得分:0)

尝试将角色添加为默认用户

grant table_privs to DEV2;
ALTER USER DEV2 DEFAULT ROLE table_privs;

否则您需要使用SET ROLE