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

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

Ответ 1

Из Спросить Tom

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

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

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

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

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

Ответ 2

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

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

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

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

Oracle должен просто использовать термин, например "userarea" или "accountobjects", вместо перегрузки в "схеме"...

Ответ 3

Из WikiAnswers:

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

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

Ответ 4

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

Ответ 5

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

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

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

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

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

CURRENT_SCHEMA Подход

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

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

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>

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

Ответ 6

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

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

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

Ответ 7

Схема - это инкапсуляция DB.objects о идее/домене intrest и принадлежит пользователю ONE. Затем он будет использоваться другими пользователями/приложениями с подавленными ролями. Поэтому пользователям не нужно иметь схему, но схема должна иметь владельца.

Ответ 8

- USER и SCHEMA

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

- Пользовательский пользователь - это учетная запись для подключения базы данных (Сервер). мы можем создать пользователя, используя пароль CREATE USER user_name IDENTIFIED BY.

- Схема

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

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

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

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

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

Спасибо.

Ответ 9

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

Ответ 10

Основываясь на моем небольшом знании Oracle... ПОЛЬЗОВАТЕЛЬ и SCHEMA несколько похожи. Но есть и большая разница. ПОЛЬЗОВАТЕЛЬ можно назвать SCHEMA, если "USER" владеет каким-либо объектом, иначе... он останется только "ПОЛЬЗОВАТЕЛЕМ". Когда USER владеет хотя бы одним объектом, то в силу всех ваших определений выше... USER теперь можно назвать SCHEMA.

Ответ 11

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

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

Посмотрите подробнее

Ответ 12

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

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

Ответ 13

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

Ответ 14

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