Estou aprendendo Oracle e tenho que fazer funções. Eu criei um c##admin
a partir de um sys, concedi a ele todas as concessões. Então eu criei um c##manager_role
e c##manager
. Eu concedi esse papel para c##manager
. Depois disso, comecei a conceder privilégios para c##manager_role
. Além disso, concedi o seguinte:
CREATE VIEW YES YES NO
CREATE ANY VIEW NO NO NO
DROP ANY VIEW YES YES NO
Saída acima de:
select * from role_sys_privs where ROLE = 'C##MANAGER_ROLE' order by 1;
Agora, não consigo entender, por que CREATE ANY VIEW
tem 3 "NÃO" e por que não consigo criar nenhuma visualização de c##manager
.
De c##admin:
grant CREATE ANY VIEW TO c##manager_role with admin option CONTAINER=all;
De c##manager:
create view friends_v4 as select t1.nickname as "USER", t2.nickname as "FRIEND" from c##admin.clients t1, c##admin.clients t2, c##admin.friends where (t1.id = c##admin.friends.user_id and t2.id = c##admin.friends.friend_id);
Erro:
Relatório de erros - ORA-01031: привилегий недостаточно 01031. 00000 - "privilégios insuficientes"
*Causa: Foi feita uma tentativa de executar uma operação de banco de dados sem os privilégios necessários.
*Ação: Peça ao seu administrador de banco de dados ou administrador de segurança designado para conceder a você os privilégios necessários
Todas as tabelas indicadas existem.
Ser capaz de criar uma visão não é suficiente.
O Proprietário [conta] da Visualização finalizada deve ter privilégios de leitura nas Tabelas usadas por essa visualização. Esses privilégios não podem ser conferidos por meio de qualquer Função.
Além disso, por que você está trabalhando com usuários comuns aqui (começando "C##")?
Eu só esperaria vê-los no banco de dados Container, não em nenhum dos Pluggable que vivem nele (que é onde eu esperaria ver todas as Tabelas e Dados de Aplicativos).