"ORA-01950: aucun privilège sur le tablespace 'SYSTEM'": De quelle erreur s'agit-il?


15

Plus tôt, j'ai 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 suhailet essaie de créer un, tableje reçois un message d'erreur ORA-01950: no privileges on tablespace 'SYSTEM'. De quelle erreur s'agit-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'

J'utilise Oracle Database 11g Express Edition version 11.2.0.2.0

Réponses:


22

Cette erreur indique que l'utilisateur n'a pas de quota sur l'espace disque logique SYSTEMdéfini comme espace disque logique persistant par défaut. Vous pouvez attribuer à un utilisateur le quota comme ceci:

sql> alter user scott quota 50m on system;

Ici, cela 50msignifie que le quota d'utilisateur sur le SYSTEMtablespace 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 l' SYSTEMespace disque logique car cela entraîne une fragmentation des données et dégrade ainsi les performances. Je vous recommande donc de créer un nouvel espace disque logique permanent:

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

Et définissez-le comme espace de table permanent de base de données par défaut afin que les objets créés par les utilisateurs entrent dans cet espace de table par défaut:

sql> alter database default tablespace users;

pouvez-vous s'il vous plaît expliquer la commandealter database default tablespace users
Suhail Gupta

1
Sur Oracle XE 11, l'espace de table des utilisateurs existe déjà, vous n'avez donc alter database default tablespace users;qu'àalter user scott quota 50m on system;
Andrew Spencer

2

Vous devez créer un nouvel espace disque logique dans la base de données car pour l' SYSTEMaccès à l' espace disque logique, des SYSDBAprivilèges sont requis.

Créez donc un nouvel espace de table et affectez-le comme espace de table par défaut à tous les utilisateurs. Lorsque vous créez un utilisateur, il donnera par défaut un espace de table particulier.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.