2013-04-20 19 views
5

Quando provo a creare una vista che include tabelle diverse, visualizzo il seguente errore: Errore alla riga 1: ORA-01031 Privilegi insufficienti.ORA-01031 Privilegi insufficienti durante la CREAZIONE DI UNA VISTA?

Qualcuno potrebbe dirmi quale potrebbe essere il problema. Ho provato a seguire l'altro post StackOverflow menzionato qui, ma è relativo a schemi diversi .

ORA-01031: insufficient privileges when selecting view

Per favore fatemi sapere come io sono nuovo qui.

la mia domanda è la seguente:

originale Domanda: Creare una visualizzazione per selezionare ID dipendente, nome del dipendente, data di assunzione, e il numero di reparto.

la mia soluzione:

CREATE VIEW SIMPVIEW AS 
SELECT EMPNO, ENAME, HIREDATE,DEPTNO 
FROM EMP; 
+2

Avete il privilegio 'create view'? Possiedi la tabella 'emp' o stai accedendola in un altro schema (ad esempio lo schema di esempio' HR')? Se è in un altro schema, hai il privilegio 'select' contro di esso attraverso un ruolo o direttamente? –

+0

Grazie per la risposta. Sì, sto eseguendo query sul mio computer con Oracle 11g installato. Quindi, io sono il mio DBA ma da quando sono nuovo non sono sicuro di cosa stia andando male. – Tan

+0

E sì, ho creato una tabella emp. – Tan

risposta

3

Allora probabilmente non si possono avere i privilegi per eseguire il comando CREATE VIEW nel vostro schema del database ... Entra in considerazione SYSDBA e lanciare il comando

GRANT CREATE VIEW TO <dbusername>; 

Qui <dbusername> deve essere sostituito con il nome del utente a cui vuoi dare accesso al comando CREATE VIEW.

2

È possibile controllare se il vostro utente ha VIEW privilegi di creazione utilizzando select * from session_privs.

Si noti che per essere in grado di creare una vista, l'utente che la sta creando deve aver ottenuto i privilegi SELECT su tutti gli oggetti utilizzati, nonché il privilegio menzionato CREATE VIEW. È anche possibile verificarlo effettuando una query a USER_TAB_PRIVS con l'utente che ha ricevuto l'errore.

0

Devi dare qualsiasi privilegio di tabella per l'utente. Quindi la vista verrà compilata correttamente. Non è necessario concedere esplicitamente la selezione all'utente a tutti gli oggetti.

0

quando volevo eseguire la query sopra nello sviluppatore sql ho affrontato problemi in quanto non avevo privilegi sufficienti per creare una vista o altro schema di oggetti Oracle come trigger, pacchetti, procedure ecc. Ho trovato l'errore per ie " Errore alla riga 1: ORA-01031 Privilegi insufficienti ". quindi, avevo bisogno di tutti i privilegi per praticare tutte queste query e programmi. Ho seguito i seguenti passi per risolvere il mio problema:

  1. Come ho effettuato il login come nome utente 'scott', quindi il mio nome è 'scott' non 'Dhruv'. La mia ambizione era di concedere tutti i privilegi a me, cioè all'utente 'scott'.
  2. Per questo, ho bisogno di entrare nel database come DBA. Ora la domanda è! Come accedere come DBA. Per questo, ho aperto il prompt dei comandi e ho effettuato l'accesso al database come sysdba seguendo i passaggi seguenti:

a) Nella corsa della finestra, ho digitato cmd per aprire il prompt dei comandi. Ho digitato: sqlplus/nolog che significa che ho effettuato l'accesso senza fornire le credenziali richieste.
b) Mi sono autenticato per il mio O/S sottostante e inserito nel database come DBA. Per quello, ho digitato il prompt dei comandi: connect/as sysdba; c) Ho valutato chi è l'utente DBA nel mio database, se esiste.Per quello che ho digitato: selezionare il nome dal database V $; d) Qui seguiamo questo comando. Alla fine mi sono concesso (scott) di creare una vista nello sviluppatore sql digitando il comando: concedi crea vista a scott; e) Infine, mi sono concesso tutti i privilegi digitando: concedi tutti i privilegi a scott;

Istantanea del prompt dei comandi: Ho allegato.

Infine, ho eseguito e creato il mio punto di vista: Ho allegato

+0

Non c'è niente collegato – Vemonus

+0

@Dhruv Puoi allegare il tuo allegato? – John

Problemi correlati