ORACLE - création d'une Procédure acquis, mais ne peut pas créer de procédure
Il y a un utilisateur dans la base de données à laquelle CRÉER la PROCÉDURE privelege est accordée. Mais lorsque l'utilisateur tente de créer une procédure simple, l'erreur suivante est générée: ORA-01031: privilèges insuffisants
01031. 00000 - "privilèges insuffisants"
*Cause: Une tentative a été faite pour modifier le nom d'utilisateur ou mot de passe
sans le privilège approprié. Cette erreur se produit également si
essayez d'installer une base de données sans la nécessité de l'exploitation
les privilèges du système.
voici le DDL pour la procédure:
CREATE OR REPLACE PROCEDURE TOTALBASE.ROUNDUP
(CUR OUT SYS_REFCURSOR )
AS
BEGIN
OPEN CUR FOR
SELECT * FROM TOTALBASE.ABONENT;
END ROUNDUP;
Quoi d'autre devrais-je envisager de faire pour faire ce travail? Je suis penser que, même si la privelege est accordé à toute personne qui n'est pas dans la section des administrateurs ou ORA_DBA groupe ne peut pas créer une procédure. mais je ne suis pas sûr.
- Êtes-vous dans le
totalbase
schéma lorsque vous essayez de créer cette procédure? Il semble que vous essayez d'ajouter un objet àtotalbase
à partir d'un autre utilisateur... - Non, je suis dans un schéma différent. Mais j'ai accordé à l'utilisateur de CRÉER de la PROCÉDURE privelege. Ce n'est pas assez pour cela?
- Fait que les utilisateurs ont également de SÉLECTIONNER les autorisations sur le abonent table?
- il n'.
Vous devez vous connecter pour publier un commentaire.
Pour créer une procédure dans un schéma autre que votre propre, vous aurez besoin de "CRÉER une PROCÉDURE de" privilège de.
En règle générale, ce privilège ne devrait pas être accordée à la légère, car il pourrait facilement être utilisé pour contourner la sécurité de la base.
Espère que ça aide.
Après quelques commentaires ci-dessous, je suis en train d'essayer de nouveau.
Ne pas créer une procédure dans un autre schéma; seulement permettre à chaque utilisateur de créer des objets dans leur propre schéma.
Cette façon, vous avez moins d'une raison pour
GRANT
l'accès à d'autres objets de schéma. LeTOTALBASE
utilisateur peut qu'accorder leEXECUTE
privilège sur la procédure de l'utilisateur courant.L'utilisateur actuel, qui a besoin de quelques données à partir d'un
TOTALUSER
table, n'a pas besoin de créer ou d'accéder à d'autres objets quand il a leEXECUTE
privilège sur la fonction ou de la procédure.À la recherche d'un autre angle, de cette manière, il est également plus facile à maintenir:
TOTALUSER
fournit une sorte d'API dans la façon dont il expose les données à l'utilisateur actuel, en masquant les détails de mise en œuvre qui peut changer dans le futur, être transparent pour l'utilisateur actuel.