[Oracle] 사용자 생성 및 삭제 방법 (Create User)
- 데이터베이스/오라클
- 2022. 8. 12.
오라클에서 유저의 계정을 생성할 때는 CREATE USER 문을 사용한다. 사용자를 생성할 때 테이블스페이스, 사용자 최초 로그인 시 암호 변경 등을 설정할 수 있으며, 오라클 12c 버전부터 사용자를 생성할 때 ORA-65096 오류가 발생할 수 있는데 이럴 때는 사용자명 앞에 c##을 붙여주면 된다.
목차 |
사용자 생성 (CREATE USER)
CREATE USER scott IDENTIFIED BY tiger;
CREATE USER [사용자명] IDENTIFIED BY [암호]
오라클 12c 버전부터 사용자명에 c##을 붙이지 않으면 오류가 발생할 수 있는데, 사용자명에 c##(c##scott)을 붙이거나 _oracle_script 설정을 true로 변경하면 해결할 수 있다. 아래의 오류 처리 방법을 참고하면 된다.
사용자 생성 후 시스템 권한이 부여 되어야 데이터베이스 로그인 및 테이블 생성이 가능하다.
SQL*Plus를 사용할 경우
sqlplus sys/oracle as sysdba
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
CREATE USER scott IDENTIFIED BY tiger;
사용자 생성 오류 처리 (오라클 12c 이상)
ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 65096. 00000 - "invalid common user or role name" *Cause: An attempt was made to create a common user or role with a name that was not valid for common users or roles. In addition to the usual rules for user and role names, common user and role names must start with C## or c## and consist only of ASCII characters. *Action: Specify a valid common user or role name. |
오라클 12.1 버전부터 멀티 테넌트 기능을 사용할 수 있다. 멀티 테넌트 기능을 사용하면 데이터베이스가 CDB(Container DB)로 동작한다. CDB에서 사용자를 생성할 때는 c## 접두어를 붙여야 에러가 발생하지 않는다.
CREATE USER c##scott IDENTIFIED BY tiger;
c## 접두어를 붙여서 사용자를 생성하면 오류가 발생하지 않는다.
_oracle_script 설정을 true로 변경하면 c## 접두어를 붙이지 않고 사용자를 생성할 수 있다.
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
CREATE USER scott IDENTIFIED BY tiger;
_oracle_script 설정을 true로 변경 후 c## 접두어를 붙이지 않고 사용자를 생성할 수 있다.
사용자 생성 상세 설정 (테이블스페이스 등)
CREATE USER scott IDENTIFIED BY tiger
DEFAULT TABLESPACE tblspace1 --테이블스페이스명
TEMPORARY TABLESPACE temp1; --임시테이블스페이스명
사용자 생성 시 테이블스페이스와 임시 테이블스페이스를 지정할 수 있다.
CREATE USER scott IDENTIFIED BY tiger
DEFAULT TABLESPACE tblspace1 --테이블스페이스명
TEMPORARY TABLESPACE temp1 --임시테이블스페이스명
QUOTA 10M on tblspace1 --tblspace1 테이블스페이스에 10M 사용가능
--QUOTA UNLIMITED ON tblspace1 --tblspace1 테이블스페이스 무제한 사용가능
PROFILE profile1 --사용자 프로필 지정
PASSWORD EXPIRE --사용자 최초 로그인 암호 재설정
ACCOUNT LOCK; --사용자 계정 잠금 또는 해제 (LOCK or UNLOCK)
위는 사용자 생성 시 사용할 수 있는 모든 옵션을 사용하여 생성하는 방법이다.
필요하지 않은 옵션의 라인은 제거 후 사용하면 된다.
사용자 삭제 (DROP USER)
DROP USER scott CASCADE;
DROP USER [사용자명] CASCADE
CASCADE 키워드를 사용하지 않고 DROP USER [사용자명]을 사용해도 되지만, 해당 스키마에 오브젝트가 존재하면 삭제할 수 없다. CASCADE 키워드를 사용하여 스키마에 속한 모든 오브젝트를 함께 삭제해야 한다.