2010-11-02 10 views
5

Hey ragazzi. Quindi, ho effettuato l'accesso come account dba e voglio creare una vista nello schema di User1, ma selezionando i dati da User2.Oracle Create Visualizza problema

ho usato la seguente query:

CREATE OR REPLACE VIEW User1.NewView (Column1) AS 
SELECT DISTINCT Column1 FROM User2.Table 

e ottengo il seguente errore:

SQL Error: ORA-00942: table or view does not exist 
00942. 00000 - "table or view does not exist" 
*Cause:  
*Action: 

Per risolvere questo ho dovuto concedere selezionare accedere a Utente1 su User2.Table. C'è un modo per farlo senza dover concedere l'accesso, dal momento che sono già registrato come dba? Grazie ragazzi!

risposta

10

Sì, è necessario (e dovrebbe sempre) concedere esplicitamente l'accesso agli oggetti in un altro schema.

GRANT SELECT ON user2.table TO user1 

Anche se si è registrato come "l'account dba" (SYS, sto supponendo), l'istruzione CREATE è per lo schema user1 specifico.

8

si può fare CREARE O SOSTITUIRE FORZA VISTA ...

che creerà la vista nonostante la mancanza di privilegi, ma la vista non sarebbe utilizzabile a meno che i privilegi sono concessi. È una soluzione che può essere utile se i privilegi saranno concessi in seguito (ad esempio in alcuni script di build automatizzati).

+1

+1: impara qualcosa di nuovo –

0

Probabilmente perché non si ha accesso alla tabella o vista

Query privilegi di concessione su un oggetto per l'utente;