[Oracle] SQL Plus, 초기설정, 계정생성, 권한부여

2021. 11. 27. 00:18Study/Database

1. SQL Plus 실행

기본 계정 : SYSTEM(대소문자 안가림) / 설치 시 입력한 비밀번호(대소문자 가림)

 

2. 기본 설정

ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;

이게 11g → 12c 로 넘어가던 시절에는 갑자기 시작부터 에러가 나서 멘붕이었던 기억이 난다.

 

분명 똑같이 CREATE USER 를 했는데 에러가남. ( ORA-65096 )

도대체 뭘까? 했었는데 12c 버전부터는 계정명 앞에 C##c## 와 같은 접미사(?)를 붙여줘야 했다.

(심지어 대소문자 구분까지 함. 세상불편....😣)

그래서 사용자 명이 C##USERNAME 같은 이상한 꼬라지가 되어버린다.

진짜 이 때 너무나 쇼크였던 기억ㅎㅎㅎ

어차피 이런 설정값 줘서 사용하게 할거면서 뭐하러 C## 이런건 붙인건지...🤔

지금 생각해봐도 이해 안되는 변화중 하나였던 것 같다.

 

아무튼 처음 한번만 설정해주면 11g 때처럼 C##을 붙이지 않고 계정을 생성할 수 있다.

12c 이상부터는 그냥 기본으로 하는 세팅이라고 보면 될 것 같다.

 

3. 계정 생성

CREATE USER USERNAME IDENTIFIED BY PWD;

계정을 생성하면서 권한을 줄 수도 있지만,

뭔가 SQL문이 길어지면 오타도 자주나고, 헷갈리는게 있어서

깡통 계정을 먼저 생성해 주는게 편한 것 같다.

IDENTIFIED 오타 안나는데 꽤나 오랜 시간이 필요했다. ㅋㅋㅋ

아직도 손에 적응이 안된다. 🙄

 

이미 생성된 사용자의 비밀번호를 변경하고 싶은 경우,

ALTER USER USERNAME IDENTIFIED BY CHANGE_PWD;

SYS계정이라면, 이전 비밀번호를 몰라도 변경이 가능하다.

 

4. 권한 부여

공식 사이트 가이드 문서에 보면 굉장히 많은 권한들이 존재한다.

한 20개정도면 다 정리해볼까 했는데,

생각보다 어마무시하게 많아서 정리하는건 나중에 기회될 때 해봐야겠다.

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/GRANT.html#GUID-20B4E2C0-A7F8-4BC8-A5E8-BE61BDC41AC3

 

SQL Language Reference

 

docs.oracle.com

 

하지만 다행스럽게도(?) 똑똑하신 많은 선배님들이

저 많은 권한들을 이미 다 분석하여 ROLE(역할) 에 맞게 다 분류를 해주셨다.

ROLE에서 정해준 권한 외에 추가 권한이 필요하다면,

그 때는 저 레퍼런스를 분석해볼만한 가치가 있을 것 같다.

 

원하는대로 구성해서 별도의 ROLE 을 만들 수 있지만,

사실 기본으로 제공되는 ROLE만 사용해도 웬만한 모든 기능은 사용할 수 있어서

DBA가 아닌 이상 ROLE에 관한 컨트롤까지는 관여할 일이 거의 없긴 하다.

알아둬서 나쁠 건 없으니 추후에 따로 정리해봐야겠다.

 

아무튼, 자주 사용하는 ROLE에는 CONNECT, DBA, RESOURCE 가 있다.

ROLE NAME DESCRIPTION
CONNECT 세션 생성, 테이블 CRUD 권한, 기본적인 DB 접속 권한
DBA 모든 시스템 권한 (사용자 CRUD, 세션관리, 테이블/인덱스/뷰/시퀀스 등 권한)
RESOURCE PL/SQL 생성 권한

참고로, 각 ROLE 별로 할당된 권한 정보는 SYS테이블에서 확인 가능함

SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'DBA'; // 조건에 조회하고 싶은 ROLE 이름

 

어쨋든, ROLE 로 깔끔하게 정리되어있는 권한들을 생성한 계정에 부여해 준다.

GRANT CONNECT, RESOURCE, DBA TO USERNAME;

 

이와 반대로, 줬던 권한을 해제할 수 있다.

REVOKE CONNECT, RESOURCE, DBA FROM USERNAME;