it-swarm-eu.dev

"ORA-01950: žádná oprávnění pro tabulkový prostor 'SYSTEM'": Jaká je chyba?

Dříve jsem vytvořil uživatele:

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

ale když se přihlásím jako suhail a pokusím se vytvořit table dostanu chybovou zprávu ORA-01950: no privileges on tablespace 'SYSTEM'. Jaká je chyba? Proč k tomu dochází?


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'

Používám Oracle Database 11g Express Edition verze 11.2.0.2.

15
Suhail Gupta

Tato chyba říká, že uživatel nemá kvótu v tabulkovém prostoru SYSTEM, která je nastavena jako výchozí trvalý tabulkový prostor. Uživateli můžete přiřadit kvótu takto:

sql> alter user scott quota 50m on system;

Tady, 50m znamená, že uživatelská kvóta v tabulkovém prostoru SYSTEM je 50 mebibytes. Můžete také nastavit kvótu na unlimited.

Je však špatnou praxí ukládat uživatelská a aplikační data do tabulkového prostoru SYSTEM, protože to způsobuje fragmentaci dat a snižuje tak výkon. Doporučuji vám proto vytvořit nový stálý tabulkový prostor:

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

A pak jej nastavte jako výchozí databázový trvalý tabulkový prostor, takže objekty vytvořené uživateli přejdou do tohoto výchozího tabulkového prostoru:

sql> alter database default tablespace users;
22
Yasir Arsanukaev

Musíte vytvořit jeden nový tabulkový prostor do databáze, protože pro přístup do tabulkového prostoru SYSTEM jsou vyžadována oprávnění SYSDBA.

Vytvořte tedy nový nový tabulkový prostor a přiřaďte jej jako výchozí tabulkový prostor všem uživatelům. Když vytvoříte libovolného uživatele, ve výchozím nastavení mu přiřadí konkrétní tabulkový prostor.

2
Ankit