La différence entre un utilisateur et un schéma Oracle?

Quelle est la différence entre un utilisateur et un schéma Oracle?

279
demandé sur Peter Mortensen 2009-05-19 03:11:55

15 réponses

À Partir De Demander À Tom

vous devriez considérer un schéma pour être le compte d'utilisateur et la collection de tous les objets qu'il contient comme un schéma pour toutes fins utiles.

SCOTT est un schéma qui comprend les tables EMP, DEPT et BONUS avec diverses subventions, et d'autres trucs.

SYS est un schéma qui comprend des tonnes de tables, de vues, de subventions, etc etc etc.

Le système

est un schéma.....

techniquement -- un schéma est l'ensemble de métadonnées (dictionnaire de données) utilisé par la base de données, typiquement généré en utilisant DDL. Un schéma définit les attributs de la base de données, tels que tableaux, colonnes et propriétés. Un schéma de base de données est une description des données dans un la base de données.

117
répondu Mark Sherretta 2009-05-18 23:23:39

je crois que le problème est que Oracle utilise le terme schema légèrement différent de ce qu'il signifie généralement.

  1. schéma D'Oracle (comme expliqué dans la réponse de Nebakanezer): essentiellement l'ensemble de toutes les tables et autres objets appartenant à un compte d'utilisateur, donc à peu près équivalent à un compte d'utilisateur
  2. schéma en général: l'ensemble de tous les tableaux, sprocs etc. qui constituent la base de données d'un système / application donné (comme dans " les développeurs devraient discuter avec les DBA sur le schéma de notre nouvelle application.")

Schéma dans le sens 2. est similaire, mais pas le même schéma dans le sens 1. Par exemple: pour une application qui utilise plusieurs comptes DB, un schéma dans le sens 2 pourrait se composer de plusieurs schémas Oracle :-).

Plus schéma peut aussi signifier un tas d'autres choses, assez sans rapport dans d'autres contextes (par exemple en mathématiques).

Oracle aurait dû juste utiliser un terme comme "userarea" ou "accountobjects", au lieu de surcharger "schema"...

86
répondu sleske 2009-12-10 09:56:27

De WikiAnswers :

  • un schéma est une collection d'objets de base de données, y compris des structures logiques telles que des tables, des vues, des séquences, des procédures stockées, des synonymes, des index, des clusters et des liens de base de données.
  • Un utilisateur possède un schéma.
  • un utilisateur et Un schéma du même nom.
  • la commande CREATE USER crée un utilisateur. Il crée automatiquement un schéma pour cet utilisateur.
  • la commande CREATE SCHEMA ne crée pas un" schema " comme il l'implique, elle vous permet simplement de créer plusieurs tables et vues et d'effectuer plusieurs subventions dans votre propre schema dans une seule transaction.
  • Pour toutes fins utiles, vous pouvez considérer qu'un utilisateur d'un schéma et d'un schéma à un utilisateur.

de plus, un utilisateur peut accéder à des objets dans des schémas autres que le sien, s'il a la permission de le faire.

51
répondu harto 2009-05-18 23:17:40

