이전에 사용자를 만들었습니다.
SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded.
하지만
에서 table
를 만들려고하면 ORA-01950: no privileges on tablespace "SYSTEM"
em라는 오류가 발생합니다. >. 어떤 오류입니까? 왜 발생합니까?
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 Release 11.2.0.2.0을 사용하고 있습니다.
답변
이 오류는 사용자에게 “테이블 스페이스 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;
그런 다음 사용자가 만든 객체가 해당 기본 테이블 스페이스로 이동하도록 기본 데이터베이스 영구 테이블 스페이스로 설정합니다.
설명
답변
SYSTEM
테이블 스페이스 액세스, SYSDBA
권한이 필요합니다.
따라서 하나의 새 테이블 스페이스를 생성하고 모든 사용자에게 기본 테이블 스페이스로 할당합니다. 사용자를 만들 때 기본적으로 특정 테이블 스페이스를 할당합니다.
alter database default tablespace users
alter database default tablespace users;
및alter user scott quota 50m on system;
만 있으면됩니다.