Database

ORA-01950: 테이블스페이스 'USERS'에 대한 권한이 없습니다.

천방지축 개발노트 2020. 9. 25. 19:03


'USERS'테이블스페이스에 대한 권한이 없습니다.

ORA-01950: no privileges on tablespace 'USERS'

위 에러 또는 "ORA-30041: 테이블스페이스에 할당량을 부여할 수 없습니다." 등의 에러가 발생하면서 'Tablespace'란 용어가 등장했다.

 



테이블 스페이스(Table Space)란??

Oracle에서는 사용자 생성 후 테이블을 생성하고 INSERT 하려는 순간 (혹은 CREATE시에) “ORA-01950: 테이블스페이스 ‘USERS’에 대한 권한이 없습니다.” 와 같은 오류가 발생할 수 있다. 왜냐하면 Oracle은 새로운 사용자를 생성한 직후에 기본적으로 할당받는 테이블 스페이스인 ‘USERS’라는 이름의 ROLE을 부여함. 근데 이 ‘USERS’ Tablespace에는 얼마만큼의 영역을 할당한 것인지 정해지지 않은 상태이다. 즉, users 테이블스페이스에 대해 현재 사용자가 1kb의 데이터도 입력할 수 없는 것임. 따라서 해결법은 해당 테이블스페이스에 대해 공간을 할당해 주면 된다. 정리하자면, ‘테이블스페이스’란 오라클 서버가 테이터를 저장하는 논리적인 데이터 저장 구조를 의미한다.



1) unlimited 키워드로 할당에 제한을 두지 않도록 하는 방법. 

※quota키워드: 사용하여 USER가 사용할 테이블스페이스의 영역을 할당.

alter user ”유저명” default tablespace ”테이블스페이스” quota unlimited on ”테이블스페이스”;

ex) alter user myuser default tablespace users quota unlimited on users;


2) 특정 용량만큼만 테이블스페이스를 할당하는 경우

alter user ”유저명” quota ”용량” on ”테이블스페이스”;

ex) alter user myuser quota 30M on users;