본문 바로가기
Tech/Containers

SQLPLUS를 Docker를 사용해서 접속하기

by 타이호 2019. 6. 28.
반응형

sqlplus를 사용하기 위해서는 오라클 리눅스 환경이 필요하고, 설치 등 복잡한 일들이 많이 있다. 그래서 docker를 이용하여 sqlplus를 사용하는 방법을 정리해본다.

 

1. Docker 설치

이전에 포스트 한 오라클 리눅스의 docker설치를 참조하자

https://www.kangtaeho.com/85

 

2. OracleInstantClient

오라클에서 제공하는 client를 설치한다. Docker file은 아래 github에서 제공한다.

https://github.com/oracle/docker-images/tree/master/OracleInstantClient

 

3. Dockerfile

위의 dockerfile을 가지고 빌드를 해야 한다. 참고로 dockerfile은 아래와 같다

 

build는 아래 명령어를 사용한다. 여기에서는 18버전을 사용해본다.

docker build -t oracle/instantclient:18 .

 

빌드가 완료되고 나면 아래와 같이 이미지를 로컬에 생성하게 된다.

 

4. Database 접속하기

오라클 데이터베이스 접속은 이러한 방식으로 docker를 수행하면 접속이 된다.

docker run -ti --rm oracle/instantclient:18 sqlplus hr/welcome@example.com/pdborcl

 

5. ADW Database 접속하기

Oracle Autonomous 데이터베이스인 ADW로 접속하기 위해서는 Wallet파일이 필요하다.

Wallet은 ADW Console에서 다운을 받을 수 있고 압축을 풀면 tnsnames.ora파일이 존재한다.

그리고 Dockerfile에 아래 wallet의 파일들을 넣어서 빌드하던지, 아니면 Wallet파일이 있는 곳을 마운트 한다.

COPY ./Wallet_db0526 /Wallet_db0526

그리고 WALLET을 통해 접속을 하기 위해서는 아래와 같이 sqlnet.ora파일을 변경한다.

mv $TNS_ADMIN/sqlnet.ora $TNS_ADMIN/sqlnet.ora.bak

echo ‘WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY=”월렛위치”)))’ >> ./sqlnet.ora

echo 'SSL_SERVER_DN_MATCH=yes' >> ./sqlnet.ora

 

그리고 나서 COPY를 사용할 경우 docker를 다시 빌드해야 한다.

 

마지막으로 수행하기 위해서는 아래와 같이 환경변수와 tnsname을 넣어서 sqlplus를 실행한다.

 

sudo docker run -ti --rm -e "TNS_ADMIN=/Wallet_db0526" oracle/instantclient:18 sqlplus admin/비번@db0526_high

이렇게 볼륨을 attach 할 수 있다.

혹은 docker run -ti --rm -v /경로/Wallet/Wallet_db0526/:/Wallet oracle/instantclient:18 sqlplus db0526_high

만약 procedure를 실행하기 위해서는 파일로 저장한다음(filename.sql) sqlplus로 접속한 뒤 아래와 같이 수행하면 된다.

SQL>  @/Wallet_db0526/import.sql







반응형