본문 바로가기
프로그래밍/python

datahub 버젼 업 후 old version oracle 데이터 미수집 문제

by W.C. 2024. 11. 20.
728x90

기존에 쓰고 있는 datahub가 우리가 쓰기에는 너무 무겁고 복잡하게 만들어져 있어서 이걸 작게 축소해서 우리 실정에 맞는 메타관리 프로그램을 만드는 중이다.

datahub가 정말 좋은 기능이 많고 활용도가 높지만 회사 내에서 이걸 활용하기에는 여러 정치적 문제와 활용을 하겠다는 의지가 윗선에서 없는 상태라서 설치 후 1년째 덩그러니 meta 데이터 수집을 몇 번 하다가 놀고 있다.

 

그래서 이럴꺼면 필요한 기능만 추려내서 신규로 만들어 볼까 해서 만들고 있는 중인데. 데이터 수집을 위한 meta 부분은 datahub cli를 그대로 이용해서 사용할려고 했다.

 

기존 datahub의 버전이 0.13.0 인데 신규로 만드는 김에 버전을 0.14.1.11(최신)으로 업데이트 해서 테스트를 진행했다. 그런데 기존에 0.13.0에서 잘 수집되던 oracle 쪽 데이터가 버전업 이후에는 수집이 안된다고 나왔다.

DPY-3010: connections to this database server version are not supported by python-oracledb in thin mode
Help: https://python-oracledb.readthedocs.io/en/latest/user_guide/troubleshooting.html#dpy-3010
(Background on this error at: https://sqlalche.me/e/14/e3q8)

 

위와 같은 에러를 내면서 말이다. 

해당 help 페이지를 가면 아래와 같은 문구가 있다.

 

결국 old version의 oracle에서는 해당 library를 지원하지 않는다고 나왔다. 기존 처럼 Oracle client을 설치하고 활용하려면 접속 부분에 oracledb.init_oracle_client() 코드를 추가 하면 된다고 하는데...

 

혹시나 해서 datahub 공식 홈페이지 문서에 가서 찾아 보았다.

 

그런데 홈페이지에는 Oracle instant Client를 사용해야 한다고 나와 있었다. 실제 적용 코드와 문서가 다르다?

 

음... 이럴땐 open source가 좋은게 소스를 보면 되니까 소스를 확인 해 보았다.

 

최신 git에서는 

 

 

이렇게 강제로 cx_Oracle library 사용을 oracledb library로 치환해 주고 있었다. 엇 그럼 실제 무슨 옵션 값을 추가 해서 선택을 해줄 수 있도록 해야 하는데... 이러면 old version 오라클DB를 쓰는 사람은 어쩌라는 거지라는 생각이 들었다.

 

그래서 이게 언제 적용된건지 확인을 하기 위해 가장 최신 release 된 버젼의 소스를 찾아 보았다.

 

0.14.1 버젼에서는 기존의 방식인 cx_Oracle library를 사용하고 있었다. 음 결국 선택지가 없었고 버전도

 

0.14.1.11 이냐 0.14.1이냐의 차이였다.

0.14.1.11은 또 정식 릴리즈 버전이 아니기 때문에 결국은 버전을 내려서 사용하기로 했다. 

 

python에서 oracle에 접속하기 위해서는 별도의 oracle instance를 컴퓨터에 설치해야만 했었다. 하지만 oracledb library는 그런 instance 없이 접속 할수 있는 보다 가벼운 library라고 하는데 회사 내 oracle들이 모두 예전 버전이라 딱히 테스트를 할수가 없다.

 

어째든 이런 해프닝으로 반나절 정도 허비하긴 했지만

 

나름 나쁘지 않았던 성과였던 것 같다.