sql >> Database >  >> RDS >> Oracle

Hoe maak ik een nieuw schema/nieuwe gebruiker aan in Oracle Database 11g?

Over het algemeen is een schema in Oracle hetzelfde als een gebruiker. Oracle Database maakt automatisch een schema wanneer u een gebruiker aanmaakt. Een bestand met de DDL-bestandsextensie is een SQL Data Definition Language-bestand.

Nieuwe gebruiker maken (met SQL Plus)

Basis SQL Plus-opdrachten:

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

Open SQL Plus en log in:

/ as sysdba

De sysdba is een rol en is als "root" op Unix of "Administrator" op Windows. Het ziet alles, kan alles. Intern, als u verbinding maakt als sysdba, lijkt uw schemanaam SYS te zijn.

Maak een gebruiker aan:

SQL> create user johny identified by 1234;

Bekijk alle gebruikers en controleer of de gebruiker johny er is:

SQL> select username from dba_users;

Als je nu probeert in te loggen als johny krijg je een foutmelding:

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

De gebruiker om in te loggen heeft minimaal sessieprivileges nodig, dus we moeten deze rechten aan de gebruiker toekennen:

SQL> grant create session to johny;

Nu kunt u verbinding maken als gebruiker johny:

username: johny
password: 1234

Om van de gebruiker af te komen, kun je hem laten vallen:

SQL> drop user johny;

Dat was een eenvoudig voorbeeld om te laten zien hoe u een gebruiker kunt maken. Het ligt misschien wat ingewikkelder. Hierboven hebben we een gebruiker gemaakt wiens objecten zijn opgeslagen in de standaardtabelruimte van de database. Om de database netjes te houden, moeten we gebruikersobjecten in zijn eigen ruimte plaatsen (tabelruimte is een toewijzing van ruimte in de database die schema-objecten kan bevatten).

Reeds gemaakte tablespaces weergeven:

SQL> select tablespace_name from dba_tablespaces;

Tabelruimte maken:

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

Tijdelijke tabelruimte maken (Tijdelijke tabelruimte is een toewijzing van ruimte in de database die tijdelijke gegevens kan bevatten die alleen voor de duur van een sessie blijven bestaan. Deze tijdelijke gegevens kunnen niet worden hersteld na een proces- of instantiefout.):

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

Maak de gebruiker aan:

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

Verleen enkele privileges:

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

Log in als johny en controleer welke privileges hij heeft:

SQL> select * from session_privs;

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

Met het recht om een ​​tabel aan te maken, kan de gebruiker tabellen maken:

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

Gegevens invoegen:

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

Selecteer:

SQL> select * from johny_table;

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

Om DDL-gegevens te krijgen, kunt u het DBMS_METADATA-pakket gebruiken dat "u een manier biedt om metagegevens uit het databasewoordenboek op te halen als XML of DDL te maken en de XML in te dienen om het object opnieuw te maken.". (met hulp van http://www.dba-oracle.com/oracle_tips_dbms_metadata.htm )

Voor tafel:

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;

Resultaat:

  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"

Voor index:

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;

Resultaat:

  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"

Meer informatie:

DDL

DBMS_METADATA

Schema-objecten

Verschillen tussen schema en gebruiker

Rechten

Gebruiker/schema maken

Tabelruimte maken

SQL Plus-opdrachten



  1. telefoonnummer klikbaar maken om scherm op mobiel te bellen?

  2. Kolom hier niet toegestaan ​​Oracle SQL op meerdere kolommen

  3. Invoegen in tabel..exec op gekoppelde server werkt niet

  4. Tekens in reeksen tellen via SQL