Różnica między Użytkownikiem a schematem w Oracle?

Jaka jest różnica między Użytkownikiem a schematem w Oracle?

 279
Author: Peter Mortensen, 2009-05-19

15 answers

From Zapytaj Toma

Powinieneś rozważyć schemat jako konto użytkownika i zbiór wszystkich obiektów w nim zawartych jako schemat dla wszystkich intencji i celów.

SCOTT jest schematem, który obejmuje EMP, DEPT i BONUS tabel z różnych grantów, i inne rzeczy.

SYS jest schematem zawierającym mnóstwo tabel, widoków, grantów, itp itd.

SYSTEM jest schematem.....

Technicznie -- schemat jest zbiorem metadanych (słownika danych) używanych przez baza danych, zazwyczaj generowane przy użyciu DDL. Schemat definiuje atrybuty bazy danych, takie jak tabele, kolumny i właściwości. Schemat bazy danych jest opisem danych w baza danych.

 117
Author: Mark Sherretta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-18 23:23:39

Uważam, że problem polega na tym, że Oracle używa terminu Schemat nieco inaczej niż to, co ogólnie oznacza.

    Oracle nie posiada konta użytkownika, ale jest to zbiór tabel i innych obiektów należących do konta użytkownika, a więc mniej więcej równoważne z kontem użytkownika.]}
  1. schemat ogólnie: zbiór wszystkich tabel, kół zębatych itp. które tworzą bazę danych dla danego systemu / aplikacji (jak w "programiści powinni dyskutować z DBAs o schemat naszej nowej aplikacji.")

Schemat w sensie 2. jest podobny, ale nie taki sam jak schemat w sensie 1. Np. dla aplikacji, która używa kilku kont DB, schemat w sensie 2 może składać się z kilku schematów Oracle :-).

Plus Schemat może również oznaczać wiele innych, dość niepowiązanych ze sobą rzeczy w innych kontekstach (np. w matematyce).

Oracle powinien po prostu użyć terminu "useraea" lub "accountobjects", zamiast przeciążenia"schematu"...

 86
Author: sleske,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-10 09:56:27

From WikiAnswers :

  • schemat jest zbiorem obiektów bazy danych, w tym struktur logicznych, takich jak tabele, widoki, sekwencje, procedury przechowywane, synonimy, indeksy, klastry i łącza do bazy danych.
  • użytkownik jest właścicielem schematu.
  • użytkownik i schemat mają tę samą nazwę.
  • polecenie Utwórz użytkownika tworzy użytkownika. To również automatycznie tworzy schemat dla tego użytkownika.
  • polecenie CREATE SCHEMA nie tworzy "schematu" jak to sugeruje, tylko umożliwia tworzenie wielu tabel i widoków oraz wykonywanie wielu grantów we własnym schemacie w ramach jednej transakcji.
  • dla wszystkich intencji i celów można uznać, że użytkownik jest schematem, a schemat jest użytkownikiem.

Ponadto użytkownik może uzyskać dostęp do obiektów w schematach innych niż własne, jeśli ma do tego uprawnienia.

 51
Author: harto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-18 23:17:40

Pomyśl o użytkowniku jak zwykle (nazwa użytkownika/hasło z dostępem do logowania i dostępu do niektórych obiektów w systemie) i schemacie jako wersji bazy danych katalogu domowego użytkownika. Użytkownik " foo "zazwyczaj tworzy rzeczy pod schematem" foo "na przykład, jeśli użytkownik" foo "tworzy lub odnosi się do Tabeli" bar", Oracle założy, że użytkownik oznacza "foo".bar".

 49
Author: Andru Luvisi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-18 23:23:59

Ta odpowiedź nie definiuje różnicy między właścicielem a schematem, ale myślę, że dodaje do dyskusji.

W moim małym świecie myślenia:

Zmagałem się z pomysłem, że tworzę N liczbę użytkowników, gdzie chcę, aby każdy z tych użytkowników "konsumował" (aka, używać) pojedynczy schemat.

