В моей оракулярной БД у меня есть пользователь с именем test
, у этого пользователя есть DML_ROLE
в БД. И я предоставил доступ для вставки / обновления / удаления / выбора к DML_ROLE
в таблице с именем hdr_detail
.
Но когда пользователь 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
Пожалуйста, помогите мне решить эту проблему. Ответьте в комментарии, если вам нужна дополнительная информация по этому вопросу.