it-swarm.com.de

Wie erstelle ich ein neues Schema / einen neuen Benutzer in Oracle Database 11g?

Ich habe mich für ein Praktikum in einem Unternehmen beworben und sie haben mich gebeten, ein Schema für ihr Unternehmen mit bestimmten Anforderungen zu erstellen und ihnen die Datei DDL zuzusenden . Ich habe Oracle Database 11g Express Edition installiert, aber wie erstelle ich ein neues Schema in Oracle Database 11g? Ich habe im Netz nach einer Lösung gesucht, konnte aber nicht verstehen, was ich tun soll. Und welche Datei soll ich nach dem Erstellen eines Schemas verschicken?

76
acoder

Im Allgemeinen ist ein Schema in Oracle dasselbe wie ein Benutzer. Oracle Database erstellt automatisch ein Schema, wenn Sie einen Benutzer erstellen. Eine Datei mit der DDL-Dateierweiterung ist eine SQL Data Definition Language-Datei.

Neuen Benutzer erstellen (mit SQL Plus)

Grundlegende SQL Plus-Befehle:

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

Öffnen Sie SQL Plus und protokollieren Sie:

/ as sysdba

Die sysdba ist eine Rolle und entspricht "root" unter Unix oder "Administrator" unter Windows. Es sieht alles, kann alles. Wenn Sie sich intern als sysdba verbinden, wird Ihr Schemaname als SYS angezeigt.

Erstellen Sie einen Benutzer:

SQL> create user johny identified by 1234;

Alle Benutzer anzeigen und prüfen, ob der Benutzer johny vorhanden ist:

SQL> select username from dba_users;

Wenn Sie versuchen, sich jetzt als johny anzumelden, wird eine Fehlermeldung angezeigt:

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

Der Benutzer, der sich anmeldet, muss mindestens ein Sitzungsprivileg erstellen, damit wir dem Benutzer diese Privilegien gewähren können:

SQL> grant create session to johny;

Jetzt können Sie sich als Benutzer johny verbinden:

username: johny
password: 1234

Um den Benutzer loszuwerden, können Sie ihn löschen:

SQL> drop user johny;

Das war ein einfaches Beispiel, um zu zeigen, wie man einen Benutzer erstellt. Es könnte komplexer sein. Oben haben wir einen Benutzer erstellt, dessen Objekte im Standardtabellenbereich der Datenbank gespeichert sind. Um die Datenbank aufgeräumt zu halten, sollten wir Benutzerobjekte in seinem eigenen Bereich platzieren (Tablespace ist eine Zuweisung von Speicherplatz in der Datenbank, der Schemaobjekte enthalten kann).

Zeige bereits erstellte Tablespaces:

SQL> select tablespace_name from dba_tablespaces;

Erstellen Sie einen Tablespace:

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

Temporären Tabellenbereich erstellen (Temporärer Tabellenbereich ist eine Zuweisung von Speicherplatz in der Datenbank, der vorübergehende Daten enthalten kann, die nur für die Dauer einer Sitzung bestehen bleiben. Diese vorübergehenden Daten können nach einem Prozess- oder Instanzfehler nicht wiederhergestellt werden.):

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

Erstellen Sie den Benutzer:

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

Gewähren Sie einige Berechtigungen:

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

Loggen Sie sich als johny ein und prüfen Sie, welche Rechte er hat:

SQL> select * from session_privs;

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

Mit der Berechtigung zum Erstellen von Tabellen kann der Benutzer folgende Tabellen erstellen:

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

Daten einfügen:

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

Wählen:

SQL> select * from johny_table;

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

