Разница между пользователем и схемой в 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, тогда это схема, иначе это пользователь.