Database
데이터베이스란 데이터의 집합소를 말한다. 여러 사람들이 공유하여 같이 사용하고 수정하고 처리하는 데이터들이 조직적으로 모여있는 하나의 집합체라고 할 수 있다.
데이터베이스를 이용하는 이유는 실시간으로 접근해서 원하는 데이터를 읽고 쓰기 위해서이며, 이를 통해 최신 데이터를 유지하기도 한다.
그리고 그 특징으로는 사용자간의 동시 공유, 원하는 데이터를 주소가 아닌 내용으로 참조할 수 있으며, 논리적으로 독립되어있다.
데이터베이스도 수많은 종류로 나뉜다. 계층형, 네트워크형, 관계형, 객체지향형 등 많은 모델 중에 우리는 가장 보편적인 관계형 모델을 사용할 것이다. 관계형 데이터베이스는 키(Key)와 값(Value)로 이루어진 데이터를 행렬로 구성한 테이블 구조로 이루어진 모델이다. SQL을 사용하여 데이터를 관리한다는 특징이 있다. 대표적인 관계형 모델은 MySQL, Oracle, MariaDB가 있는데, 우리는 Oracle을 다룰 예정이다.
Oracle Database Express Edition 설치
현재 과정이 WindowsOS를 위주로 교육이 진행되고 있어서 MacOS 사용자에게 주어진 매뉴얼이 없어서 많이 해멨다. Oracle은 MacOS를 정식 지원하지 않기 때문에 공식 웹사이트에서 다운로드를 받아 설치하는 것이 불가능했다. 거기에 내가 쓰고 있는 ARM아키텍쳐 기반의 M1 MacOS에서는 기존 인텔 MacOS에서 작동되던 방법도 불가능해졌다. 다행히도 구글링을 통해 이를 우회하는 방법이 있다는 사실을 배웠고, 이를 통해 성공적으로 데이터베이스를 구성할 수 있었다. 내가 사용한 방법에 대해 잘 이해가 안된 상태이며, 매뉴얼을 보고 따라한 것이 전부인 점을 참고하고 읽어보시기 바란다.
아래 블로그를 참고하여 설치를 진행했다: https://shanepark.tistory.com/400
Oracle Database는 Enterprise용을 사용하려면 결제를 해야하기 때문에 교육/체험용으로 배포된 Express Edition을 설치해야한다.
맨 처음으로 사용한 방법은 오라클 클라우드에 도커를 이용해 DB를 띄워놓고 사용하는 방법이다. 하지만 인터넷이 없으면 접근할 수 없다는 단점과 쿼리문을 날리고 적용되는데까지 시간이 조금 걸린다는 점때문에 다른 방법을 찾다가 위 블로그에 다다랐다.
우리는 오픈소스 컨테이너 런타임인 colima를 사용해 oracle-xe이미지를 x86/64환경으로 띄운다면 M1 로컬환경에서도 실행가능하다.
아래 나오는 내용은 본인도 완전히 이해하지 못 했지만 잘 따라했기 때문에 성공했다고 생각한다.
우리의 목표는 Oracle Database를 localhost:1521에 연동시키는 것임을 숙지하고 넘어가자.
Docker, Colima 설치
우선 도커라는 것을 이용할 것이다. 도커의 작동방식은 모르지만, 본인은 도커에 컨테이너를 띄워 그 안에서 데이터베이스가 생성된다고 이해했다. 도커를 설치하려면 터미널에 아래 코드를 실행하자:
brew install --cask docker
설치가 완료되면 런치패드에 고래모양의 docker 아이콘이 보일 것이다.
도커를 설치하면 아래처럼 실행이 될 텐데, 우리는 터미널로 실행시킬 예정이기 때문에 docker desktop을 종료시켜주면 된다.
그 다음으로 도커를 x86/64로 실행시켜줄 colima 또한 설치해보자. 터미널에 :
brew install colima
여기까지 컨테이너를 만드는 docker와 그 컨테이너를 실행시키는 colima의 준비가 끝났다.
Colima 실행
이제 colima를 실행시켜보자. docker desktop에서 oracle-xe 이미지를 컨테이너를 띄웠을 때, M1과 아키텍쳐가 달라서 충돌이 일어났었는데 이를 해결해주는게 colima의 역할이다.
colima start --memory 4 --arch x86_64
조금 기다리면 INFO[0000] done 이라고 뜨며 실행이 완료된 것을 볼 수 있다.
colima가 docker 엔진을 잘 실행시키는지 확인하기 위해 docker ps 를 쳐보면 컨테이너 목록이 뜨는 것을 확인할 수 없다.
지금 단계에선 목록에 아무것도 없는것이 정상이다.
이제 Oracle Database의 이미지로 서버를 띄울 차례다. PASSWORD= 다음에는 각자 원하는 비밀번호를 넣자.
docker run -e ORACLE_PASSWORD=pass -p 1521:1521 -d gvenzl/oracle-xe
해당 oracle-xe 이미지는 목록에 없기 때문에 pull해와서 설치를 할 것이기 때문에 시간이 조금 걸릴 것이다.
설치가 끝나면 docker ps 를 통해 컨테이너 목록에 방금 설치한 컨테이너를 확인할 수 있을 것이다.
맨 처음 생성하게 되면 NAMES에 임의의 이름으로 설정되어 있을 것이다. 앞으로 해당 데이터를 이름으로 호출할거니까 이름을 바꿔주자.
docker rename -생성된이름- oracleDB
다음 단계는 로그를 통해 컨테이너가 제대로 실행되어서 데이터베이스를 사용할 수 있는 상태인지 확인하는 단계다.
docker logs -f oracleDB
Database mounted. 컨테이너가 제대로 띄워졌음을 확인하고,
DATABASE IS READY TO USE! 라고 뜬 것을 확인하면 준비가 완료된 것이다.
해당 로그는 CTRL+C로 종료해주자.
SQL Plus 실행, SCOTT 계정 생성
이제 데이터베이스도 실행되고 있으니 SQL Plus를 실행해서 쿼리문을 날려보자.
docker exec -it oracleDB sqlplus
sqlplus를 실행하게 되면 user-name과 password를 입력하라고 나오는데, 각각 system과 컨테이너 생성할때 각자 적었던 비밀번호를 입력하면 연결된다. 잘 연결됐다면 터미널 마지막 줄에 SQL> 이 뜨며 우리가 만든 데이터베이스에 쿼리문을 날릴 수 있다.
앞으로의 실습할 계정을 만들기 위해서는 관리자권한으로 접속해야한다.
SQL> conn sys/oracle as sysdba
Connected. 가 뜬 것을 확인한 후에 SCOTT 계정을 생성해보자.
SQL> CREATE USER scott IDENTIFIED BY tiger;
scott이라는 user-name과 tiger라는 password를 가진 계정을 생성했다. 이렇게 막 만들어진 계정은 아무런 권한이 없기 때문에, 우리가 실습을 진행할 테이블정도는 만들 권한을 부여하자.
SQL> GRANT CONNECT, RESOURCE, DBA TO scott;
참고로 SQL문은 끝에 ; 세미콜른이 붙어야 하나의 명령으로 인식한다.
이제 scott 계정으로 접속해서 실습할 테이블을 만들어보자.
quit 으로 system 계정에서 로그아웃하고 다시 sqlplus를 실행한 후 scott계정으로 접속하자.
**터미널에서는 위 방향키를 누르면 이전에 실행한 명령어 히스토리를 불러올 수 있다.
실습 테이블 생성
위 파일을 다운받아서 txt나 vscode로 열면 테이블 생성문이 있는데, 이를 처음부터 COMMIT; 까지 복사해서 SQL 명령문에 입력하자.
테이블 생성이 완료되면 아래 명령문을 통해 잘 만들어졌나 확인할 수 있다.
SQL> SELECT * FROM emp;
emp 테이블의 모든 행을 불러오는 명령어다. 그러면 터미널에 표가 여러개 나타날 것이다.
이제 실습할 준비가 완료됐다.
터미널은 실행의 기초가 되는 창으로 다른 프로그램으로 조작하는 모든 것은 이 터미널을 통해서 할 수 있다.
하지만 가시성이 떨어지고 입문자 입장에서 테이블을 파악하기 어려운 부분이 있기 때문에 우리는 좀 직관적으로 표를 만질 수 있는 프로그램 DBeaver를 사용할 것이다. 거의 다 왔으니 조금만 더 힘내보자.
DBeaver 설치
DBeaver또한 homebrew로 설치가 가능하다.
brew install --cask dbeaver-community
설치하면 이렇게 다람쥐같이 생긴 동물의 아이콘이 보일텐데 바로 실행시키자.
실행시키면 아래와 같이 빈 페이지가 나올 것이다. 우린 DBeaver를 이용해서 데이터베이스를 수정 및 관리를 한다고 이해하면 된다. 마치 eclipse를 이용해 java를 다룬 것 처럼.
이제 DBeaver에 방금 만든 데이터베이스를 연결해보자. 왼쪽 위에 있는 콘센트플러그+ 모양 아이콘을 클릭하자.
이 모두가 DBeaver에서 지원하는 데이터베이스 종류들이다. 우린 Oracle로 만들었으니 Oracle을 선택하자.
가장 중요한 부분이다. 우리가 채워야할 부분은 이렇게 빨간 부분들이다.
Database에는 xe를 넣고, scott과 tiger를 입력하고 Connection details를 눌러서 이름을 scott으로 바꿔주자.
필요한 내용을 모두 적었다면 왼쪽 아래 Test Connection을 눌러서 잘 연결되나 확인해보자.
이 화면이 나왔다면 성공한 것이다! 짝짝~
이제 연결 목록에서 scott을 눌러주고 우리가 생성한 테이블이 잘 있는지 다시 확인해보자.
이로써 M1 환경에서 Oracle Database를 생성하고 DBeaver를 통해 SQL문 실행 및 테이블 관리할 수 있도록 세팅했다.
필자는 현존하는 M1 맥북 중 가장 낮은 스펙인 M1 맥북에어 8램/256GB 모델을 사용했으니 사양때문에 실행하지 못하는 경우는 없을거라고 확신한다.
'Database' 카테고리의 다른 글
11.17.(목) OracleDB(5): 데이터 정의어 (0) | 2022.11.20 |
---|---|
11.16.(수) OracleDB(5): 데이터 조작어(2) (0) | 2022.11.20 |
11.16.(수) OracleDB(4): 내장 함수(1) (0) | 2022.11.18 |
11.16.(수) OracleDB(3): 데이터 조작어(1) (0) | 2022.11.16 |
11.15.(화) OracleDB(2): SQL문 (0) | 2022.11.15 |