The Pursuit of Happyness

반응형

예전에 node.js에서 Oracle DB를 연결해서 사용하는 프로젝트를 해봤었는데, Oracle 이 node.js 를 제대로 지원하지 못한다는 느낌을 강하게 받았었습니다.


그때는 node.js oracledb 모듈을 설치할 때, 컴파일 과정이 들어가면서 의존성이 있었기 때문에 은근히 번거로웠었는데, oracledb 2.0 부터는 그러한 과정들이 필요 없게되어서 상당히 편리해졌습니다.


다만 새로운 모듈의 특성상 Oracle 혹은 instant client 을 설치하고, 라이브러리 경로를 설정해 줘야지만 제대로 동작합니다. node.js oracledb 와 Oracle 혹은 instant client 의 설치순서는 상관이 없습니다. 런타임 시점에 라이브러리 경로만 인식되면 됩니다.


또 다른 장점으로는 상당히 많은 수정을 통해서 메모리 관리 등에서 훨씬 안정적인 모듈이 되었다는 것입니다.


--


이쯤에서 node.js oracledb 모듈을 설치해 보겠습니다.


테스트 환경은 CentOS 7.4.1708 , node.js 6.12.3 입니다.


1. 적당한 폴더를 생성합니다.

# mkdir test 


2. 폴더에서 node 프로젝트를 생성합니다. 프로젝트 정보는 적당히 입력합니다.

# npm init 


3. 다음 명령어로 oracledb 모듈을 설치합니다.

# npm install --save oracledb 

현재 2.0.15 버전으로 설치가 됩니다.


4. instant client 를 설치합니다. Oracle 다운로드 페이지에서 적당히 다운로드 받습니다.

http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

아래 명령어로 설치를 합니다.

# rpm -ivh  oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

혹은 yum install 명령어를 이용해도 설치가 됩니다.


5. 환경변수를 설정합니다.

# vi /etc/environment


다음의 두줄을 추가합니다 원래 instant client 만 설치할 경우 "/usr/lib/oracle/12.2/client64/network/admin" 경로는 존재하지 않는데, XE 등을 설치시의 tns 설정경로와 비슷하게 하기 위해서 "network/admin" 폴더를 생성해 주었습니다.

TNS_ADMIN=/usr/lib/oracle/12.2/client64/network/admin

LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib


6. tnsnames.ora 파일을 생성합니다.

# touch /usr/lib/oracle/12.2/client64/network/admin/tnsnames.ora 

생성한 파일을 편집해서 tns 정보를 입력합니다.


7. oracledb에 연결해서 테스트하는 예제들 입니다.

https://github.com/oracle/node-oracledb/tree/master/examples


webapp.js 나 webapppromises.js 파일을 참조하시면 pool 설정 등에 대한 예시를 볼 수 있습니다.



반응형