본문 바로가기

Cloud/Oracle Cloud Infrastructure

27. OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 - 데이터베이스 (DB 시스템연결2)

2019/01/17 - [Cloud/Oracle Cloud Infrastructure] - 26. OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 - 데이터베이스 (DB 시스템연결1)

5단계. 데이터베이스 구성

웹서버에서 오라클 클라이언트로 DB 시스템 연결

DB 시스템 로컬에서 SQL Plus 데이터베이스 상태를 확인해 봤다. 이번에는 웹서버에서 DB 서버로 접속 테스트를 보겠다.

웹서버와 오라클 데이터베이스의 통신은 오라클 리스너를 통해서 TCP 1521 포트로 이루어진다. 이를 위해 먼저 다음과 같이 데이터베이스 사용 시큐리티 리스트 “secListDB” 웹서버 서브넷(2)에서 오는 1521 포트 트래픽에 대한 Stateful Ingress 규칙을 추가한다.

Ingress / Egress

Source CIDR

IP 프로토콜

Source 포트 범위

Destination 포트 범위

Ingress

10.0.3.0/24

TCP

ALL

1521

Ingress

10.0.4.0/24

TCP

ALL

1521

 


시큐리티 리스트 설정이 끝나면 웹서버#1,2 root 권한으로 오라클 인스턴트 클라이언트를 설치한다. 먼저 YUM 레파지토리 정보를 최신 버전으로 것으로 다운로드 받는다.

    아래 내용은 오라클 리눅스 블로그 (https://blogs.oracle.com/linux/oracle-instant-client-rpms-now-available-on-oracle-linux-yum-servers-in-oci) 내용을 참조했다.

[opc@web1 ~]$ cd /etc/yum.repos.d/

[opc@web1 yum.repos.d]$ sudo mv public-yum-ol7.repo public-yum-ol7.repo.org

[opc@web1 yum.repos.d]$ export REGION=`curl http://169.254.169.254/opc/v1/instance/ -s | jq -r '.region'| cut -d '-' -f 2`

[opc@web1 yum.repos.d]$ sudo -E wget http://yum-$REGION.oracle.com/yum-$REGION-ol7.repo

--2019-01-11 04:18:54--  http://yum-iad.oracle.com/yum-iad-ol7.repo

Resolving yum-iad.oracle.com (yum-iad.oracle.com)... 129.213.70.49

Connecting to yum-iad.oracle.com (yum-iad.oracle.com)|129.213.70.49|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 17396 (17K) [application/octet-stream]

Saving to: ‘yum-iad-ol7.repo.1’

 

100%[================================================================================>] 17,396      --.-K/s   in 0s

 

2019-01-11 04:18:54 (161 MB/s) - ‘yum-iad-ol7.repo.1’ saved [17396/17396]

 

그리고, YUM 레파지토리 정보에 “ol7_oci_included” 옵션을 활성화한다.

[opc@web1 yum.repos.d]$ sudo yum-config-manager --enable ol7_oci_included

Loaded plugins: langpacks

========================================================================= repo: ol7_oci_included ==========================================================================

[ol7_oci_included]

async = True

:

:

username =

 

YUM list 명령으로 확인하면 현재 가용한 오라클 인스턴트 클라이어트를 있다.

[opc@web1 yum.repos.d]$ yum list oracle-instantclient*

Loaded plugins: langpacks, ulninfo

Installed Packages

oracle-instantclient18.3-basic.x86_64                                                       18.3.0.0.0-2                                                   @ol7_developer

Available Packages

oracle-instantclient12.2-basic.x86_64                                                       12.2.0.1.0-1                                                   ol7_oci_included

oracle-instantclient12.2-basiclite.x86_64                                                   12.2.0.1.0-1                                                   ol7_oci_included

oracle-instantclient12.2-devel.x86_64                                                       12.2.0.1.0-1                                                   ol7_oci_included

oracle-instantclient12.2-jdbc.x86_64                                                        12.2.0.1.0-1                                                   ol7_oci_included

oracle-instantclient12.2-odbc.x86_64                                                        12.2.0.1.0-1                                                   ol7_oci_included

oracle-instantclient12.2-precomp.x86_64                                                     12.2.0.1.0-1                                                   ol7_oci_included

oracle-instantclient12.2-sqlplus.x86_64                                                     12.2.0.1.0-1                                                   ol7_oci_included

oracle-instantclient12.2-tools.x86_64                                                       12.2.0.1.0-1                                                   ol7_oci_included

oracle-instantclient18.3-basiclite.x86_64                                                   18.3.0.0.0-1                                                   ol7_oci_included

oracle-instantclient18.3-devel.x86_64                                                       18.3.0.0.0-1                                                   ol7_oci_included

oracle-instantclient18.3-jdbc.x86_64                                                        18.3.0.0.0-1                                                   ol7_oci_included

oracle-instantclient18.3-odbc.x86_64                                                        18.3.0.0.0-1                                                   ol7_oci_included

oracle-instantclient18.3-precomp.x86_64                                                     18.3.0.0.0-1                                                   ol7_oci_included

oracle-instantclient18.3-sqlplus.x86_64                                                     18.3.0.0.0-1                                                   ol7_oci_included

oracle-instantclient18.3-tools.x86_64                                                       18.3.0.0.0-1                                                   ol7_oci_included

 

이번 테스트에서는 웹서버에서 데이터베이스로 SQL Plus 접속 테스트를 것이므로 sqlplus 버전의 오라클 인스턴트 클라이언트를 설치했다. 버전은 12.2 버전을 선택했다.

[opc@web1 yum.repos.d]$ sudo yum install oracle-instantclient12.2-sqlplus.x86_64 -y

Loaded plugins: langpacks, ulninfo

ol7_UEKR5                                                                                                                                           | 2.5 kB  00:00:00

:

:

Dependency Installed:

  oracle-instantclient12.2-basic.x86_64 0:12.2.0.1.0-1

 

Complete!

 

sqlplus 버전을 설치하면 basic 버전도 함께 설치된다.

[opc@web1 yum.repos.d]$ rpm -qa | grep oracle

oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64

oracle-logos-70.0.3-4.0.9.el7.noarch

oracle-cloud-agent-0.0.2-146.el7.x86_64

oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64

oraclelinux-release-7.6-1.0.15.el7.x86_64

 

웹서버#2 대해서도 위와 동일하게 오라클 인스턴트 클라이언트 설치 작업을 수행한다.

이제 웹서버에서 데이터베이스로 SQL Plus 이용해서 접속 테스트를 본다. 다음은 웹서버#1에서 테스트한 결과이다. 웹서버#2에서도 동일하게 테스트한다.

$ ssh -t -o ProxyCommand='ssh -i C:\\Users\\youjung\\.ssh\\id_rsa opc@129.213.62.228 -W %h:%p %r' -i C:\\Users\\youjung\\.ssh\\id_rsa opc@10.0.3.2

Last login: Tue Jan 15 02:10:28 2019 from bastion.subnetbs.dbappvcn.oraclevcn.com

[opc@web1 ~]$ hostname

web1

 

SQL Plus 실행을 위한 환경 변수 설정을 하고, SQL Plus 실행한다. 서비스 이름은 앞서 메모해 Pluggable 데이터베이스 “pdb1” 서비스 이름을 사용한다. 아래는 데이터베이스에 접속해서 현재 데이터베이스 상태와, 현재 세션 정보를 조회한 내용이다.

환경 변수 설정은 .bash_profile 저장해서 사용할 있다. 또한 아래는 easy connect 방식으로 SQL Plus 실행시 접속에 필요한 모든 정보를 기술했으나, tnsname.ora 파일을 만들고 tnsnames.ora 파일을 바라보는 환경 변수를 OS에서 지정해서 사용할 수도 있다. (Ex. export TNS_ADMIN=$ORACLE_HOME)

[opc@web1 ~]$ export ORACLE_HOME=/usr/lib/oracle/12.2/client64

[opc@web1 ~]$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib

[opc@web1 ~]$ export PATH=$PATH:$ORACLE_HOME/bin

[opc@web1 ~]$ sqlplus sys/xxxxxxxxxxxx@10.0.5.3:1521/pdb1.subnetdbp.dbappvcn.oraclevcn.com as sysdba

 

SQL*Plus: Release 12.2.0.1.0 Production on Tue Jan 15 03:41:40 2019

 

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

 

Connected to:

Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

 

SQL> select instance_name,status from v$instance;

 

INSTANCE_NAME    STATUS

---------------- ------------

oradbp           OPEN

 

SQL> select sys_context('USERENV','HOST'), sys_context('USERENV','IP_ADDRESS') from dual;

 

SYS_CONTEXT('USERENV','HOST')

--------------------------------------------------------------------------------

SYS_CONTEXT('USERENV','IP_ADDRESS')

--------------------------------------------------------------------------------

web1

10.0.3.2


작성자: 정영균 


OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 시리즈

1. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Intro

2. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN

3. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN

4. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (인터넷게이트웨이)

5. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (라우트테이블)

6. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (시큐리티리스트)

7. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (서브넷)

8. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버

9. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (시큐리티 리스트)

10. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (인스턴스)

11. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (웹서버 연결)

12. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (NAT 설정)

13. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버

14. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (rsync)

15. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정)

16. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정파일시스템)

17. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정파일시스템마운트)

18. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서

19. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (아파치웹서버)

20. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (로드밸런서생성)

21. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (백엔드서버)

22. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (리스너)

23. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스

24. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템)

25. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (데이터베이스구성)

26. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템연결)

27. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템연결)

28. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (백업)

29. OCI 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 – 데이터베이스 (DR 구성)