Oracle ORA-01950 오류 해결 및 유저 생성 가이드

ORA-01950은 테이블스페이스에 대한 권한이 없을 때 발생합니다. 오라클 설치 후 또는 유저 생성 시 설정해야 할 필수 사항들을 정리합니다.

1. ORA-01950 오류 원인

ORA-01950: no privileges on tablespace "USERS"

-- 원인: 해당 테이블스페이스에 공간 할당 권한 없음

2. 해결 방법

-- 방법 1: 특정 테이블스페이스에 용량 할당
ALTER USER 사용자명 QUOTA 100M ON USERS;
ALTER USER 사용자명 QUOTA 500M ON 테이블스페이스명;

-- 방법 2: 무제한 용량 할당 (권장)
ALTER USER 사용자명 QUOTA UNLIMITED ON USERS;

-- 방법 3: 무제한 테이블스페이스 권한 부여
GRANT UNLIMITED TABLESPACE TO 사용자명;

3. 유저 생성 시 권장 설정

-- 1. 유저 생성
CREATE USER 사용자명 IDENTIFIED BY 비밀번호
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

-- 2. 기본 권한 부여
GRANT CONNECT, RESOURCE TO 사용자명;

-- 3. 테이블스페이스 할당량 설정
ALTER USER 사용자명 QUOTA UNLIMITED ON USERS;

-- 4. 필요 시 추가 권한
GRANT CREATE VIEW TO 사용자명;
GRANT CREATE SYNONYM TO 사용자명;

4. 원스텝 유저 생성 스크립트

-- 개발용 유저 생성 (모든 필수 설정 포함)
CREATE USER dev_user IDENTIFIED BY dev1234
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON USERS;

GRANT CONNECT, RESOURCE TO dev_user;
GRANT CREATE VIEW, CREATE SYNONYM TO dev_user;
GRANT CREATE SEQUENCE TO dev_user;

5. 현재 할당량 확인

-- 사용자별 테이블스페이스 할당량
SELECT tablespace_name, username, max_bytes, bytes
FROM dba_ts_quotas
WHERE username = UPPER("사용자명");

-- 또는 자신의 할당량 확인
SELECT * FROM user_ts_quotas;

6. Oracle 12c 이상 주의사항

-- CDB 환경에서 공통 유저 생성 (C## 접두사 필요)
CREATE USER C##사용자명 IDENTIFIED BY 비밀번호;

-- PDB 접속 후 로컬 유저 생성
ALTER SESSION SET CONTAINER = PDB명;
CREATE USER 사용자명 IDENTIFIED BY 비밀번호;

-- 또는 접두사 규칙 비활성화 (비권장)
ALTER SESSION SET "_ORACLE_SCRIPT"=true;

7. CONNECT, RESOURCE 권한 내용

역할포함 권한
CONNECTCREATE SESSION
RESOURCECREATE TABLE, CREATE SEQUENCE, CREATE PROCEDURE, CREATE TRIGGER 등

8. 문제 해결 체크리스트

-- 1. 유저 존재 확인
SELECT username FROM dba_users WHERE username = UPPER("사용자명");

-- 2. 권한 확인
SELECT * FROM dba_role_privs WHERE grantee = UPPER("사용자명");

-- 3. 테이블스페이스 확인
SELECT tablespace_name, status FROM dba_tablespaces;

-- 4. 할당량 확인 및 수정
SELECT * FROM dba_ts_quotas WHERE username = UPPER("사용자명");
ALTER USER 사용자명 QUOTA UNLIMITED ON USERS;

주의사항

  • UNLIMITED TABLESPACE는 보안상 주의 필요
  • 프로덕션 환경에서는 용량 제한 권장
  • DBA 권한 없이는 ALTER USER 불가