2010-11-19 61 views
2

我有3個Oracle用戶A,B,C,並且希望使用B(作爲中間)將表從C導入到A.當連接到B時,我可以運行「create table A.T1 as select * from T1 @ C」。但是,當我將sql語句放入B創建/擁有的過程中時,我總是收到「ORA-01031:權限不足」。作爲sysdba,我已授予B的所有權利(dba)。因此,我在這裏錯過了什麼?謝謝。Oracle過程是否繼承其創建者的特權?

回答

2

您是否已將以下用戶授予B

sql> grant create any table to b; 
5

在存儲過程(默認值)的定義者權限,這是唯一可用的特權是那些被直接授予用戶,而不是那些已經通過角色(如DBA)授予。所以Pablo是正確的,B需要將CREATE ANY TABLE特權作爲直接授予。

+1

默認值是「所有者權利」而不是invokers。 – redcayuga 2010-11-19 22:00:47

+1

@redcayuga - +1感謝您的接收!你是絕對正確的。我更新了我的答案以反映您的更正。 – 2010-11-20 01:07:00

+0

「AUTHID DEFINER」...;)這是默認值。替代方案是「AUTHID CURRENT_USER」,我總是想嘗試......! – 2012-04-24 03:02:28