web-dev-qa-db-fra.com

ORA-01031 Privilèges insuffisants lors de la création d'une vue?

Lorsque j'essaie de créer une vue incluant différentes tables, l'erreur suivante s'affiche: Erreur sur la ligne 1: ORA-01031 Privilèges insuffisants. 

Quelqu'un pourrait-il me dire quel pourrait être le problème? J'ai essayé de suivre un autre poste de stackoverflow mentionné ici, mais il concerne différents schémas. 

ORA-01031: privilèges insuffisants lors de la sélection de l'affichage

S'il vous plaît laissez-moi savoir que je suis nouveau ici.

Ma requête est la suivante:

Question originale: Créez une vue pour sélectionner l'ID d'employé, le nom de l'employé, la date d'embauche et le numéro de département.

Ma solution: 

CREATE VIEW SIMPVIEW AS
SELECT EMPNO, ENAME, HIREDATE,DEPTNO
FROM EMP;
7
Tan

Dans ce cas, vous n’avez probablement pas les privilèges nécessaires pour exécuter la commande CREATE VIEW dans votre schéma de base de données ... Connectez-vous au compte SYSDBA et exécutez la commande. 

GRANT CREATE VIEW TO <dbusername>;

Ici, <dbusername> doit être remplacé par le nom de l'utilisateur auquel vous souhaitez donner accès à la commande CREATE VIEW.

4
Arul Christo

Vous pouvez vérifier si votre utilisateur dispose des privilèges de création VIEW à l'aide de select * from session_privs.

Notez que pour pouvoir créer une vue, l'utilisateur qui la crée doit avoir reçu les privilèges SELECT sur tous les objets utilisés, ainsi que le privilège CREATE VIEW mentionné. Vous pouvez également vérifier cela en interrogeant USER_TAB_PRIVS auprès de l’utilisateur qui obtient l’erreur.

2
listik

lorsque je voulais exécuter la requête ci-dessus dans SQL Developer, je rencontrais des problèmes car je ne disposais pas de suffisamment de privilèges pour créer une vue ou un autre schéma d'objet Oracle tel qu'un déclencheur, des packages, des procédures, etc. : ORA-01031 Privilèges insuffisants ». donc, j'avais besoin de tous les privilèges pour pratiquer toutes ces requêtes et programmes. J'ai pris les mesures suivantes afin de résoudre mon problème:

  1. Comme je me suis connecté avec le nom d’utilisateur «scott», mon nom est «scott» et non «Dhruv». Mon ambition était de m’accorder tous les privilèges c’est-à-dire à l’utilisateur «scott». 
  2. Pour cela, je dois entrer dans la base de données en tant que DBA. Maintenant, la question est! Comment se connecter en tant que DBA. Pour cela, j'ai ouvert l'invite de commande et je me suis connecté à la base de données en tant que sysdba en suivant les étapes ci-dessous: 

a) Dans l’exécution de la fenêtre, j’ai tapé cmd pour ouvrir l’invite de commande. J'ai tapé: sqlplus/nolog, ce qui signifie que je me suis connecté sans fournir les informations d'identification requises.
b) Je me suis authentifié pour le système d'exploitation sous-jacent et entré dans la base de données en tant que DBA. Pour cela, j'ai tapé la commande Invite: connect/as sysdba; C. J'ai évalué l'identité de l'utilisateur DBA de ma base de données, le cas échéant. Pour cela j'ai tapé: select name from V $ database; d) Ici nous allons après cette commande. Je me suis finalement accordé (scott) à créer une vue dans SQL Developer en tapant la commande: grant create view to scott; E) Enfin, je me suis accordé tous les privilèges en tapant: grant all all privilèges to scott; 

Instantané d'invite de commande: je l'ai joint. 

Enfin, j'ai exécuté et créé ma vue: j'ai joint

0
Dhruv Das

Vous devez donner à l’utilisateur le privilège de choisir n’importe quel tableau. Ensuite, la vue sera compilée avec succès. Pas besoin d'accorder explicitement la sélection à l'utilisateur à tous les objets.

0
Kapila