Разница между Пользователем и схемой в Oracle?

в чем разница между Пользователем и схемы в Oracle?

15 ответов


с Спросить Тома

вы должны рассматривать схему как учетную запись пользователя и коллекцию всех объектов в ней как схема для всех намерений и целей.

SCOTT-это схема, которая включает таблицы EMP, DEPT и BONUS с различными грантами и другая вещь.

SYS-это схема, которая включает тонны таблиц,представлений, грантов и т. д.

система-это схема.....

технически -- схема-это набор метаданные (словарь данных), используемые базой данных, обычно генерируется с помощью DDL. Схема определяет атрибуты базы данных, такие как таблицы, столбцы и свойства. Схема базы данных-это описание данных в база данных.


Я считаю, что проблема в том, что Oracle использует термин - схемы немного отличается от того, что это обычно означает.

  1. схема Oracle (как объясняется в ответе Nebakanezer): в основном набор всех таблиц и других объектов, принадлежащих учетной записи пользователя, поэтому примерно эквивалентен учетной записи пользователя
  2. схемы в целом: совокупность всех таблиц, хранимые процедуры и т. д. которые составляют базу данных для данной системы / приложения (как в "разработчики должны обсудить с данных о схеме для нашего нового приложения.")

схема в смысле 2. похож, но не совпадает схема в смысле 1. Е. Г. для приложения, которое использует несколько учетных записей БД, схему в смысле 2 может состоять из нескольких схем в Oracle :-).

плюс - схемы может также означать кучу других, довольно несвязанных вещей в других контекстах (например, в математике).

Oracle должен был просто использовать термин "userarea" или "accountobjects", вместо overloadin "схемы"...


с WikiAnswers:

  • схема является коллекцией объектов базы данных, включая логические структуры, такие как таблицы, представления, последовательности, хранимые процедуры, синонимы, индексы, кластеры и связи баз данных.
  • пользователь владеет схемой.
  • пользователь и схема имеют одинаковое имя.
  • команда CREATE USER создает пользователя. Она также автоматически создает схему для этого пользователя.
  • команда CREATE SCHEMA выполняет не создавайте "схему", как это подразумевается, она просто позволяет создавать несколько таблиц и представлений и выполнять несколько грантов в вашей собственной схеме в одной транзакции.
  • для всех намерений и целей вы можете рассмотреть пользователю схемой и схемой пользователя.

кроме того, пользователь может получить доступ к объектам в схемах, отличных от их собственных, если у них есть разрешение на это.


подумайте о пользователе, как вы обычно делаете (имя пользователя/пароль с доступом для входа и доступа к некоторым объектам в системе), и схема как версия базы данных домашнего каталога пользователя. Пользователь " foo "обычно создает вещи по схеме" foo", например, если пользователь" foo "создает или ссылается на таблицу" bar", то Oracle предположит, что пользователь означает " foo.бар."


этот ответ не определяет разницу между владельцем и схемой, но я думаю, что он добавляет к обсуждению.

в моем маленьком мире мышления:

я боролся с идеей, что я создаю N количество пользователей, где я хочу, чтобы каждый из этих пользователей "потреблял" (aka, use) одну схему.

