본문 바로가기
IT

오라클 타임스텐 파이썬(Python)으로 원격 접속 하기 - Client/Server Connection

by eddy's warehouse 2024. 4. 5.

Python에서 TimesTen에 대한 연결을 하는 방법으 direct connection과 client/server 연결 두 가지로 나눌 수 있습니다.
오늘은 Python 연결 문자열에 TNS 이름을 사용하여 원격 서버에서 client/server 연결로 접속하는 방법에 대해서 알아보도록 하겠습니다.

오라클 타임스텐 파이썬(Python)으로 원격 접속 하기 - Client/Server Connection 썸네일

Python에서 TimesTen에 대한 연결 구성하기

타임스텐의 오픈 소스 언어 지원은 OCI를 통해 이루어지므로, tnsnames 또는 쉬운 연결 명명 방법을 사용하여 Python에서 타임스텐에 연결할 수 있습니다.

오늘은 Python에서 Timesten에 연결하기 위해서 tnsname을 설정하고 실제 python을 통해 접속하는 예제를 보여드리겠습니다.

이러한 방법에 대해 더 자세히 알고 싶으신 분은 Oracle TimesTen 인메모리 데이터베이스 C 개발자 가이드의 "OCI에서 TimesTen 데이터베이스에 연결하기"에서 내용을 확인할 수 있습니다.

그러나, 이 문서를 통해서 더 쉽고 빠르게 따라하실 수 있습니다.

1. tnsnames을 통해 오라클 타임스텐에 연결하기 - tnsnames.ora 설정

TimesTen은 tnsnames 구문을 지원합니다. Oracle 데이터베이스 tnsnames.ora 항목을 사용하는 것과 동일한 방식으로 TimesTen tnsnames.ora 항목을 사용할 수 있습니다.

timesten client의 tns는 $TIMESTEN_HOME의 conf 디렉터리에 있는 timesten.conf에 기술되어있습니다.

저의 경우 오라클 19c가 설치되어있어서 해당 위치의 tnsnames.ora 파일을 가리키도록 되어있습니다.

~/ttInstall/ttclient/ttclient/conf$ cd $TIMESTEN_HOME
~/ttInstall/ttclient/ttclient$ cd conf/
~/ttInstall/ttclient/ttclient/conf$ cat timesten.conf
# TimesTen Instance Configuration File
# Created by ttInstanceCreate
# Commented values are default values
hostname=altibase-KVM
client_only=yes
timesten_release=22.1.1
instance_name=ttclient
admin_user=altibase
admin_uid=1000
group_name=altibase
instance_guid=0F98206A-50F5-4359-ABD4-1F068751DBE2
tns_admin=/home/ora19c/orahome/network/admin
verbose=1
ssl_fips_140=0
db_fips_140=0
max_conns_per_server=128
server_per_dsn=128


timesten.conf에서 가리키고 있는 tns_admin 디렉터리 하위에 있는 tnsnames.ora 파일을 편집합니다. tnsnames.ora에 작성하는 TimesTen 항목의 구문은 아래와 같습니다.

tns_entry = (DESCRIPTION =
              (CONNECT_DATA =
                (SERVICE_NAME = dsn)
                (SERVER = timesten_direct | timesten_client)))

위의 항목에서 SERVICE_NAME의 dsn은 client dsn을 입력하는 항목이며, Server는 direct connection의 경우 timesten_direct로 client/server 연결의 경우 timesten_client로 입력합니다.

예를 들어 저는 타임스텐 데이터베이스에 연결하기 위해 다음과 같은 tnsnames.ora 항목이 있을 수 있습니다. 그런 다음 코드에서 연결 문자열에 대해 TNS 이름인 tpcc_client_tns를 참조합니다.

tpcc_cs = (DESCRIPTION =
              (CONNECT_DATA =
                (SERVICE_NAME = tpccCS)
                (SERVER = timesten_client)))

참고로, tpccCS는 사용자 DSN 또는 시스템 DSN으로 설정된 Data Source Name입니다.

저의 경우 시스템 DSN에 아래와 같이 설정되어있습니다.

[ODBC Data Sources]
tpccCS=TimesTen 22.1 Client Driver

[tpccCS]
TTC_SERVER=altibase-KVM
TTC_SERVER_DSN=tpcc
UID=tpcc
PWD=tpcc

이 설정을 하는 방법에 대해서는 아래 링크에서 확인하실 수 있습니다.

우분투 리눅스에서 오라클 타임스텐 데이터베이스 DSN 설정하고 데이터베이스 생성하기

2. tnsnames을 통해 오라클 타임스텐에 연결하기 - python 코드

tnsnames.ora 항목에 timesten을 위한 tnsname을 설정하였으면 파이썬 코드에서는 해당 tnsname을 사용하기만 하면 됩니다.

이전에 타임스텐 파이썬을 이용해서 간단히 타임스텐 데이터베이스에 테이블을 생성하고 DML을 하는 예제를 살펴보았습니다.

오라클 타임스텐에서 파이썬을 이용해서 접속하는 방법은 아래 링크에서 확인할 수 있습니다.

파이썬(python)으로 오라클 타임스텐 데이터베이스 접속하고 DML 실행하기

오늘도 이전에 사용한 예제를 동일하게 사용하면서 connect 함수의 인자만 바꿔줍니다.

cx_Oracle.connect() 함수의 세번째 인자인 connect string을 방금 설정한 tnsname으로 바꿔서 넣어줍니다.

##
## simple.py
##
from __future__ import print_function
import cx_Oracle

def run():
  try:
    #connection = cx_Oracle.connect("tpcc", "tpcc", "test_host/tpccCS:timesten_direct")
    connection = cx_Oracle.connect("tpcc", "tpcc", "tpcc_cs")

    cursor = connection.cursor()
    cursor.execute("""
      CREATE TABLE employees(first_name VARCHAR2(20), last_name VARCHAR2(20))""")
    print("Table has been created")
    values = [["ROBERT", "ROBERTSON"], ["ANDY", "ANDREWS"], ["MICHAEL",
             "MICHAELSON"]]
    cursor.executemany("INSERT INTO employees VALUES (:1, :2)", values)
    print("Inserted ", len(values), "employees into the table")
    cursor.execute("""
      SELECT first_name, last_name FROM employees""")
    for fname, lname in cursor:
      print("Selected employee:", fname, lname)
    cursor.execute("DROP TABLE employees")
    print("Table has been dropped")
    cursor.close()
    connection.close()
    print("Connection has been released")

  except Exception as e:
    # Something went wrong
    print("An error occurred", str(e))

run()

위의 코드를 실행하면 다음과 같이 원격으로 oracle timesten에 접속해서 데이터베이스 작업을 수행합니다.

$ python3 simple.py
Table has been created
Inserted  3 employees into the table
Selected employee: ROBERT ROBERTSON
Selected employee: ANDY ANDREWS
Selected employee: MICHAEL MICHAELSON
Table has been dropped
Connection has been released

오늘은 오라클 타임스텐에 원격 접속을 통해서 파이썬으로 데이터베이스 작업을 하는 방법을 알아보았습니다.

facebook twitter kakaoTalk kakaostory naver band shareLink