Comment créer un nouveau schéma/nouvel utilisateur dans la base de données Oracle 11g?

j'ai postulé pour un stage dans une entreprise et comme question ils m'ont demandé de créer un schéma pour leur entreprise avec certaines exigences et de leur envoyer le dossier DDL . J'ai installé la base de données Oracle 11g Express edition, mais comment puis-je créer un nouveau schéma dans la base de données Oracle 11g? J'ai cherché dans le net une solution mais j'ai pu comprendre quoi faire. Et après avoir créé un schéma, quel fichier dois-je envoyer?

62
demandé sur Do Nhu Vy 2013-08-23 16:39:33

4 réponses

en général, un schéma dans oracle est le même qu'un utilisateur. La base de données Oracle crée automatiquement un schéma lorsque vous créez un utilisateur. Un fichier avec l'extension de fichier DDL est un fichier de langue de définition de données SQL.

création d'un nouvel utilisateur (en utilisant SQL Plus)

commandes SQL Plus de base:

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

Open SQL Plus and log:

/ as sysdba

le sysdba est un rôle et est comme " root "sur unix ou" administrateur " sur Windows. Il voit tout, peut tout faire. En interne, si vous vous connectez en tant que sysdba, votre nom de schéma apparaîtra comme SYS.

créer un utilisateur:

SQL> create user johny identified by 1234;

voir tous les utilisateurs et de vérifier si l'utilisateur johny est là:

SQL> select username from dba_users;

si vous essayez de vous connecter en tant que johny maintenant vous obtiendrez une erreur:

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

l'utilisateur pour se connecter doit au moins créer nous devons donc accorder ces privilèges à l'utilisateur:

SQL> grant create session to johny;

Maintenant, vous êtes en mesure de se connecter comme l'utilisateur johny:

username: johny
password: 1234

Pour se débarrasser de l'utilisateur, vous pouvez laisser tomber:

SQL> drop user johny;

C'était un exemple de base pour montrer comment créer un utilisateur. Il pourrait être plus complexe. Ci-dessus, nous avons créé un utilisateur qui les objets sont stockés dans la base de données par défaut tablespace. De base de données tidy nous devrions placer des objets utilisateurs à son propre espace (tablespace est une allocation d'espace dans la base de données qui peut contenir des objets de schéma).

Show déjà créé tablespaces:

SQL> select tablespace_name from dba_tablespaces;

créer tablespace:

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

Create temporary tablespace (Temporaty tablespace est une allocation d'espace dans la base de données qui peut contenir des données transitoires qui persiste seulement pour la durée d'une session. Ce transitoire les données ne peuvent pas être récupérées après l'échec du processus ou de l'instance.):

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

créer l'utilisateur:

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

Octroi de certains privilèges:

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

Connexion en tant que johny et vérifier ce que les privilèges qu'il a:

SQL> select * from session_privs;

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

avec le privilège créer une table, l'utilisateur peut créer des tables:

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

insérer les données:

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

sélectionner:

SQL> select * from johny_table;

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

pour obtenir des données DDL, vous pouvez utiliser le paquet DBMS_METADATA qui " fournit un moyen pour vous de récupérer des métadonnées du dictionnaire de base de données en XML ou de créer DDL et de soumettre le XML pour recréer l'objet.". (avec l'aide de http://www.dba-oracle.com/oracle_tips_dbms_metadata.htm )

pour table:

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;

résultat:

  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"

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

résultat:

  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"

plus d'information:

DDL

DBMS_METADATA

objets de Schéma

différences entre le schéma et l'utilisateur

privilèges

la Création de l'utilisateur/schéma

création de tablespace

SQL Plus commandes

199
répondu vitfo 2017-05-23 12:09:59

commençons. Avez-vous des connaissances en Oracle?

vous devez d'abord comprendre ce qu'est un schéma. Un schéma est un ensemble de structures logiques de données, ou des objets de schéma. Un schéma appartient à un utilisateur de la base de données et porte le même nom que cet utilisateur. Chaque utilisateur possède un seul schéma. Les objets Schema peuvent être créés et manipulés avec SQL.

  1. créer un code utilisateur; -- chaque fois que vous créez un nouvel utilisateur dans Oracle, un schéma avec le même nom que le nom d'utilisateur est créé où tous ses objets sont stockés.
  2. SUBVENTION de CRÉER une SESSION POUR acoder; -- à défaut, vous ne pouvez rien faire.

pour accéder au schéma d'un autre utilisateur, vous devez vous voir accorder des privilèges sur un objet spécifique sur ce schéma ou avoir éventuellement un rôle SYSDBA assigné.

qui devrait vous aider à démarrer.

12
répondu Tav 2013-08-23 14:00:03

c'est un exemple pratique:

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;
6
répondu Do Nhu Vy 2017-02-17 08:23:26
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
répondu Raj Sharma 2015-12-07 20:05:02