在我的oracle數據庫中,我有一個名爲test
的用戶,該用戶在數據庫中有DML_ROLE
。並且,我在名爲hdr_detail
的表上提供了對DML_ROLE
的插入/更新/刪除/選擇訪問。Oracle 11G中的用戶訪問問題
但是,當用戶test
對hdr_detail
表執行更新查詢時,其獲取的錯誤消息爲Returned error: ORA-01031: insufficient privileges
。當我直接向用戶提供訪問時,它工作正常。
我很困惑,爲什麼這個錯誤只有當我通過角色提供訪問時才顯示出來。
表結構:
COLUMN NAME DATA TYPE
PERIOD NUMBER
HDR_ID VARCHAR2(50)
查詢我使用來更新:
update test_sch.hdr_detail set period=201108 where hdr_id = 'check';
聲明我使用授予:
grant insert,select,update,delete on test_sch.hdr_detail to dml_role;
select * from dba_role_privs where grantee like 'TEST'
返回以下結果
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
TEST DML_ROLE NO NO
select * from dba_tab_privs where table_name like 'HDR_DETAIL'
返回以下結果
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
DML_ROLE TEST_SCH HDR_DETAIL TEST_SCH DELETE NO NO
DML_ROLE TEST_SCH HDR_DETAIL TEST_SCH INSERT NO NO
DML_ROLE TEST_SCH HDR_DETAIL TEST_SCH SELECT NO NO
DML_ROLE TEST_SCH HDR_DETAIL TEST_SCH UPDATE NO NO
請幫我解決這個問題。如果需要更多關於此問題的信息,請回複評論。
如何被用戶attemptign做出更新?直接通過SQL * Plus或類似的界面或通過應用程序? – Ollie
數據庫中是否有任何公共同義詞,如hdr_detail?可能你的用戶看到另一個表。 –
這張桌子上是否有觸發器? – Ollie