ver usuarios usuario sobre rol privilegios permisos otorgar listar grants esquema dar create consultar asignar oracle

sobre - otorgar privilegios a usuarios oracle



¿Diferencia entre un usuario y un esquema en Oracle? (15)

¿Cuál es la diferencia entre un usuario y un esquema en Oracle?


--USUARIO y ESQUEMA

El usuario y el esquema de ambas palabras son intercambiables, es por eso que la mayoría de las personas se confunden con estas palabras a continuación, les expliqué la diferencia entre ellas.

--Usuario Usuario es una cuenta para conectar la base de datos (Servidor). podemos crear usuarios utilizando CREAR USUARIO nombre_usuario IDENTIFICADO POR contraseña.

--Esquema

En realidad, la base de datos Oracle contiene una estructura lógica y física para procesar los datos. El esquema también es una estructura lógica para procesar los datos en la base de datos (componente de memoria). Se crea automáticamente por oracle cuando se crea el usuario. Contiene todos los objetos creados por el usuario asociado a ese esquema. Por ejemplo, si he creado un usuario con el nombre santhosh, Oracle crea un esquema llamado santhosh, oracle almacena todos los objetos creados por el usuario santhosh en santhosh esquema.

Podemos crear un esquema mediante la declaración CREATE SCHEMA, pero Oracle crea automáticamente un usuario para ese esquema.

Podemos eliminar el esquema utilizando la instrucción RESTRICT schama_name DROP SCHEMA, pero no puede eliminar los objetos scehema, por lo que para eliminar el esquema debe estar vacío. La palabra restringir especifica el esquema sin objetos.

Si intentamos eliminar un objeto de contenido de usuario en su esquema, debemos especificar la palabra CASCADE porque oracle no le permite eliminar objetos de contenido de usuario. DROP USUARIO user_name CASCADE para que Oracle elimine los objetos en el esquema y luego elimine al usuario automáticamente. Los objetos referidos a este esquema de otros esquemas como vistas y sinónimos privados pasan a un estado no válido.

Espero que ahora tengas la diferencia entre ellos, si tienes alguna duda sobre este tema, no dudes en preguntar.

Gracias.


Basado en mi poco conocimiento de Oracle ... un USUARIO y un SCHEMA son algo similares. Pero también hay una gran diferencia. Un USUARIO puede llamarse ESQUEMA si el "USUARIO" posee algún objeto, de lo contrario ... solo seguirá siendo un "USUARIO". Una vez que el USUARIO posee al menos un objeto, en virtud de todas las definiciones anteriores ... el USUARIO ahora se puede llamar un ESQUEMA.


Bueno, leí en alguna parte que si su usuario de base de datos tiene los privilegios de DDL, entonces es un esquema, de lo contrario es un usuario.


Creo que el problema es que Oracle utiliza el término esquema de manera ligeramente diferente de lo que generalmente significa.

  1. Esquema de Oracle (como se explica en la respuesta de Nebakanezer): básicamente el conjunto de todas las tablas y otros objetos que son propiedad de una cuenta de usuario, tan aproximadamente equivalente a una cuenta de usuario
  2. Esquema en general: el conjunto de todas las tablas, sprocs, etc. que forman la base de datos para un sistema / aplicación dado (como en "Los desarrolladores deben discutir con los DBA sobre el esquema para nuestra nueva aplicación").

El esquema en el sentido 2. es similar, pero no es lo mismo que el esquema en el sentido 1. Por ejemplo, para una aplicación que usa varias cuentas de base de datos, un esquema en el sentido 2 puede consistir en varios esquemas de Oracle :-).

Además, el esquema también puede significar un montón de otras cosas, bastante poco relacionadas en otros contextos (por ejemplo, en matemáticas).

Oracle debería haber utilizado un término como "área de usuario" o "cuenta-objetos", en lugar de sobrecargar "esquema" ...


De Ask Tom

Debe considerar que un esquema es la cuenta de usuario y la colección de todos los objetos que contiene como esquema para todos los propósitos y propósitos.

SCOTT es un esquema que incluye las tablas EMP, DEPT y BONUS con varias concesiones y otras cosas.

SYS es un esquema que incluye toneladas de tablas, vistas, concesiones, etc. etc., etc.

El SISTEMA es un esquema .....

Técnicamente: un esquema es el conjunto de metadatos (diccionario de datos) utilizado por la base de datos, que generalmente se genera mediante DDL. Un esquema define atributos de la base de datos, como tablas, columnas y propiedades. Un esquema de base de datos es una descripción de los datos en una base de datos.


De WikiAnswers :

  • Un esquema es una colección de objetos de base de datos, que incluye estructuras lógicas como tablas, vistas, secuencias, procedimientos almacenados, sinónimos, índices, clústeres y enlaces de bases de datos.
  • Un usuario posee un esquema.
  • Un usuario y un esquema tienen el mismo nombre.
  • El comando CREAR USUARIO crea un usuario. También crea automáticamente un esquema para ese usuario.
  • El comando CREATE SCHEMA no crea un "esquema" como implica, solo le permite crear múltiples tablas y vistas y realizar concesiones múltiples en su propio esquema en una sola transacción.
  • A todos los efectos, puede considerar a un usuario como un esquema y un esquema como un usuario.

