2011-08-04 4 views
0

J'essaie d'empêcher les personnes de créer des types dans un schéma.Révoquer Créer un type à partir d'un schéma Oracle

colin @ colindev >create or replace type colin_obj as object(
    2 id varchar2(20) 
    3 ); 
    4/

Type created. 

Comment l'arrêter?

J'ai essayé

SYS @ colindev >revoke create any type from colin; 
revoke create any type from colin 
* 
ERROR at line 1: 
ORA-01952: system privileges not granted to 'colin' 

et la même chose dans le système au lieu de sys.

Des idées? Fonctionne uniquement si le privilège a déjà été grant ed.

Répondre

4

revoke Ce qui est susceptible ici est que colin a le privilège à travers un rôle qui a été assigné à l'utilisateur.

Vous ne voulez pas vraiment supprimer ce privilège du rôle car cela affectera tout utilisateur avec ce rôle; à la place, vous devrez attribuer à ces utilisateurs un rôle différent qui n'a pas create any type si vous ne voulez pas qu'ils le fassent (la façon la plus simple de le faire est de passer par Enterprise Manager).

+0

Sur place, merci! – colinjwebb

+0

Juste pour ajouter, il existe des privilèges distincts CREATE TYPE et CREATE ANY TYPE. Un utilisateur avec CREATE TYPE peut créer des types dans son propre schéma, alors que CREATE ANY TYPE est plus puissant et signifie que vous pouvez créer un type dans le schéma de quelqu'un d'autre. Seuls les administrateurs de base de données peuvent avoir besoin de ce dernier. –

Questions connexes