반응형
개요
오라클 클라우드의 Free tier 에서 사용할 수 있는 "오라클 자율운영 DB" 를 파이썬을 통해 컨트롤 하는 방법에 대해 정리한다.
사전준비
- 오라클 자율운영 DB
- 파이썬 개발환경 (python 3.8)
- 인스턴스 전자지갑 압축파일
환경구성
1. cx_Oracle 패키지 설치
기본적으로 파이썬만 설치되어 있는 환경이라고 가정한다.
참고 링크 : https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html
# 1. install pip (you can skip if installed)
curl https://bootstrap.pypa.io/get-pip.py | python3
# 2. install cx_Oracle
python3 -m pip install cx_Oracle --upgrade
아래 처럼 성공 메시지가 나오면 된다.
Defaulting to user installation because normal site-packages is not writeable
Collecting cx_Oracle
Downloading cx_Oracle-8.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (891 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 891.5/891.5 kB 23.3 MB/s eta 0:00:00
Installing collected packages: cx_Oracle
Successfully installed cx_Oracle-8.3.0
2. instantclient 설치
Oracle instantclient 라이브러리를 다운받아 설치한다. (다운 링크)
압축을 특정 경로에 해제한 후 압축 해제한 디렉터리의 network/admin 경로에 인스턴스 전자지갑 압축을 해제한다.
# 인스턴트 클라이언트 라이브러리 설치
mkdir ~/oracle/
mv instantclient-basic-linux.x64-21.7.0.0.0dbru.zip ~/oracle/
cd ~/oracle
unzip instantclient-basic-linux.x64-21.7.0.0.0dbru.zip
# 인스턴스 전자지갑 압축파일 wallet.zip
mv wallet.zip oracle/instantclient_21_7/network/admin/
cd oracle/instantclient_21_7/network/admin/
unzip wallet.zip
# libaio1 설치
sudo apt install libaio1
# 설정 등록
sudo sh -c "echo ~/oracle/instantclient_21_7 > /etc/ld.so.conf.d/oracle-instantclient.conf"
echo "export LD_LIBRARY_PATH=~/oracle/instantclient_21_7:$LD_LIBRARY_PATH" >> ~/.bashrc
echo "export PATH=~/oracle/instantclient_21_7:$PATH" >> ~/.bashrc
source ~/.bashrc
소스코드
# HOME_DIR="/home/username/" # Set home dir
LIB_PATH=HOME_DIR+"oracle/instantclient_21_7/"
WALLET_KEY=LIB_PATH+"network/admin/tnsnames.ora"
# USER_ID="userid" # Set user id
# USER_PW="userpw" # SEt user pw
def read_lines(file_path) :
lines = []
f = open(file_path)
lines = f.readlines()
f.close()
return lines
def get_tns_name() :
lines = util.read_lines(WALLET_KEY)
return lines[0].split(' ')[0].strip()
def connect_oracle() :
dns_name = get_tns_name()
cx_Oracle.init_oracle_client(lib_dir=LIB_PATH)
print(dns_name)
connection = cx_Oracle.connect(user=USER_ID, password=USER_PW, dsn=dns_name)
cursor = connection.cursor()
cursor.execute("select * from ALL_ALL_TABLES")
res = cursor.fetchall()
for row in res:
print(row)
connect_oracle()
위 예제를 실행 시 Oracle DB 에 있는 전체 테이블을 조회할 수 있다.
반응형
'개발 노트 > Etc.' 카테고리의 다른 글
[개발환경] 오라클 자율운영 DB 접속 (w/ SQL Developer) (0) | 2022.09.25 |
---|---|
[개발환경] WSL Go 설치 및 VSCode 설정 (1) | 2022.09.25 |
[CI/CD] Github Actions 로 SSH 사용하여 CD 하기 (0) | 2022.07.26 |
[Node] Express, helmet 라이브러리 ALLOW-FROM ALL (0) | 2022.02.07 |
[API] 재무제표 및 ROE 조회 API (0) | 2021.07.08 |