Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak stworzyć nowy schemat/nowego użytkownika w Oracle Database 11g?

Ogólnie rzecz biorąc, schemat w Oracle jest taki sam jak użytkownik. Oracle Database automatycznie tworzy schemat podczas tworzenia użytkownika. Plik z rozszerzeniem DDL jest plikiem języka definicji danych SQL.

Tworzenie nowego użytkownika (przy użyciu SQL Plus)

Podstawowe polecenia SQL Plus:

  - connect: connects to a database
  - disconnect: logs off but does not exit
  - exit: exists

Otwórz SQL Plus i zaloguj:

/ as sysdba

Sysdba jest rolą i jest jak „root” w systemie unix lub „administrator” w systemie Windows. Widzi wszystko, może wszystko. Wewnętrznie, jeśli łączysz się jako sysdba, nazwa schematu będzie wyglądać na SYS.

Utwórz użytkownika:

SQL> create user johny identified by 1234;

Wyświetl wszystkich użytkowników i sprawdź, czy użytkownik johny tam jest:

SQL> select username from dba_users;

Jeśli spróbujesz teraz zalogować się jako johny, otrzymasz błąd:

ERROR:
ORA-01045: user JOHNY lacks CREATE SESSION privilege; logon denied

Użytkownik, aby się zalogować, musi przynajmniej utworzyć uprawnienia sesji, więc musimy przyznać użytkownikowi te uprawnienia:

SQL> grant create session to johny;

Teraz możesz się połączyć jako użytkownik johny:

username: johny
password: 1234

Aby pozbyć się użytkownika, możesz go upuścić:

SQL> drop user johny;

To był podstawowy przykład pokazujący, jak stworzyć użytkownika. To może być bardziej złożone. Powyżej stworzyliśmy użytkownika, którego obiekty są przechowywane w domyślnej przestrzeni tabel bazy danych. Aby zachować porządek w bazie danych, powinniśmy umieścić obiekty użytkowników w jego własnej przestrzeni (przestrzeń tabel to przydział przestrzeni w bazie danych, która może zawierać obiekty schematu).

Pokaż już utworzone przestrzenie tabel:

SQL> select tablespace_name from dba_tablespaces;

Utwórz przestrzeń tabel:

SQL> create tablespace johny_tabspace
  2  datafile 'johny_tabspace.dat'
  3  size 10M autoextend on;

Utwórz tymczasowy obszar tabel (tymczasowy obszar tabel to alokacja miejsca w bazie danych, która może zawierać dane przejściowe, które utrzymują się tylko przez czas trwania sesji. Tych danych przejściowych nie można odzyskać po awarii procesu lub instancji.):

SQL> create temporary tablespace johny_tabspace_temp
  2  tempfile 'johny_tabspace_temp.dat'
  3  size 5M autoextend on;

Utwórz użytkownika:

SQL> create user johny
  2  identified by 1234
  3  default tablespace johny_tabspace
  4  temporary tablespace johny_tabspace_temp;

Przyznaj pewne uprawnienia:

SQL> grant create session to johny;
SQL> grant create table to johny;
SQL> grant unlimited tablespace to johny;

Zaloguj się jako johny i ​​sprawdź, jakie ma uprawnienia:

SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE

Z uprawnieniem do tworzenia tabel użytkownik może tworzyć tabele:

SQL> create table johny_table
  2  (
  3     id int not null,
  4     text varchar2(1000),
  5     primary key (id)
  6  );

Wstaw dane:

SQL> insert into johny_table (id, text)
  2  values (1, 'This is some text.');

Wybierz:

SQL> select * from johny_table;

ID  TEXT
--------------------------
1   This is some text.

Aby uzyskać dane DDL, możesz użyć pakietu DBMS_METADATA, który "zapewnia sposób na pobranie metadanych ze słownika bazy danych jako XML lub tworzony DDL i przesłanie XML do ponownego utworzenia obiektu."(z pomocą http://www.dba-oracle.com/oracle_tips_dbms_metadata.htm )

Dla tabeli:

SQL> set pagesize 0
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;

Wynik:

  CREATE TABLE "JOHNY"."JOHNY_TABLE"
   (    "ID" NUMBER(*,0) NOT NULL ENABLE,
        "TEXT" VARCHAR2(1000),
         PRIMARY KEY ("ID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "JOHNY_TABSPACE"  ENABLE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "JOHNY_TABSPACE"

Indeks:

SQL> set pagesize 0
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;

Wynik:

  CREATE UNIQUE INDEX "JOHNY"."SYS_C0013353" ON "JOHNY"."JOHNY_TABLE" ("ID")
  PCTFREE 10 INITRANS 2 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "JOHNY_TABSPACE"

Więcej informacji:

DDL

DBMS_METADATA

Obiekty schematu

Różnice między schematem a użytkownikiem

Uprawnienia

Tworzenie użytkownika/schematu

Tworzenie przestrzeni tabel

Polecenia SQL Plus



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak posortować tablicę asocjacyjną w PL/SQL?

  2. Przyspiesz to_sql() podczas zapisywania Pandas DataFrame do bazy danych Oracle przy użyciu SqlAlchemy i cx_Oracle

  3. Wywołanie funkcji Oracle PLSQL w drugiej funkcji

  4. Grant utwórz dowolny wyzwalacz vs grant Utwórz wyzwalacz

  5. Oracle:Uzyskaj zapytanie, które zawsze zwraca dokładnie jeden wiersz, nawet jeśli nie ma danych do znalezienia