“ ORA-01950: ไม่มีสิทธิ์บน tablespace '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

ข้อผิดพลาดนี้บอกว่าผู้ใช้ไม่มีโควต้าใน tablespace SYSTEMซึ่งถูกตั้งค่าเป็น tablespace เริ่มต้นถาวร คุณสามารถกำหนดโควต้าผู้ใช้เช่นนี้:

sql> alter user scott quota 50m on system;

นี่50mหมายความว่าโควต้าผู้ใช้บนSYSTEMtablespace คือ 50 mebibytes unlimitedนอกจากนี้คุณยังสามารถตั้งค่าโควต้าไป

อย่างไรก็ตามมันเป็นวิธีปฏิบัติที่ไม่ดีในการจัดเก็บข้อมูลผู้ใช้และแอปพลิเคชันในSYSTEMtablespace เนื่องจากทำให้การกระจายตัวของข้อมูลและทำให้ประสิทธิภาพลดลง ดังนั้นฉันขอแนะนำให้คุณสร้างพื้นที่ตารางถาวรใหม่:

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

จากนั้นให้ตั้งเป็น tablespace ถาวรของฐานข้อมูลเริ่มต้นเพื่อให้วัตถุที่สร้างโดยผู้ใช้เข้าสู่ tablespace เริ่มต้นนั้น:

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;
Andrew Spencer

2

คุณต้องสร้างหนึ่ง tablespace ใหม่ในฐานข้อมูลเพราะสำหรับการSYSTEMเข้าถึง tablespace SYSDBAจำเป็นต้องมีสิทธิ์

ดังนั้นสร้างหนึ่ง tablespace ใหม่และกำหนดเป็น tablespace เริ่มต้นให้กับผู้ใช้ทั้งหมด เมื่อคุณสร้างผู้ใช้ใด ๆ โดยค่าเริ่มต้นมันจะให้พื้นที่ตารางเฉพาะ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.