“ORA-01950: 'SYSTEM' tablo alanında ayrıcalık yok”: Ne hatası?


15

Daha önce bir kullanıcı oluşturdum:

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

ancak olarak giriş yaptığımda suhailve oluşturmaya çalıştığımda tablebir hata mesajı alıyorum ORA-01950: no privileges on tablespace 'SYSTEM'. Ne hatası? Neden oluşur?


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 Sürüm 11.2.0.2.0'ı kullanıyorum

Yanıtlar:


22

Bu hata, kullanıcının tablo SYSTEMalanında varsayılan kalıcı tablo alanı olarak ayarlanmış kotasına sahip olmadığını belirtir. Bir kullanıcıya kotayı şu şekilde atayabilirsiniz:

sql> alter user scott quota 50m on system;

Burada, tablo alanındaki 50mkullanıcı kotasının SYSTEM50 mebibit olduğu anlamına gelir . Kotayı da olarak ayarlayabilirsiniz unlimited.

Ancak, SYSTEMveri parçalanmasına neden olduğu ve dolayısıyla performansı düşürdüğü için kullanıcı ve uygulama verilerini tablo alanında saklamak kötü bir uygulamadır . Bu yüzden yeni bir kalıcı tablo alanı oluşturmanızı tavsiye ederim:

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

Ardından, kullanıcılar tarafından oluşturulan nesnelerin bu varsayılan tablo alanına girmesi için varsayılan veritabanı kalıcı tablo alanı olarak ayarlayın:

sql> alter database default tablespace users;

komutu açıklayabilir misinizalter database default tablespace users
Suhail Gupta

1
Yalnızca gerek böylece Oracle XE 11, kullanıcılar tablo zaten var alter database default tablespace users;vealter user scott quota 50m on system;
Andrew Spencer

2

Tablo alanına SYSTEMerişim için SYSDBAayrıcalıklar gerekli olduğundan veritabanına yeni bir tablo alanı oluşturmanız gerekir.

Bu nedenle, yeni bir tablo alanı oluşturun ve bunu tüm kullanıcılara varsayılan tablo alanı olarak atayın. Herhangi bir kullanıcı oluşturduğunuzda, varsayılan olarak belirli tablo alanı atayacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.