pensez à un utilisateur comme vous le faites normalement (nom d'utilisateur/mot de passe avec accès pour se connecter et accéder à certains objets dans le système) et un schéma comme la version de base de données du répertoire d'accueil d'un utilisateur. L'utilisateur " foo "crée généralement des choses sous le schéma" foo "par exemple, si l'utilisateur" foo "crée ou se réfère à la table" bar "alors Oracle supposera que l'utilisateur signifie "foo".bar."

49
répondu Andru Luvisi 2009-05-18 23:23:59

cette réponse ne définit pas la différence entre un propriétaire et le schéma, mais je pense qu'elle ajoute à la discussion.

Dans mon petit monde de la pensée:

j'ai lutté avec l'idée que je créer N nombre d'utilisateurs où je veux que chacun de ces utilisateurs à "consommer" (aka, utilisation) un seul schéma.

Tim au oracle-base.com montre comment faire (N nombre d'utilisateurs et chacun de ces utilisateurs être "redirigé" vers un seul schéma.

il a une deuxième approche" synonyme " (non listée ici). Je ne cite ici que la version CURRENT_SCHEMA (une de ses approches):

CURRENT_SCHEMA "approche

cette méthode utilise l'attribut de session CURRENT_SCHEMA pour pointer les utilisateurs de l'application vers le schéma correct.

D'abord, nous créons le schéma propriétaire et un utilisateur de l'application.

CONN sys/password AS SYSDBA

-- Remove existing users and roles with the same names.
DROP USER schema_owner CASCADE;
DROP USER app_user CASCADE;
DROP ROLE schema_rw_role;
DROP ROLE schema_ro_role;

-- Schema owner.
CREATE USER schema_owner IDENTIFIED BY password
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users;

GRANT CONNECT, CREATE TABLE TO schema_owner;

-- Application user.
CREATE USER app_user IDENTIFIED BY password
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp;

GRANT CONNECT TO app_user;

Notez que l'utilisateur de l'application peut se connecter, mais n'a pas de quotas tablespace ou privilèges pour créer des objets.

ensuite, nous créons certains rôles pour permettre l'accès en lecture-écriture et en lecture seule.

CREATE ROLE schema_rw_role;
CREATE ROLE schema_ro_role;

nous voulons donner à l'utilisateur de notre application un accès en lecture-écriture au schéma nous accordons donc le rôle pertinent.

GRANT schema_rw_role TO app_user;

nous devons Nous assurer que l'utilisateur de l'application a son schéma par défaut pointant vers le propriétaire du schéma, donc nous créons un déclencheur après connexion pour le faire pour nous.

CREATE OR REPLACE TRIGGER app_user.after_logon_trg
AFTER LOGON ON app_user.SCHEMA
BEGIN
  DBMS_APPLICATION_INFO.set_module(USER, 'Initialized');
  EXECUTE IMMEDIATE 'ALTER SESSION SET current_schema=SCHEMA_OWNER';
END;
/

Maintenant, nous sommes prêts à créer un objet dans le schéma propriétaire.

CONN schema_owner/password

CREATE TABLE test_tab (
  id          NUMBER,
  description VARCHAR2(50),
  CONSTRAINT test_tab_pk PRIMARY KEY (id)
);

GRANT SELECT ON test_tab TO schema_ro_role;
GRANT SELECT, INSERT, UPDATE, DELETE ON test_tab TO schema_rw_role;

noter comment les privilèges sont accordés aux rôles pertinents. Sans ceci, les objets ne seraient pas visibles à l'utilisateur de l'application. Nous avons maintenant avoir un propriétaire de schéma fonctionnel et utilisateur de l'application.

SQL> CONN app_user/password
Connected.
SQL> DESC test_tab
 Name                                                  Null?    Type
 ----------------------------------------------------- -------- ------------------------------------
 ID                                                    NOT NULL NUMBER
 DESCRIPTION                                                    VARCHAR2(50)

SQL>

cette méthode est idéale lorsque l'utilisateur de l'application est simplement un point d'entrée alternatif au schéma principal, ne nécessitant aucun objet sien.

17
répondu granadaCoder 2014-09-19 17:22:15

c'est très simple.

If USER has OBJECTS
then call it SCHEMA
else
     call it USER
end if;

un utilisateur peut avoir accès à des objets schema appartenant à différents utilisateurs.

13
répondu shall 2016-08-14 07:29:07

schéma est une encapsulation de DB.objets sur une idée / domaine d'intrest, et appartenant à un utilisateur. Il sera alors partagé par d'autres utilisateurs/applications avec des rôles supprimés. De sorte que les utilisateurs n'ont pas besoin propre d'un schéma, mais un schéma doit avoir un propriétaire.

3
répondu Sudheer 2014-01-16 11:50:57

--USER and SCHEMA

les deux mots user et schema sont interchangeables,c'est pourquoi la plupart des gens obtiennent la confusion sur ce mot ci-dessous j'ai expliqué la différence entre eux

--de l'Utilisateur l'Utilisateur est un compte de connexion de base de données(Serveur). nous pouvons créer un utilisateur en utilisant CREATE USER_NAME identifié par mot de passe .

--Schéma

en fait Oracle base de données contiennent logique et physique structure à traiter données.Le schéma aussi Structure logique pour traiter les données dans la base de données(composante de mémoire). Son créé automatiquement par oracle lorsque l'Utilisateur a créé.Il contient tous les objets créés par l'utilisateur associé à ce schéma.Par exemple,si j'ai créé un utilisateur avec le nom santhosh alors oracle crée un schéma appelé santhosh, oracle stocke tous les objets créés par l'utilisateur santhosh dans le schéma santhosh.

nous pouvons créer un schéma en créant une déclaration de schéma, mais Oracle crée automatiquement un l'utilisateur de ce schéma.

nous pouvons supprimer le schéma en utilisant DROP SCHEMA SCHAMA_NAME RESTRICT statement mais il ne peut pas supprimer scehema contient des objets,donc pour supprimer schema il doit être vide.ici, le mot restrict spécifie avec force ce schéma sans objet.

si nous essayons de laisser tomber un utilisateur contain objects dans son schéma, nous devons spécifier le mot CASCADE car oracle ne vous permet pas de supprimer l'utilisateur contain objects. DROP USER user_name CASCADE donc, oracle supprime les objets dans le schéma et puis il laisse tomber l'utilisateur automatiquement, les objets référencés à ce schéma objets d'autres schémas comme des vues et des synonymes privés va à l'état invalide.

j'espère que maintenant vous avez obtenu la différence entre eux,si vous avez le moindre doute sur ce sujet,n'hésitez pas à demander.

Merci.

1
répondu SanthoshReddy 2016-11-07 08:21:22

les utilisateurs d'un schéma et d'une base de données sont les mêmes, mais si schema possède des objets de base de données et qu'ils peuvent faire n'importe quoi pour leur objet mais que l'utilisateur accède simplement aux objets, ils ne peuvent pas faire d'opérations DDL jusqu'à ce que l'utilisateur de schéma vous donne les privilèges appropriés.

0
répondu sabari 2011-11-22 07:16:32

basé sur ma connaissance de L'Oracle... un utilisateur et un schéma sont quelque peu similaires. Mais il y a aussi une différence majeure. Un utilisateur peut être appelé un schéma si "L'utilisateur" possède un objet, sinon ... il restera seulement un "UTILISATEUR". Une fois que l'utilisateur possède au moins un objet alors en vertu de toutes vos définitions ci-dessus.... L'utilisateur peut maintenant être appelé un schéma.

0
répondu JOHNNIE 2015-09-10 14:55:29

Utilisateur: l'Accès aux ressources de la base de données. Comme une clé pour entrer dans une maison.

Schéma: Collecte d'informations sur les objets de base de données. Comme Index dans votre livre qui contient les brèves informations sur le chapitre.

Regardez ici pour plus de détails

0
répondu VINOTH ENERGETIC 2016-06-03 17:49:46

un compte d'utilisateur est comme les parents qui détient une clé de votre maison, mais ne possède rien c.-à-d. un compte d'utilisateur ne possède aucun objet de base de données...pas de dictionnaire de données...

alors qu'un schéma est une encapsulation d'objets de base de données. Il est comme le propriétaire de la maison qui possède tout dans votre maison et un compte d'Utilisateur sera en mesure d'accéder aux marchandises à la maison que lorsque le propriétaire, c.-à-d. schema donne des subventions nécessaires à elle.

0
répondu Prashant Mishra 2016-08-14 07:31:00

pour la plupart des gens qui sont plus familiers avec MariaDB ou MySQL cela semble peu confus parce que dans MariaDB ou MySQL ils ont différents schémas (qui comprend différentes tables, vue , blocs PLSQL et objets DB etc) et les utilisateurs sont les comptes qui peuvent accéder à ces schémas. Par conséquent, aucun utilisateur peut appartenir à un schéma. La permission doit être accordée à ce Schéma, alors l'utilisateur peut accéder. Les utilisateurs et le schéma sont séparés dans des bases de données comme MySQL et MariaDB.

dans Oracle schema et les utilisateurs sont presque traités de la même façon. Pour travailler avec ce schéma, vous devez avoir la permission qui est là où vous sentirez que le nom du schéma n'est rien d'autre que le nom d'utilisateur. Les Permissions peuvent être données à travers les schémas pour accéder à différents objets de base de données à partir de différents schémas. Dans oracle, nous pouvons dire qu'un utilisateur possède un schéma car, lorsque vous créez un utilisateur, vous créez DB objets, et vice versa.

0
répondu pritampanhale 2018-04-26 09:31:03

Schéma est un conteneur d'objets. Il appartient à un utilisateur.

-1
répondu Answer 2016-08-14 07:28:04

Eh bien, j'ai lu quelque part que si votre utilisateur de base de données a les privilèges DDL alors c'est un schéma, ou c'est un utilisateur.

-1
répondu Sandeep 2016-08-14 07:29:41