Um DDL-Daten abzurufen, können Sie das Paket DBMS_METADATA verwenden, mit dem Sie "Metadaten aus dem Datenbankwörterbuch als XML- oder Erstellungs-DDL abrufen und das XML zum erneuten Erstellen des Objekts senden können". (Mit Hilfe von http://www.dba-Oracle.com/Oracle_tips_dbms_metadata.htm )

Für tisch:

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;

Ergebnis:

  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"

Für den 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;

Ergebnis:

  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"

Weitere Informationen:

DDL

DBMS_METADATA

Schemaobjekte

Unterschiede zwischen Schema und Benutzer

Privilegien

Benutzer/Schema erstellen

Tablespace erstellen

SQL Plus-Befehle

223
vitfo

Es ist ein funktionierendes Beispiel:

CREATE USER auto_exchange IDENTIFIED BY 123456;
GRANT RESOURCE TO auto_exchange;
GRANT CONNECT TO auto_exchange;
GRANT CREATE VIEW TO auto_exchange;
GRANT CREATE SESSION TO auto_exchange;
GRANT UNLIMITED TABLESPACE TO auto_exchange;
15
D Vy

Fangen wir an. Haben Sie Kenntnisse in Oracle?

Zuerst müssen Sie verstehen, was eine SCHEMA ist. Ein Schema ist eine Sammlung logischer Datenstrukturen oder Schemaobjekte. Ein Schema gehört einem Datenbankbenutzer und hat denselben Namen wie dieser Benutzer. Jeder Benutzer besitzt ein einzelnes Schema. Schemaobjekte können mit SQL erstellt und bearbeitet werden.

  1. CREATE USER acoder; - Wenn Sie in Oracle einen neuen Benutzer erstellen, wird ein Schema mit demselben Namen wie der Benutzername erstellt, in dem alle seine Objekte gespeichert sind.
  2. GRANT CREATE SESSION TO ACODER; - Andernfalls können Sie nichts tun.

Um auf das Schema eines anderen Benutzers zugreifen zu können, müssen Sie Berechtigungen für ein bestimmtes Objekt in diesem Schema erhalten oder optional die SYSDBA-Rolle zugewiesen haben.

Damit solltest du anfangen.

14
Tav
SQL> select Username from dba_users
  2  ;

USERNAME
------------------------------
SYS
SYSTEM
ANONYMOUS
APEX_PUBLIC_USER
FLOWS_FILES
APEX_040000
OUTLN
DIP
Oracle_OCM
XS$NULL
MDSYS

USERNAME
------------------------------
CTXSYS
DBSNMP
XDB
APPQOSSYS
HR

16 rows selected.

SQL> create user testdb identified by password;

User created.

SQL> select username from dba_users;

USERNAME
------------------------------
TESTDB
SYS
SYSTEM
ANONYMOUS
APEX_PUBLIC_USER
FLOWS_FILES
APEX_040000
OUTLN
DIP
Oracle_OCM
XS$NULL

USERNAME
------------------------------
MDSYS
CTXSYS
DBSNMP
XDB
APPQOSSYS
HR

17 rows selected.

SQL> grant create session to testdb;

Grant succeeded.

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

Tablespace created.

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

Tablespace created.

SQL> drop user testdb;

User dropped.

SQL> create user testdb
  2  identified by password
  3  default tablespace testdb_tablespace
  4  temporary tablespace testdb_tablespace_temp;

User created.

SQL> grant create session to testdb;

Grant succeeded.

SQL> grant create table to testdb;

Grant succeeded.

SQL> grant unlimited tablespace to testdb;

Grant succeeded.

SQL>
4
Raj Sharma

Führen Sie vom Oracle SQL-Entwickler die folgenden Schritte im SQL-Arbeitsblatt aus:

create user lctest identified by lctest;
grant dba to lctest;

klicken Sie dann mit der rechten Maustaste auf "Oracle-Verbindung" -> Neue Verbindung, und stellen Sie vom Verbindungsnamen bis zum Kennwort des Benutzers alles auf den neuesten Stand. Die Testverbindung muss bestehen. Nach dem Herstellen der Verbindung wird das Schema angezeigt.

0
Feng Zhang