2008-09-26 20 views

Odpowiedz

19

Jako właściciel tabeli musisz przyznać dostęp SELECT w tabelach podstawowych do użytkownika, dla którego działa instrukcja SELECT jako.

grant SELECT on TABLE_NAME to READ_USERNAME; 
1

Jeśli widok jest dostępny za pośrednictwem procedury przechowywanej, przyznanie wykonania jest niewystarczające, aby uzyskać dostęp do widoku. Musisz wyraźnie przyznać wybór.

35

W końcu udało mi się. Odpowiedź Steve'a jest słuszna, ale nie we wszystkich przypadkach. Nie powiedzie się, gdy widok jest wykonywany z trzeciego schematu. Aby to działało, musisz dodać opcję dotacji:

WYBÓR GRANTOWY W [TABLE_NAME] NA [READ_USERNAME] Z OPCJĄ GRANTOWANIA;

ten sposób [READ_USERNAME] można również udzielać wybierz przywilej nad widoku do innego schematu

+0

Co jeśli dba przyznaje przywilej. Nie otrzymuję tej pracy, mimo że użytkownik otrzymuje uprawnienie dba do widoków utworzonych i bazowych tabel. – kinkajou

+1

dziękuję, że nadal pomaga ludziom :) – Ilaria

2

Q. Kiedy jest „grant” z opcją wymagane?

A. jeśli widok jest wykonany z trzeciego schematu.

Przykład: schematu DSDSW ma widok o nazwie view_name

a) that view selects from a table in another schema (FDR.balance) 
b) a third shema X_WORK tries to select from that view 

Typowe dotacje: dotacji wybrać na dsdw.view_name do dsdw_select_role; dotacja dsdw_select_role do fdr;

Ale: fdr pobiera wybierz liczbę (*) od dsdw.view_name; BŁĄD w linii 1: ORA-01031 : niewystarczające przywileje

problem dotacja:

grant select on fdr.balance to dsdw with grant option; 

teraz FDR: select count (*) z dsdw.view_name; 5 rzędów

4

Pozwolę sobie podsumować.

Po utworzeniu widoku zawierającego obiekt różnych właścicieli, inni właściciele muszą przyznać właścicielowi widoku opcję "z opcją przyznania". Więc, właściciel widok może udzielić innym użytkownikom lub schematów ....

Przykład: user_a jest właścicielem tabeli nazywa mine_a User_b jest właścicielem tabeli o nazwie yours_b

Powiedzmy user_b chce aby utworzyć widok z złączenia z mine_a i yours_b

dla widoku pracować dobrze, user_a ma dać „grant wybrać na mine_a do user_b z opcją grantu”

Wtedy user_b przyznaniu select tego celu wszyscy.

1

Jeśli widok jest dostępny za pośrednictwem procedury przechowywanej, przyznanie wykonania jest niewystarczające, aby uzyskać dostęp do widoku.Musisz wyraźnie przyznać wybór.

po prostu wpisz tę

udzielić wszystkich do wiadomości publicznej;

0

Aby użyć widoku, użytkownik musi mieć odpowiednie uprawnienia, ale tylko dla samego widoku, a nie obiektów leżących u jego podstaw. Jeśli jednak uprawnienia dostępu do podstawowych obiektów widoku zostaną usunięte, użytkownik nie ma już dostępu. Takie zachowanie występuje, ponieważ domena bezpieczeństwa używana, gdy użytkownik pyta o widok, jest nazwą definiującą widok. Jeśli uprawnienia dla obiektów podstawowych zostaną odwołane z poziomu definiującego widok, widok stanie się nieważny i nikt nie będzie mógł go użyć. Dlatego nawet jeśli użytkownik uzyskał dostęp do widoku, użytkownik może nie mieć możliwości korzystania z widoku, jeśli uprawnienia definiującego zostały odwołane z obiektów leżących u podstaw widoku.

Oracle Documentation http://docs.oracle.com/cd/B28359_01/network.111/b28531/authorization.htm#DBSEG98017

Powiązane problemy