Docker로 Oracle DB사용하기

Hoplin·2022년 10월 16일
2

이번학기 듣는 DB수업에서 Oracle DB를 사용하게 되었다.학교에서 제공하는 DB가 아닌 개인 연습용 DB를 만들기 위해 Oracle DB를 컨테이너로 띄워 사용하기로 하였다. 기본 컨테이너 띄우는 방법과 이후 권한설정에 대해 정리해보자.

Docker Image Pull 및 Run

docker iamges는 jaspeen/oracle-xe-11g를 사용할 예정이다

docker pull jaspeen/oracle-xe-11g

docker run --name (컨테이너 이름) -d -p 9000:8080 -p 1521:1521 jaspeen/oracle-xe-11g

1521 포트같은 경우 오라클 클라이언트가 DB와 최초 연결을 만들기 위해 사용하는 포트이며, 8080포트같은경우 Oracle DB의 접속 포트이다.

DB 접속하기

실행이 완료되었으면, bash 쉘로 컨테이너에 접속을 해야한다. SQLPlus를 이용해서 로그인이 바로 안되기 때문에 추가적인 설정이 필요하다.

docker exec -it (컨테이너 이름) bash

그 후 sqlplus 명령어를 입력하여 Oracle DB에 접속해준다

sqlplus / as sysdba

초기 계정같은 경우에는 user-name은 system이고 password는 oracle이다. 그 후 sys계정으로 다시 로그인한다. password는 동일하게 oracle이다.

SQL> conn sys as sysdba

유저 생성 및 권한 부여

우선 자신이 사용할 계정을 생성해준다.다만 password에 특수기호는 안되는듯 하였다.

SQL> create user (id) identified by (password);

그 후 생성한 id에 권한을 부여해 주어야 한다. 부여할 수 있는 권한은 아래와 같다

권한설명
create user유저 생성 권한
select any table모든 유저의 테이블 조회 권한
create any table모든 유저의 테이블 생성 권한
create session데이터베이스 접속 권한
create table테이블 생성 권한
create view뷰 생성 권한
create proced user프로시저 생성 권한
create sequence시퀸스 생성 권한
sysdba데이터베이스 관리자 최고권한
sysoper데이터베이스 관리자

위 권한에서 하나씩 나열하는 형태로 권한을 줄 수도 있다.이 외에도 지정된 Role 그룹이 있다.

Role Group설명
connectOracle DB에 접속할 수 있는 권한으로, create session이 들어있는 Role이다.
resource모든 테이블, 뷰 등을 생성,삭제등 할 수 있는 권한이다.(리소스와 관련된 권한들 모두 포함)
dbaDB에 대한 전반적인 권한을 가질 수 있다.

권한을 주기위해서는 grant 명령어를 사용해준다.

SQL> grant (위 권한들중 부여하고자 하는 권한 혹은 Role Group 나열) to (id);

지금 같은 경우에는 단지 연습용이니까 내 계정에 connect,resource,dba 모두 부여하였다

SQL> grant connect,resource,dba to hoplin;

SQL Plus를 이용해서 Oracle DB접속하기

모든 설정을 완료하였으니, SQLPlus명령어를 이용해서 oracle db에 접속해본다. 우선 컨테이너에서 나온다.

SQLPlus는 PL/SQL(오라클에서 SQL문을 이용해 프로그램을 작성할 수 있도록 작성해놓은 Procedure Language이다.)을 해석하여 Oracle DB와 상호작용할 수 있게 해주는 툴이다.

docker exec -it (컨테이너 이름) sqlplus

아래와 같이 잘 접속되는것을 볼 수 있다.

profile
더 나은 내일을 위해 오늘의 중괄호를 엽니다

1개의 댓글

comment-user-thumbnail
2023년 1월 2일

감사합니다..

답글 달기