[Oracle] Tablespace & User생성 (feat. DBeaver)

2022. 8. 2. 16:09DB/Oracle

반응형

 

Oracle을 DBeaver와 연동한 후 Spring Boot에서 JPA를 사용하며 auto-ddl로 테이블을 생성했다. 헌데 도대체 내가 만든 테이블이 어딨는지를 찾을 수 없는 상황이 발생... 어떤 스키마에 어디서 만들어지고 있는건가..?

 

이에 자문을 구해본 결과, 따로 user를 생성하지 않고 system계정으로 테이블을 생성하는 아주 위험한 짓을 하고 있다는 진단을 받았다.

즉, root 계정으로 모든 것을 진행하고 있었다는 소리...

사용자를 만들어 권한을 주고, tablespace를 새로 만들어 안전한 곳에서 새출발을 해보도록 하자!

 

 

 Tablespace 생성

 

먼저 SQL Plus 창을 띄워보자. cmd에서 sqlplus를 입력해도 상관없다.

 

system / 설정해둔 비밀번호 입력

 

비밀번호를 까먹었다면 이 곳 링크를 참고해보자.

 

로그인이 완료됐다면 아래의 명령어를 통해 tablespace를 생성하자.

 

create tablespace 테이블스페이스명 datafile ‘[Oracle설치파일\oradata\ORCL\DATAFILE\저장할파일이름.dbf]’ size 50m autoextend on next 10m maxsize unlimited;

 

 

Oracle 설치 폴더 안의 oradata -> orcl -> datafile -> 안에서 만들 파일명을 지정하고, 확장자를 dbf로 설정한다.

뒤의 옵션의 경우 size는 50M , 만약 해당 공간을 벗어나면 자동으로 10M씩 늘리라는 뜻이다.

각자의 용량에 맞게 설정하면 된다.

 

필자의 경우 테이블 스페이스명을 ts_temp로, 파일 이름을 temp.dbf로 명명했다.

 

정말 생성되었는지 우리가 설정한 경로로 들어가 확인해보자.

필자가 만든 TEMP.dbf 파일이 생성된 것을 확인할 수 있다.

 

 

 사용자 생성 & 권한 부여

 

이제 사용자를 생성하여 방금 만든 테이블 스페이스를 지정해주자.

 

create user [유저이름] identified by [비밀번호] default tablespace [테이블 스페이스] quota unlimited on [테이블 스페이스] ;

유저 이름과 비밀번호는 각자 알아서 정해주고, 테이블 스페이스의 경우는 방금 만든 녀석을 적용해주면 되겠다!

 

중간에 quota 를 통해 사용자에게 해당 테이블스페이스의 사용량에 대한 권한을 주어야 한다. 그렇지 않으면 insert 같은 쿼리문이 실행되지 않음.. (위의 경우 제한을 아예 주지 않았다)

 

 

이제 권한을 부여하자.

 

grant dba to [유저이름];

 

본래 권한(ROLE)은 아주 종류가 다양하다. 이 포스팅에서는 관련 부분을 패스하고 이미 만들어져 있는 편리한 ROLE인 dba를 사용할것이다! 연습하는 용도로는 대게 dba를 사용한다. 물론 실무에서는 직접 권한을 세세하게 부여하겠지만..

 

권한과 종류에 대해 자세히 알고싶다면 아래 링크를 참고해보자.

https://www.oracletutorial.com/oracle-administration/oracle-grant/

 

An Essential Guide To Oracle GRANT Statement By Practical Examples

In this tutorial, you will learn how to use the Oracle GRANT statement to assign system and object privileges to a specific user.

www.oracletutorial.com

 

 

이제 권한 부여까지 끝났다!

DBeaver와 연동해보자. (없는 사람들은 다른 Oracle gui 툴을 사용해도 좋다)

 

 DBeaver 연동하기

 

 

새 데이터베이스 연결을 클릭하자.

 

 

방금 생성한 유저와 비밀번호를 입력하고 Test Connection을 눌러본다. 성공했다면 완료를 통해 연동해보자!

 

연결이 완료됐고, jimkwon 유저에 할당된 JIMKWON 스키마도 무사히 생성된 것을 확인할 수 있다. 테이블을 생성하면 해당 스키마 안에 들어갈것이다.

 

연동 끝!