Тим на oracle-base.com показывает, как это сделать (есть N количество пользователей, и каждый из этих пользователей будет "перенаправлен" на один схема.

у него есть второй подход "синоним" (не указан здесь). Я только цитирую версию CURRENT_SCHEMA (один из его подходов) здесь:

CURRENT_SCHEMA подход

этот метод использует CURRENT_SCHEMA атрибут сеанса автоматически укажите пользователям приложения правильную схему.

во-первых, мы создаем владельца схемы и пользователя приложения.

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;

обратите внимание, что приложение пользователя может подключаться, но не имеет квоты или привилегии табличного пространства для создания объектов.

затем мы создаем некоторые роли, чтобы разрешить доступ только для чтения и записи.

CREATE ROLE schema_rw_role;
CREATE ROLE schema_ro_role;

мы хотим предоставить нашему пользователю приложения доступ для чтения и записи в схему объекты, поэтому мы предоставляем соответствующую роль.

GRANT schema_rw_role TO app_user;

мы должны убедиться, что пользователь приложения имеет свою схему по умолчанию указывая на владельца схемы, мы создаем триггер AFTER LOGON для сделать это для нас.

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

теперь мы готовы создать объект в владельца схемы.

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;

обратите внимание, как привилегии предоставляются соответствующим ролям. Без эти объекты не будут видны пользователю приложения. Мы сейчас иметь действующего владельца схемы и пользователя приложения.

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

SQL>

этот метод идеально подходит, когда пользователь приложения-это просто альтернативная точка входа в основную схему, не требующая объектов свой собственный.


Это очень просто.

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

пользователю может быть предоставлен доступ к объектам схемы, принадлежащие разным пользователям.


Schema-это инкапсуляция БД.объекты об идее / домене intrest и принадлежат одному пользователю. Затем он будет использоваться другими пользователями / приложениями с подавленными ролями. Таким образом, пользователи не должны владеть схемой, но схема должна иметь владельца.


--USER и SCHEMA

оба слова user и schema взаимозаменяемы,поэтому большинство людей получают путаницу на этих словах ниже я объяснил разницу между ними

--User User-учетная запись для подключения базы данных (сервера). мы можем создать пользователя создать пользователя user_name выявленных пароль .

--Schema

фактически база данных Oracle содержит логическую и физическую структуру для обработки данных.Схема Также Логическая Структура для обработки данных в базе данных(Память). Его автоматически создается oracle при создании пользователем.Он содержит все объекты, созданные пользователем, связанным с этой схемой.Например,если я создал пользователя с именем santhosh, то oracle создает схему под названием santhosh, oracle хранит все объекты, созданные пользователем santhosh в схеме santhosh.

мы можем создать схему с помощью инструкции CREATE SCHEMA, но Oracle автоматически создаст пользователя для этой схемы.

мы можем бросить схема с помощью инструкции Drop SCHEMA schema SCHAMA_NAME RESTRICT, но она не может удалить объекты scehema, поэтому для удаления схемы она должна быть пустой.здесь слово restrict принудительно указывает эту схему без объектов.

Если мы попытаемся удалить пользователя, содержащего объекты в его схеме, мы должны указать CASCADE word, потому что oracle не позволяет удалять объекты, содержащие пользователя. Падение имя_пользователя каскад таким образом, oracle удаляет объекты в схеме, а затем автоматически удаляет пользователя, объекты ссылки на объекты этой схемы из других схем, таких как представления и частные синонимы, переходят в недопустимое состояние.

Я надеюсь, что теперь у вас есть разница между ними,если у вас есть какие-либо сомнения по этой теме,пожалуйста, не стесняйтесь спрашивать.

спасибо.


схема и пользователи базы данных одинаковы, но если схема имеет объекты базы данных, и они могут делать все, что угодно, но пользователь просто получает доступ к объектам, они не могут выполнять какие-либо операции DDL, пока пользователь схемы не даст вам соответствующие привилегии.


основываясь на моих небольших знаниях Oracle... пользователь и схема несколько похожи. Но есть и большая разница. Пользователь может быть вызван схемой, если" пользователь " владеет каким-либо объектом, в противном случае ... он останется только "пользователем". Как только пользователь владеет хотя бы одним объектом, то в силу всех ваших определений выше.... теперь пользователя можно назвать схемой.


пользователь: доступ к ресурсу базы данных. Как ключ от дома.

схеме: сбор информации об объектах базы данных. Как индекс в вашей книге, который содержит краткую информацию о главе.

подробности здесь


учетная запись пользователя подобна родственникам, которые держат ключ от вашего дома, но ничего не имеют, т. е. учетная запись пользователя не имеет объекта базы данных...нет словаря данных...

тогда как схема является инкапсуляцией объектов базы данных. Это как владелец дома, который владеет всем в вашем доме, и учетная запись пользователя сможет получить доступ к товарам дома только тогда, когда владелец, т. е. схема дает ему необходимые гранты.


для большинства людей, которые более знакомы с MariaDB или MySQL, это кажется немного запутанным, потому что в MariaDB или MySQL у них разные схемы (которые включают в себя разные таблицы, представление , блоки PLSQL и объекты DB и т. д.), И пользователи-это учетные записи, которые могут получить доступ к этой схеме. Поэтому ни один конкретный пользователь не может принадлежать к какой-либо конкретной схеме. Разрешение должно быть дано этой схеме, чтобы пользователь мог получить к ней доступ. Пользователи и схемы в базах данных, таких как MySQL и Версию MariaDB.

в схеме Oracle и пользователи почти рассматриваются как одно и то же. Для работы с этой схемой вам нужно иметь разрешение, в котором вы почувствуете, что имя схемы-это не что иное, как имя пользователя. Разрешения могут предоставляться по схемам для доступа к различным объектам базы данных из разных схем. В oracle можно сказать, что пользователь владеет схемой, потому что при создании пользователя для него создаются объекты БД, и наоборот.


Schema-это контейнер объектов. Он принадлежит пользователю.


Ну, я где-то читал, что если ваш пользователь базы данных имеет права DDL, то это схема, иначе это пользователь.