[Oracle] 12c docker 구축 및 Python 연동 Develop Tip

지난번 MSSQL의 docker 구축에 이어, 오라클도 구축해 보았습니다.
지난 주말 내내 시도를 해 보다가 겨우 솔루션을 찾았습니다.
우선 많은 docker 관련 작업들이 있었는데, 최근에 대부분
해당 docker image 들이 모두 삭제된 것으로 보입니다.
이유는 아무래도 불법 소프트웨어에 가장 민감하게 대처하는 듯한
Oracle 이기 때문에 그렇지 않을까 싶네요.

우선 쉬운 거을 찾았다가 다들 실제 없어진 이미지를 보고는 정식 버전을 설치해 보기로 했습니다.
hub.docker.com 에서 oracle로 검색하여 나온 것을 누르고,

일반 적인 것과 달리, "Proceed to Checkout"을 선택하고

해당 정보들을 넣고 "Get Content"를 누릅니다.

그러면 위에 처럼 나옵니다. 이를 docker-compose.yaml 로 적용하려고,

version: "3"
services:
  db:
    image: store/oracle/database-enterprise:12.2.0.1
    volumes:
      - ${PWD}/dhv/oracle:/ORCL
    ports:
      - 8080:8080
      - 1521:1521

의 내용을 저장한 다음 우선, 맥북프로에서 적용을 해 보니 아주 잘 되었습니다.
최초에 약 십여분 이상 작업을 많이 합니다.

그런데, 동일한 작업을 Photon OS 에서 작업을 해 보니,

위와 같은 오류 메시지를 띄우며 제대로 올라오지 않았습니다.

혹시나 해서 우분투 서버에 docker를 설치하고 시도해 보아도 비슷하게 오류 메시지를 발생하며 제대로 
동작하지 않았습니다.

이것 저것 찾아서 시도를 하다 드디어 성공한 것은,


하는 방법은 비교적 쉽습니다. (Photon OS 에서 작업하였습니다. HDD만 32G 정도를 확보해 놓았네요)

1) 우선 위의 사이트에서 git으로 소스를 받아옵니다.

2) 받아온 폴더로 들어가서 다음의 파일을 다운로드 합니다.

우선은 라이센스 덕분에 다음의 다운로드 사이트에 들어가서, 오라클에 로그인 한 다음

위와 같은 파일을 다운로드 받습니다. (linuxx64_12201_database.zip 라는 이름 입니다)

3) 다음과 같이 해당 image를 생성합니다. (public으로 올리면 안되고 로컬에 만듧니다)

docker build --force-rm=true --no-cache=true --shm-size=1G -t oracle12c-ee .

라고 하면 약 20분 정도 돌면서 이미지를 생성합니다. (적어도 20G 의 하드 용량 필요)

위와 같은 이미지가 생성되었습니다.

4) 다음과 같은 docker-compose.yaml 을 준비합니다.

version: "3"
services:
  db:
    image: oracle12c-ee
    volumes:
      - ${PWD}/dhv/oracle12c-ee:/opt/oracle/oradata
    ports:
      - 5500:5500
      - 1521:1521
    environment:
      - ORACLE_SID=orcl
      - ORACLE_PWD=orcl_01
      - ORACLE_MEM=3000

그리고 위에 작업할 볼륨 영역의 uid:gid를 다음과 같이 설정합니다.

chown -R 54321:54321 ${PWD}/dhv

5) 최초 실행
docker-compose up
을 하면 최초 작업시 DB를 준비합니다.

이 다음부터는 빨리 동작합니다.
1521를 photon 방화벽에 추가해 주었습니다.

6) 접속 확인 - 컨테이너 내부

docker-compose exec db bash
라고 하면 해당 컨테이너로 접속됩니다.

그 다음,

cd $ORACLE_HOME
bin/sqlplus sys/orcl_01@//localhost:1521/orcl as sysdba

라고 접속하면 잘 접속되는지 확인합니다.

7) 접속 확인 - 외부

최초 접속이 잘 되는지 확인하려고,
외부에서 접속해 봅니다.

역시 오라클에서 다운받을 수 있는 SQL DEVELOPER를 실행시키고,

SSH 터널링으로 연결하고 패러렐즈 윈도우에서 접속을 해서 IP와 포트가 1521에서 11521 로 바뀌었지만,
해당 Photon OS IP와 1152 포트로 접속하면 됩니다.

위와 같이 접속해 보면 잘 됩니다. (여기까지 OK~)

8) 파이썬 접속 (윈도우에서)
이제는 파이썬 접속을 해 봅니다.
파이썬 공식 접속 모듈은 cx_Oracle 입니다.

설치는

pip install -U cx_Oracle

로 설치됩니다.
그리고 다음과 같은 접속 테스트 프로그램을 작성합니다.


import cx_Oracle
connection = cx_Oracle.connect("sys/orcl_01@//10.211.55.2:11521/orcl",
                               mode=cx_Oracle.SYSDBA)

cursor = connection.cursor()
cursor.execute("""
SELECT
  table_name
FROM
  user_tables
ORDER BY
  table_name""")
for tname in cursor:
    print("Table: ", tname)

최초로 돌리는데 어떤 dll이 빠진것 같아 찾아보니,

다음 Instant Client 라는 것을 설치해야 하네요.

위에 것을 다운받아 dll이 있는 위치에서, 위에 파이썬 프로그램을 돌렸더니, 잘 실행됩니다.
(나중에는 실행될 곳 또는 PATH에 잘 포함시켜 놓아야 할 듯 합니다)


어느 분께는 도움이 되셨기를 ..

핑백

덧글

댓글 입력 영역

구글애드텍스트