들어가기 전에
이번 포스팅은 오라클 튜닝 에센셜(박찬권 저)을 읽으며 실습하기 위한 환경을 구성하는 포스팅입니다. 책의 경우 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을 접속하여 실행합니다.
참고 자료
'DB > Oracle' 카테고리의 다른 글
[Oracle] 규칙에 따라 순번을 생성하는 시퀀스(Sequence) (0) | 2022.05.28 |
---|---|
[Oracle] Orange 단축키 (0) | 2022.05.24 |
[Oracle] 데이터를 추가/수정/삭제하는 데이터 조작어(DML) (0) | 2022.05.09 |
[Oracle] 조인(join) (0) | 2022.05.08 |
[Oracle] Oracle Function(오라클 함수) - GROUP BY절, HAVING절, 기타 그룹화 관련 함수 (0) | 2022.05.08 |