如何解决oracle中潜在的权限问题
我有一个同义词指向一张桌子:如何解决oracle中潜在的权限问题,oracle,permissions,oracle11g,Oracle,Permissions,Oracle11g,我有一个同义词指向一张桌子: -- Create the synonym create or replace synonym MY_SCHEMA.COLORS_ALL for OTHER_SCHEMA.MV_CAR_COLORS; 问题是我可以查询这个同义词fine: select * from MY_SCHEMA.COLORS_ALL; 但是,当我试图在存储过程中使用这个同义词时,我得到一个错误,即表或视图不存在。 是什么导致了这个问题?
-- Create the synonym
create or replace synonym MY_SCHEMA.COLORS_ALL
for OTHER_SCHEMA.MV_CAR_COLORS;
问题是我可以查询这个同义词fine:
select *
from MY_SCHEMA.COLORS_ALL;
但是,当我试图在存储过程中使用这个同义词时,我得到一个错误,即表或视图不存在。
是什么导致了这个问题?最近,目标表(MV)MV\u CAR\u COLORS
被刷新,其索引也被刷新 您需要将表上的直接授权(而不是通过角色)授予存储过程的所有者。如果“刷新”是指删除并重新创建了表,则可能没有在刷新过程中重新授予此直接授予。您需要将表上的直接授予(而不是通过角色)给存储过程的所有者。如果“刷新”是指删除并重新创建了表,则可能没有在刷新过程中重新授予此直接授予。select*from dba\u tab\u privs where grantee in('PUBLIC','my\u schema'))设保人='OTHER_SCHEMA'和table_name='COLORS_ALL'
获取一行,因此我假设直接授权是有趣的-该行的内容是什么?同义词上的priv没有提供MV_CAR_COLORS对象的priv。我想你需要选择和引用权限table@Gary-对不起,在Oracle中没有同义词的特权。关于SELECT特权(而不是引用)您是对的,我们必须看看dba_tab_privs返回了什么来做出决定。在再次阅读原始问题后,我想知道SELECT中我的模式限定是故意的。哎哟。布拉德利是对的。您可以对同义词进行授权,但它会作为对对象的授权出现在基础***_选项卡_privs中。我对可以有自己授权的视图感到困惑。select*from dba_tab_privs where grantee in('PUBLIC','my_schema'))设保人='OTHER_SCHEMA'和table_name='COLORS_ALL'
获取一行,因此我假设直接授权是有趣的-该行的内容是什么?同义词上的priv没有提供MV_CAR_COLORS对象的priv。我想你需要选择和引用权限table@Gary-对不起,在Oracle中没有同义词的特权。关于SELECT特权(而不是引用)您是对的,我们必须看看dba_tab_privs返回了什么来做出决定。在再次阅读原始问题后,我想知道SELECT中我的模式限定是故意的。哎哟。布拉德利是对的。您可以对同义词进行授权,但它会作为对对象的授权出现在基础***_选项卡_privs中。我对那些可以自己获得资助的观点感到困惑。