Además, un usuario puede acceder a objetos en esquemas que no sean los suyos, si tienen permiso para hacerlo.


El esquema es un contenedor de objetos. Es propiedad de un usuario.


El esquema es una encapsulación de DB.objects sobre una idea / dominio de intrest, y es propiedad de UN usuario. Luego será compartido por otros usuarios / aplicaciones con roles suprimidos. Por lo tanto, los usuarios no necesitan poseer un esquema, sino que un esquema debe tener un propietario.


Es muy sencillo.

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

Un usuario puede tener acceso a los objetos de esquema que son propiedad de diferentes Usuarios.


Esta respuesta no define la diferencia entre un propietario y un esquema, pero creo que se suma a la discusión.

En mi pequeño mundo de pensamiento:

Me ha costado la idea de crear un número N de usuarios donde quiero que cada uno de estos usuarios "consuma" (es decir, use) un solo esquema.

Tim en oracle-base.com muestra cómo hacer esto (tenga un número N de usuarios y cada uno de estos usuarios será "redirigido" a un solo esquema.

Tiene un segundo enfoque de "sinónimo" (no se enumera aquí). Solo estoy citando la versión de CURRENT_SCHEMA (uno de sus enfoques) aquí:

CURRENT_SCHEMA Enfoque

Este método utiliza el atributo de sesión CURRENT_SCHEMA para señalar automáticamente a los usuarios de la aplicación al esquema correcto.

Primero, creamos el propietario del esquema y un usuario de la aplicación.

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;

Observe que el usuario de la aplicación puede conectarse, pero no tiene cuotas ni privilegios de espacio de tablas para crear objetos.

A continuación, creamos algunos roles para permitir el acceso de lectura-escritura y solo lectura.

CREATE ROLE schema_rw_role; CREATE ROLE schema_ro_role;

Queremos dar a nuestro usuario de la aplicación acceso de lectura y escritura a los objetos del esquema, por lo que otorgamos el rol relevante.

GRANT schema_rw_role TO app_user;

Debemos asegurarnos de que el usuario de la aplicación tenga su esquema predeterminado que apunte al propietario del esquema, por lo que creamos un desencadenador DESPUÉS DE INICIAR SESIÓN para hacer esto por nosotros.

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; /

Ahora estamos listos para crear un objeto en el propietario del esquema.

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;

Observe cómo se otorgan los privilegios a los roles relevantes. Sin esto, los objetos no serían visibles para el usuario de la aplicación. Ahora tenemos un propietario de esquema funcional y un usuario de aplicación.

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

Este método es ideal cuando el usuario de la aplicación es simplemente un punto de entrada alternativo al esquema principal, que no requiere objetos propios.


Los usuarios de esquema y de base de datos son iguales, pero si el esquema posee objetos de base de datos y pueden hacer lo que sea, pero el usuario solo tiene acceso a los objetos, no pueden HACER ninguna operación DDL hasta que el usuario del esquema le otorgue los privilegios adecuados.


Para la mayoría de las personas que están más familiarizadas con MariaDB o MySQL, esto parece poco confuso porque en MariaDB o MySQL tienen diferentes esquemas (que incluyen diferentes tablas, vistas, bloques PLSQL y objetos DB, etc.) y los USUARIOS son las cuentas que pueden acceder a ellos. esquema. Por lo tanto, ningún usuario específico puede pertenecer a ningún esquema particular. El permiso debe ser otorgado a ese esquema, entonces el usuario puede acceder a él. Los usuarios y el esquema están separados en bases de datos como MySQL y MariaDB.

En el esquema de Oracle y los usuarios son casi tratados como iguales. Para trabajar con ese esquema necesita tener el permiso que es donde sentirá que el nombre del esquema no es más que el nombre de usuario. Se pueden otorgar permisos a través de esquemas para acceder a diferentes objetos de la base de datos desde diferentes esquemas. En Oracle podemos decir que un usuario posee un esquema porque cuando creas un usuario creas objetos DB para él y viceversa.


Piense en un usuario como lo hace normalmente (nombre de usuario / contraseña con acceso para iniciar sesión y acceder a algunos objetos en el sistema) y un esquema como la versión de la base de datos del directorio principal de un usuario. El usuario "foo" generalmente crea cosas bajo el esquema "foo", por ejemplo, si el usuario "foo" crea o hace referencia a la tabla "barra", Oracle asumirá que el usuario significa "foo.bar".


Una cuenta de usuario es como los familiares que tienen una clave para su casa, pero no posee nada, es decir, una cuenta de usuario no posee ningún objeto de base de datos ... no hay diccionario de datos ...

Mientras que un esquema es una encapsulación de objetos de base de datos. Es como el propietario de la casa que posee todo en su casa y una cuenta de usuario podrá acceder a los bienes en la casa solo cuando el propietario, es decir, el esquema le otorga las subvenciones necesarias.


Usuario: Acceso al recurso de la base de datos. Como una llave para entrar en una casa.

Esquema: Recopilación de información sobre objetos de base de datos. Me gusta Index en tu libro que contiene información breve sobre el capítulo.

Mira aquí para detalles