Auparavant, jai créé un utilisateur:

SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded. 

mais lorsque je me connecte en tant que suhail et essayez de créer un table Jobtiens une erreur disant ORA-01950: no privileges on tablespace "SYSTEM" . De quelle erreur sagit-il? Pourquoi cela se produit-il?


SQL> connect suhail Enter password: Connected. SQL> create table suhail_table(name char(10)); create table suhail_table(name char(10)) * ERROR at line 1: ORA-01950: no privileges on tablespace "SYSTEM" 

Jutilise Oracle Database 11g Express Edition version 11.2.0.2.0

Réponse

Cette erreur indique que lutilisateur « na pas de quota sur le tablespace SYSTEM qui est défini comme espace de table persistant par défaut. Vous pouvez attribuer un quota à un utilisateur comme suit:

sql> alter user scott quota 50m on system; 

Ici, 50m signifie que le quota utilisateur sur le tablespace SYSTEM est de 50 mégaoctets. Vous pouvez également définir le quota sur unlimited.

Cependant, il est déconseillé de stocker les données des utilisateurs et des applications dans le tablespace SYSTEM car cela provoque la fragmentation des données et donc dégrade les performances. Je vous recommande donc de créer un nouveau tablespace permanent :

sql> create smallfile tablespace users datafile "/u01/app/oracle/oradata/ORCL/users.dbf" size 10g; 

Ensuite, définissez-le comme espace de table permanent de la base de données par défaut afin que les objets créés par les utilisateurs aient accès à cet espace de table par défaut:

Commentaires

  • pouvez-vous expliquer la commande alter database default tablespace users
  • Sous Oracle XE 11, le tablespace des utilisateurs existe déjà, il vous suffit donc de alter database default tablespace users; et alter user scott quota 50m on system;

Réponse

Vous devez créer un nouveau tablespace dans la base de données car pour le SYSTEM accès au tablespace, les privilèges SYSDBA sont requis.

Alors, créez un nouveau tablespace et attribuez-le comme tablespace par défaut à tous les utilisateurs. Lorsque vous créez un utilisateur, il attribuera par défaut un espace de table particulier.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *