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



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

521   15  

15 ответов:

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

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

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

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

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

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

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

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

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

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

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

с WikiAnswers:

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

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

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

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

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

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

Тим Ат 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;

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

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;

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

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

--пользователь и схема

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

--User пользователь-это учетная запись для подключения базы данных (сервера). мы можем создать пользователя с помощью CREATE USER имя_пользователя, идентифицированного паролем .

--Schema

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

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

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

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

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

спасибо.

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

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

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

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.