이번학기 듣는 DB수업에서 Oracle DB를 사용하게 되었다.학교에서 제공하는 DB가 아닌 개인 연습용 DB를 만들기 위해 Oracle DB를 컨테이너로 띄워 사용하기로 하였다. 기본 컨테이너 띄우는 방법과 이후 권한설정에 대해 정리해보자.
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의 접속 포트이다.
실행이 완료되었으면, 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 | 설명 |
---|---|
connect | Oracle DB에 접속할 수 있는 권한으로, create session이 들어있는 Role이다. |
resource | 모든 테이블, 뷰 등을 생성,삭제등 할 수 있는 권한이다.(리소스와 관련된 권한들 모두 포함) |
dba | DB에 대한 전반적인 권한을 가질 수 있다. |
권한을 주기위해서는 grant
명령어를 사용해준다.
SQL> grant (위 권한들중 부여하고자 하는 권한 혹은 Role Group 나열) to (id);
지금 같은 경우에는 단지 연습용이니까 내 계정에 connect
,resource
,dba
모두 부여하였다
SQL> grant connect,resource,dba to hoplin;
모든 설정을 완료하였으니, SQLPlus명령어를 이용해서 oracle db에 접속해본다. 우선 컨테이너에서 나온다.
SQLPlus는 PL/SQL(오라클에서 SQL문을 이용해 프로그램을 작성할 수 있도록 작성해놓은 Procedure Language이다.)을 해석하여 Oracle DB와 상호작용할 수 있게 해주는 툴이다.
docker exec -it (컨테이너 이름) sqlplus
아래와 같이 잘 접속되는것을 볼 수 있다.
감사합니다..