Comment créer un nouveau schéma / nouvel utilisateur dans Oracle Database 11g?

J’ai postulé pour un stage dans une entreprise et, à titre de question, ils m’ont demandé de créer un schéma pour leur entreprise avec certaines exigences et de leur envoyer le fichier DDL . J’ai installé la firebase database Oracle 11g Express Edition, mais comment créer un nouveau schéma dans la firebase database Oracle 11g? J’ai cherché sur le net une solution mais je pouvais comprendre quoi faire. Et après avoir créé un schéma, quel fichier dois-je les envoyer?

En règle générale, un schéma oracle est identique à un utilisateur. Oracle Database crée automatiquement un schéma lorsque vous créez un utilisateur. Un fichier avec l’extension de fichier DDL est un fichier SQL Data Definition Language.

Création d’un nouvel utilisateur (à l’aide de SQL Plus)

Commandes de base SQL Plus:

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

Ouvrez SQL Plus et connectez-vous:

 / as sysdba 

Le sysdba est un rôle et est comme “root” sur unix ou “Administrator” 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éez un utilisateur:

 SQL> create user johny identified by 1234; 

Voir tous les utilisateurs et vérifier si l’utilisateur johny est là:

 SQL> select username from dba_users; 

Si vous essayez de vous connecter en tant que johny, vous obtiendrez une erreur:

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

L’utilisateur à connecter doit au moins créer un privilège de session, nous devons donc accorder ces privilèges à l’utilisateur:

 SQL> grant create session to johny; 

Vous pouvez maintenant vous connecter en tant qu’utilisateur johny:

 username: johny password: 1234 

Pour se débarrasser de l’utilisateur, vous pouvez le déposer:

 SQL> drop user johny; 

C’était un exemple de base pour montrer comment créer un utilisateur. Cela pourrait être plus complexe. Nous avons créé ci-dessus un utilisateur dont les objects sont stockés dans le tablespace par défaut de la firebase database. Pour que la firebase database soit bien rangée, nous devons placer les objects utilisateurs dans son propre espace (le tablespace est une allocation d’espace dans la firebase database pouvant contenir des objects de schéma).

Afficher les espaces de table déjà créés:

 SQL> select tablespace_name from dba_tablespaces; 

Créez un tablespace:

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

Créer un espace de table temporaire (L’espace de table temporaire est une allocation d’espace dans la firebase database pouvant contenir des données transitoires qui ne persistent que pendant la durée d’une session. Ces données transitoires ne peuvent pas être récupérées après une défaillance de processus ou d’instance.)

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

Créez l’utilisateur:

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

Accorder des privilèges:

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

Connectez-vous en tant que johny et vérifiez quels privilèges il a:

 SQL> select * from session_privs; PRIVILEGE ---------------------------------------- CREATE SESSION UNLIMITED TABLESPACE CREATE TABLE 

Avec le privilège create 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 des 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 package DBMS_METADATA qui “vous permet de récupérer des métadonnées à partir du dictionnaire de firebase database en tant que XML ou DDL de création et de soumettre le XML pour recréer l’object.” (avec l’aide de http://www.dba-oracle.com/oracle_tips_dbms_metadata.htm )

Pour la 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 schéma et utilisateur

Les privilèges

Créer un utilisateur / schéma

Création de tablespace

Commandes SQL Plus

Commençons par vous Avez-vous des connaissances dans Oracle?

Vous devez d’abord comprendre ce qu’est un SCHEMA. Un schéma est un ensemble de structures logiques de données ou d’objects de schéma. Un schéma appartient à un utilisateur de firebase database et porte le même nom que cet utilisateur. Chaque utilisateur possède un schéma unique. Les objects de schéma peuvent être créés et manipulés avec SQL.

  1. Créer un codeur utilisateur; – chaque fois que vous créez un nouvel utilisateur dans Oracle, un schéma portant le même nom que le nom d’utilisateur est créé, où tous ses objects sont stockés.
  2. ACCORDER CREATE SESSION TO acoder; – Si vous ne le faites pas, vous ne pouvez rien faire.

Pour accéder à la structure d’un autre utilisateur, vous devez disposer de privilèges sur un object spécifique de ce schéma ou, le cas échéant, atsortingbuer un rôle SYSDBA.

Cela devrait vous aider à démarrer.

C’est un exemple de travail:

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