"ORA-01950: tidak ada hak istimewa di tablespace 'SYSTEM'": Kesalahan apa itu?

15

Sebelumnya saya membuat pengguna:

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

tetapi ketika saya login sebagai suhaildan mencoba untuk membuat tablesaya mendapatkan pesan kesalahan ORA-01950: no privileges on tablespace 'SYSTEM'. Kesalahan apa itu? Mengapa ini terjadi?


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'

Saya menggunakan Oracle Database 11g Express Edition Release 11.2.0.2.0

Suhail Gupta
sumber

Jawaban:

22

Kesalahan ini mengatakan bahwa pengguna tidak memiliki kuota di tablespace SYSTEMyang ditetapkan sebagai tablespace persisten default. Anda dapat menetapkan kuota pengguna seperti ini:

sql> alter user scott quota 50m on system;

Di sini, 50mberarti bahwa kuota pengguna di SYSTEMtablespace adalah 50 mebibytes. Anda juga dapat mengatur kuota menjadi unlimited.

Namun itu adalah praktik buruk untuk menyimpan data pengguna dan aplikasi dalam SYSTEMtablespace karena menyebabkan fragmentasi data dan dengan demikian menurunkan kinerja. Jadi saya akan merekomendasikan Anda untuk membuat tablespace permanen baru:

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

Dan kemudian mengaturnya sebagai database permanen tablespace default sehingga objek yang dibuat oleh pengguna masuk ke tablespace default itu:

sql> alter database default tablespace users;
Yasir Arsanukaev
sumber
bisa tolong jelaskan perintahnyaalter database default tablespace users
Suhail Gupta
1
Pada Oracle XE 11, tablespace pengguna sudah ada, jadi Anda hanya perlu alter database default tablespace users;danalter user scott quota 50m on system;
Andrew Spencer
2

Anda harus membuat satu tablespace baru ke dalam database karena untuk SYSTEMakses tablespace, SYSDBAhak istimewa diperlukan.

Jadi, buat satu tablespace baru dan tetapkan sebagai tablespace default untuk semua pengguna. Ketika Anda membuat pengguna apa pun, secara default itu akan memberikan menetapkan tablespace tertentu.

Ankit
sumber