“ORA-01950: sin privilegios en el espacio de tabla 'SYSTEM'”: ¿Qué error es?


15

Anteriormente creé un usuario:

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

pero cuando inicio sesión como suhaile intento crear un tablemensaje de error aparece ORA-01950: no privileges on tablespace 'SYSTEM'. Que error es ¿Por qué ocurre?


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'

Estoy usando Oracle Database 11g Express Edition Release 11.2.0.2.0

Respuestas:


22

Este error dice que el usuario no tiene una cuota en el espacio de tabla SYSTEMque se establece como el espacio de tabla persistente predeterminado. Puede asignar a un usuario la cuota de esta manera:

sql> alter user scott quota 50m on system;

Aquí, 50msignifica que la cuota de usuario en el SYSTEMespacio de tabla es de 50 mebibytes. También puede establecer la cuota enunlimited .

Sin embargo, es una mala práctica almacenar datos de usuarios y aplicaciones en el SYSTEMespacio de tabla, ya que causa fragmentación de datos y, por lo tanto, degrada el rendimiento. Por lo tanto, le recomendaría que cree un nuevo espacio de tabla permanente:

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

Y luego configúrelo como el espacio de tabla permanente de la base de datos predeterminada para que los objetos creados por los usuarios entren en ese espacio de tabla predeterminado:

sql> alter database default tablespace users;

¿podría explicar el comando?alter database default tablespace users
Suhail Gupta

1
En Oracle XE 11, el espacio de tabla de los usuarios ya existe, por lo que solo necesita alter database default tablespace users;yalter user scott quota 50m on system;
Andrew Spencer

2

Debe crear un nuevo espacio de tabla en la base de datos porque para el SYSTEMacceso al espacio de tabla, SYSDBAse requieren privilegios.

Por lo tanto, cree un nuevo espacio de tabla y asígnelo como el espacio de tabla predeterminado a todos los usuarios. Cuando crea cualquier usuario, por defecto le asignará asignar un espacio de tabla particular.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.