2016-11-30 2 views
0

Je viens de créer un utilisateur appelé ugestion (Je suis connecté en tant que SYSTEM). Comment puis-je lui permettre de gérer ma table tblinstituciones? Je veux juste qu'il ait le contrôle sur cette table spécifique. Quelle est la bonne commande? Rien ne semble fonctionner, et je ne veux pas mettre "GRANT ALTER N'IMPORTE QUELLE TABLE à l'ugestion" parce que je veux juste qu'il soit capable de gérer seulement celui spécifique. Ai-je besoin de donner un privilège spécial à l'utilisateur avant d'exécuter cette commande? Et quelle commande devrais-je exécuter? J'ai déjà exécuté quelques commandes avant, par exemple "GRANT ALTER TABLE sur tblinstituciones TO ugestion;" mais cela n'a pas fonctionné. Je commence par oracle, sqlplus.Affectation d'une table à un utilisateur (oracle, sql plus)

+1

Vous ne pouvez pas. Tout d'abord, vous ne devez pas créer d'objets dans le schéma SYSTEM. Deuxièmement, vous pouvez donner aux utilisateurs la possibilité de faire du DML sur une table (insérer, mettre à jour, supprimer) mais vous ne pouvez pas donner aux utilisateurs la possibilité de DDL sur une seule table. De manière réaliste, si vous voulez faire cela, vous devez créer la table dans le schéma de cet utilisateur. Vous pourriez, je suppose, créer une procédure stockée que vous possédez qui fait DDL sur la table et accorder à l'utilisateur l'autorisation d'exécuter cette procédure stockée, mais c'est une approche beaucoup plus compliquée. –

+0

Merci, mais je ne sais pas comment le faire correctement. Merci quand même, je suis sûr que je comprendrai mieux cela dans le futur, et cela me semble très, très utile ... – Lorena

Répondre

0

Première:

Une fois connecté en tant que SYSTEM, exécutez la commande suivante:

DROP TABLE SYSTEM.TBLINSTITUCIONES; 

qui va se débarrasser de la table que vous avez créé dans le schéma SYSTEM. Comme d'autres l'ont mentionné, vous ne devez pas créer de tables ou d'autres objets dans les schémas SYSTEM ou SYS.

Suivant:

Déconnectez-vous du compte SYSTEM.

suivant:

Connectez-vous en tant qu'utilisateur de UGESTION.

suivant:

CREATE TABLE UGESTION.TBLINSTITUCIONES 
    (put all your field definitions here); 

remplacement des mots « mettre toutes les définitions de champ ici » avec les définitions de ce que les champs dont vous avez besoin pour créer dans ce tableau. La déclaration ci-dessus ne fonctionnera pas jusqu'à ce que vous le fassiez.

Bonne chance.

+0

Merci beaucoup. J'ai déjà créé la table! Je vais avoir en compte de ne plus créer de tables en tant que SYSTEM à partir de maintenant. – Lorena

0

Déposez la table.

Recréer, mais dans votre commande CREATE TABLE, pré-fixer le nom de la table avec votre nom d'utilisateur ... à la

Create Table Scott.Stackoverflow (
A Integer, 
B Varchar2(20), 
C Clob); 

Où SCOTT serait le schéma/utilisateur que vous souhaitez la table d'appartenir aussi, et bien sûr substituer le DDL réel avec votre original.

Vous pouvez également faire ...

CREATE TABLE SCOTT.STACKOVERFLOW AS SELECT * FROM ORIGINAL_TABLE; 

CTAS ne saisir des choses comme commentaires colonnes, contraintes, index, etc.

Maintenant, ils PROPRE la table. Ils peuvent faire tout ce qu'ils veulent avec. C'est le leur. Ils peuvent le laisser tomber. Ils peuvent le modifier. Ils peuvent insérer/mettre à jour/supprimer/tronquer. Ils peuvent accorder des privs aux autres.

Vous ne devriez jamais créer d'objets dans le schéma SYSTEM (OR SYS!) Pour ce que ça vaut.

+0

Quand j'exécute ta commande, il me dit qu'il me manque une parenthèse gauche. Où devrais-je mettre une parenthèse? Si je le tape comme ceci "CREATE TABLE (username.tablename);" ça me donne aussi une erreur. Merci pour votre réponse si! – Lorena

+0

non, je vais modifier la réponse – thatjeffsmith

0

L'utilisateur du système ne doit pas être utilisé pour des objets utilisateur.S'il vous plaît faire:

create table ugestion.tblinstituciones as select * from system.tblinstituciones; 
drop table system.tblinstituciones; 

De cette façon, à la fois la définition de la table et les données seront déplacés (en fait, vous créer une nouvelle table avec des données dans le nouveau schéma) de système de schéma utilisateur.