[Oracle, macOS] 오라클 튜닝 에센셜 실습 환경 구성하기
들어가기 전에
이번 포스팅은 오라클 튜닝 에센셜(박찬권 저)을 읽으며 실습하기 위한 환경을 구성하는 포스팅입니다. 책의 경우 docker 환경이 아닌 것으로 보여 macOS에서 docker로 오라클을 설치한 후 실습하고자 합니다.
오라클이 설치되어 있다는 가정하에 진행하는 포스팅이므로, 오라클 설치가 되어있지 않다면 하기 포스팅을 먼저 참고하시기 바랍니다.
테이블 스페이스(TABLESPACE), 유저 생성(CREATE USER) 및 권한 부여(GRANT)하기
먼저, 테이블 스페이스, 유저 생성 및 권한을 부여하기 위해 sqlplus를 system 어드민 계정으로 접속하도록 하겠습니다.
테이블 스페이스 생성하기
실습 환경에서 사용한 오라클 버전은 11g R2 XE 버전이며 express 버전은 10G보다 큰 테이블 스페이스 생성이 불가능합니다. 따라서, 아래와 같이 10G로 테이블 스페이스를 생성하였습니다.
CREATE TABLESPACE MY_DATA DATAFILE 'MY_DATA01.dbf' SIZE 10G AUTOEXTEND ON;
사용자 생성 및 권한 부여하기
-- 사용자 생성(ID, PASSWORD 설정) 및 디폴트 테이블 스페이스 설정
CREATE USER dev IDENTIFIED BY "tester"
DEFAULT TABLESPACE MY_DATA
PROFILE DEFAULT
QUOTA UNLIMITED ON MY_DATA;
-- 권한 부여
GRANT connect, RESOURCE, DBA TO dev;
- dev라는 이름의 계정을 생성하였으며, 해당 계정의 비밀번호는 tester로 설정했습니다.
- dev 유저의 디폴트 테이블 스페이스는 MY_DATA이고 모든 권한을 부여하였습니다.
생성한 테이블스페이스 및 유저 확인하기
-- tablespace 확인
SELECT FILE_NAME, TABLESPACE_NAME, BYTES, STATUS FROM DBA_DATA_FILES;
-- user 확인
SELECT * FROM ALL_USERS;
실습용 테이블 및 데이터를 넣기 위한 sql 스크립트 수행하기(DataGrip, SQLPlus)
DataGrip을 통한 sql 스크립트 수행하기
오라클 튜닝 에센셜 실습용 실행 스크립트 중 2.sql의 경우 실습용 테이블 생성 스크립트입니다. 필자의 경우 해당 스크립트를 SQLPlus에서 수행하면 제대로 테이블이 생성되지 않아 DataGrip에서 수행하였습니다.
먼저, DataGrip에 접근하여 새로 생성한 계정으로 SQL console을 열 수 있도록 DataSource를 아래와 같이 추가합니다.
- Oracle이 1521 포트로 떠있다면, 51521이 아닌 1521 포트로 입력해주어야 합니다. Docker로 떠있는 Oracle 컨테이너가 host의 어떤 port로 떴는지에 따라 해당 설정이 달라집니다.
- User와 Password에는 앞서 설정한 계정 정보를 입력하면 됩니다.
Datasource를 추가한 후, 해당 datasource를 마우스 오른쪽 버튼으로 클릭 후 New를 눌러 Query Console을 누르시면 쿼리 작성이 가능합니다.
SQLPlus를 통한 sql 스크립트 수행하기
SQLPlus를 통해 sql 스크립트를 수행하기 위해서는, 먼저 docker 컨테이너 내에 스크립트를 작성한 후 sqlplus에서 해당 스크립트를 수행해야 합니다.
- docker 컨테이너 내에서 스크립트를 작성하기 위해서는 vim이 설치되어 있어야 합니다.
컨테이너를 생성할 때 따로 vim을 설치하지 않았다면 아래와 같이 컨테이너 환경에 접속(docker exec -it [컨테이너명] bash)했을 때 vim을 사용할 수 없습니다.
이때에는 아래와 같은 명령어를 통해 apt-get을 업데이트하고, vim을 설치해주어야 합니다.
apt-get update
apt-get install vim
참고 자료에 작성된 카페에서 sql문을 다운받아 해당 구문을 복사하여 vim으로 docker 컨테이너에 넣어주었습니다. 필요한 sql 스크립트를 모두 작성하였다면, 앞서 생성한 실습 계정(dev/tester)으로 sqlplus을 접속하여 실행합니다.