15 ответов:
вы должны рассматривать схему как учетную запись пользователя и коллекцию всех объектов в ней как схема для всех намерений и целей.
SCOTT-это схема, которая включает таблицы EMP, DEPT и BONUS с различными грантами, а также другая вещь.
SYS-это схема, которая включает в себя множество таблиц, представлений, грантов и т. д.
система-это схема.....
технически -- схема-это набор метаданные (словарь данных), используемые базой данных, обычно генерируется с помощью DDL. Схема определяет атрибуты базы данных, такие как таблицы, столбцы и свойства. Схема базы данных-это описание данных в база данных.
Я считаю, что проблема в том, что Oracle использует термин - схемы немного отличается от того, что он обычно означает.
- схема Oracle (как объяснено в ответе Nebakanezer): в основном набор всех таблиц и других объектов, принадлежащих учетной записи пользователя, поэтому примерно эквивалентен учетной записи пользователя
- схема в целом: набор всех таблиц, 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