"ORA-01950: привілеїв на табличному просторі" SYSTEM "": яка помилка?


15

Раніше я створив користувача:

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

але коли я входжу як suhailі намагаюся створити, tableя отримую помилку ORA-01950: no privileges on tablespace 'SYSTEM'. Яка помилка? Чому це відбувається?


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'

Я використовую Oracle Database 11g Express Edition випуску 11.2.0.2.0

Відповіді:


22

Ця помилка говорить про те, що користувач не має квоти на табличний простір, SYSTEMякий встановлений як постійний простір таблиць. Ви можете призначити користувачеві квоту так:

sql> alter user scott quota 50m on system;

Тут 50mозначає, що квота користувача на SYSTEMтабличному просторі становить 50 мебібайт. Ви також можете встановити квоту на unlimited.

Однак це неправильна практика зберігання даних користувачів та додатків у SYSTEMпросторі таблиць, оскільки це викликає фрагментацію даних і, таким чином, погіршує продуктивність. Тому я рекомендую вам створити нову постійну простір таблиць:

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

А потім встановіть його як постійну простір таблиці баз даних за замовчуванням, щоб об’єкти, створені користувачами, переходили до цього простору таблиць за замовчуванням:

sql> alter database default tablespace users;

Ви можете пояснити, будь ласка, командуalter database default tablespace users
Suhail Gupta

1
У Oracle XE 11 простору таблиць користувачів вже існує, тому вам потрібно лише alter database default tablespace users;іalter user scott quota 50m on system;
Ендрю Спенсер

2

Вам потрібно створити одне нове простір таблиць у базі даних, оскільки для SYSTEMдоступу до простору таблиць SYSDBAпотрібні привілеї.

Отже, створіть один новий простір таблиць і призначте його як стандартний простір таблиць для всіх користувачів. Коли ви створюєте будь-якого користувача, він за замовчуванням надає певний простір таблиць.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.