Tim at oracle-base.com pokazuje jak to zrobić (ma N liczbę użytkowników i każdy z tych użytkowników zostanie "przekierowany" do jednego schematu.

On ma drugi podejście " synonim "(nie wymienione tutaj). Cytuję tylko wersję CURRENT_SCHEMA (jedno z jego podejść) tutaj:

CURRENT_SCHEMA podejście

Ta metoda wykorzystuje atrybut sesji CURRENT_SCHEMA do automatycznego wskaż użytkownikom aplikacji prawidłowy schemat.

Najpierw tworzymy właściciela schematu i użytkownika aplikacji.

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;

Zauważ, że użytkownik aplikacji może się połączyć, ale nie ma żadnych TABLESPACE kwot lub uprawnień do tworzenia obiektów.

Następnie tworzymy kilka ról, aby umożliwić dostęp tylko do odczytu i zapisu.

CREATE ROLE schema_rw_role;
CREATE ROLE schema_ro_role;

Chcemy dać naszemu użytkownikowi aplikacji dostęp do odczytu i zapisu do schematu obiektów, więc przyznajemy odpowiednią rolę.

GRANT schema_rw_role TO app_user;

Musimy się upewnić, że użytkownik aplikacji ma swój domyślny schemat wskazując na właściciela schematu, więc tworzymy WYZWALACZ po zalogowaniu do zrób to dla nas.

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

Teraz jesteśmy gotowi do utworzenia obiektu w właściciel schematu.

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;

Zwróć uwagę, jak przywileje są przyznawane odpowiednim rolom. Bez w ten sposób obiekty nie będą widoczne dla użytkownika aplikacji. My teraz mieć funkcjonującego właściciela schematu i użytkownika aplikacji.

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

SQL>

Ta metoda jest idealna, gdy użytkownik aplikacji jest po prostu alternatywny punkt wejścia do głównego schematu, nie wymagający obiektów własne.

 17
Author: granadaCoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-19 17:22:15

To bardzo proste.

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

Użytkownik może uzyskać dostęp do obiektów schematu należących do różnych użytkowników.

 13
Author: shall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-14 07:29:07

Schemat jest enkapsulacją DB.obiekty o idei / domenie intrest, A własnością jednego użytkownika. Następnie będzie współdzielony przez innych użytkowników / aplikacje z ukrytymi rolami. Tak więc użytkownicy nie muszą posiadać schematu, ale schemat musi mieć właściciela.

 3
Author: Sudheer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-16 11:50:57

--USER and SCHEMA

Oba słowa user i schema są wymienne, dlatego większość ludzi ma zamieszanie na temat tych słów poniżej wyjaśniłem różnicę między nimi

-- Użytkownik Użytkownik jest kontem do połączenia bazy danych (serwera). możemy utworzyć użytkownika za pomocą CREATE user user_name identyfikowanego hasłem .

--Schemat

W rzeczywistości baza danych Oracle zawiera logiczną i fizyczną strukturę do przetwarzania danych.Schemat również struktura logiczna do przetwarzania danych w Baza Danych (Komponent Pamięci). Jest tworzony automatycznie przez oracle, gdy użytkownik created.It zawiera wszystkie obiekty utworzone przez użytkownika związane z tym schematem.Na przykład jeśli utworzyłem użytkownika o nazwie santhosh to oracle tworzy schemat o nazwie santhosh, oracle przechowuje wszystkie obiekty utworzone przez użytkownika santhosh w schemacie santhosh.

Możemy utworzyć schemat za pomocą instrukcji CREATE SCHEMA, ale Oracle automatycznie tworzy użytkownika dla tego schematu.

Możemy upuścić schemat używając DROP SCHEMA Instrukcja SCHAMA_NAME RESTRICT, ale nie może usunąć scehema zawiera obiekty, więc aby upuścić schemat musi być pusty.w tym miejscu słowo "restrict" określa schemat bez obiektów.

Jeśli spróbujemy wrzucić obiekt user contain w jego schemacie musimy podać słowo kaskadowe, ponieważ oracle nie pozwala na usunięcie obiektu user contain. DROP USER user_name CASCADE tak więc oracle usuwa obiekty w schemacie, a następnie automatycznie upuszcza użytkownika, Obiekty odwołane do tego schematu obiekty z inne schematy, takie jak widoki i prywatne synonimy, przechodzą do stanu invalid.

Mam nadzieję, że teraz masz różnicę między nimi, jeśli masz jakiekolwiek wątpliwości w tym temacie, proszę pytać.

Dziękuję.

 1
Author: SanthoshReddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-07 08:21:22

A schema and database users are same but if schema has owned database objects and they can do anything their object but user just access the objects, They can DO any DDL operations until schema user give you the proper privileges.

 0
Author: sabari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-22 07:16:32

Bazując na mojej małej wiedzy o wyroczni... użytkownik i schemat są nieco podobne. Ale jest też duża różnica. Użytkownik może być nazywany schematem, jeśli" użytkownik " jest właścicielem dowolnego obiektu, w przeciwnym razie ... pozostanie tylko "użytkownikiem". Gdy użytkownik posiada co najmniej jeden obiekt, to zgodnie ze wszystkimi powyższymi definicjami.... użytkownik może być teraz nazywany schematem.

 0
Author: JOHNNIE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-10 14:55:29

Użytkownik: dostęp do zasobów bazy danych. Jak klucz do wejścia do domu.

Schemat: zbiór informacji o obiektach bazy danych. Jak indeks w książce, która zawiera krótkie informacje o rozdziale.

Zobacz szczegóły

 0
Author: VINOTH ENERGETIC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-03 17:49:46

Konto użytkownika jest jak rodzina, która posiada klucz do Twojego domu, ale nie posiada niczego, tzn. konto użytkownika nie posiada żadnej bazy danych object...no słownik danych...

Natomiast schemat jest enkapsulacją obiektów bazy danych. To tak jak właściciel domu, który jest właścicielem wszystkiego w Twoim domu i konto użytkownika będzie mogło uzyskać dostęp do towarów w domu tylko wtedy, gdy właściciel tj. schemat daje potrzebne dotacje do niego.

 0
Author: Prashant Mishra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-14 07:31:00

Dla większości ludzi, którzy są bardziej zaznajomieni z MariaDB lub MySQL wydaje się to trochę mylące, ponieważ w MariaDB lub MySQL mają różne schematy (które zawierają różne tabele, widok, bloki PLSQL i Obiekty DB itp.) i użytkownicy są konta, które mogą uzyskać dostęp do tych schematów. W związku z tym żaden konkretny użytkownik nie może należeć do żadnego konkretnego schematu. Uprawnienie musi być podane do tego schematu wtedy użytkownik może uzyskać do niego dostęp. Użytkowników i schemat jest rozdzielony w bazach danych takich jak MySQL i MariaDB.

W Oracle schema i użytkownicy są prawie traktowani tak samo. Aby pracować z tym schemacie trzeba mieć uprawnienia, które jest gdzie można poczuć, że nazwa schematu jest nic, ale nazwa użytkownika. Uprawnienia mogą być nadawane na różnych schematach, aby uzyskać dostęp do różnych obiektów bazy danych z różnych schematów. W oracle możemy powiedzieć, że użytkownik posiada schemat, ponieważ podczas tworzenia użytkownika tworzy się dla niego obiekty DB i odwrotnie.

 0
Author: pritampanhale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-26 09:31:03

Schemat jest kontenerem obiektów. Jest własnością użytkownika.

 -1
Author: Answer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-14 07:28:04

Cóż, czytałem gdzieś, że jeśli użytkownik bazy danych ma uprawnienia DDL to jest to schemat, inaczej jest to użytkownik.

 -1
Author: Sandeep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-14 07:29:41