본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Node.js

NodeJs 오라클 연동 (NodeJs Oracle, Node.js Oracle, Oracle 연동)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 8. 14.

 

 

NodeJs에서 오라클연동은 참 하기도 싫고 재미도 없다. 왜 단순하게 사용 할 수 있게 안만든건지...

일단..모듈부터 설치한다.

npm install oracledb

 

설치하고 나서 돌아다니는 소스코드를 수정하여 실행하여 보았다.

var oracledb = require('oracledb');
var config = {
    user: "아이디",
    password: "비밀번호",
    connectString: "주소/xe"
}

oracledb.getConnection(config, (err, conn) =>{
    todoWork(err, conn);
});

function todoWork(err, connection) {
    if (err) {
        console.error(err.message);
        return;
    }
    connection.execute("select * from test", [], function (err, result) {
        if (err) {
            console.error(err.message);
            doRelease(connection);
            return;
        }
        console.log(result.metaData);  //테이블 스키마
        console.log(result.rows);  //데이터
        doRelease(connection);
    });
}    

function doRelease(connection) {
    connection.release(function (err) {
        if (err) {
            console.error(err.message);
        }
    });
}

위 소스코드가 아무 이상없이 잘 동작하는 사람들은 본인 컴퓨터에 오라클이 설치되어 있거나, 오라클 클라이언트가 이미 적용되어 있기 때문이다. 하지만 오류를 만나는 경우가 대부분..

 

아무튼, 별거 없는 소스코드인데..실행하니 아래사진처럼 오류가 났다.

네? 모듈 못찼겠어요..?

오류의 원인은 Node.js에서 제공하는 oracledb 이거 1개만으로는 동작하는 방식이 아니기 때문이다.

Node.js에서 제공하는 모듈 설치 말고도 또다른 작업을 해야된다..이럴꺼면 뭔가 한번에 설치 되도록 좀 해주지..

 

오라클에서 제공하는 오라클 클라이언트라는 프로그램을 다운로드 받아서 환경변수에 적용 해야되는 아주 귀찮은(?)일을 해야된다.

 

오라클 사이트로 가서 Oracle Instant Client Downloads 페이지에서 2가지 종류의 파일을 받아야 한다.

* 주소 : https://www.oracle.com/database/technologies/instant-client.html

 

1. SDK Package 라고 불리우는 압축 파일(파일 이름이 instantclient-sdk-..로 시작한다.)

2. Basic Package 라고 불리우는 압축 파일(파일 이름이 instantclient-basic-..로 시작한다.)

저기 다운로드를 클릭하면 다운로드 페이지로간다. 물론 로그인 해야 한다.(2020-01-09 기준 모습, 화면은 바뀔 수 있습니다.)

 

클릭하면 보이는 화면, 자신에게 맞는 운영체제를 선택하자.

 

sdk로 시작하는 파일과 basic으로 시작하는 파일을 다운로드 받자. 검색키를 활용해서 파일이름을 찾는 게 빠르다.

 

파일 명칭이 오라클 클라이언트 버전이 업데이트가 되면서 계속 바뀌므로 저런식으로 찾아주어야한다.

instantclient-sdk-..로 시작하는 파일 1개랑, instantclient-basic-..로 시작하는 파일 1개가 필요하다.

파일 2개를 받은 다음에 저 2개의 파일을 압축을 해제한다.

그리고 나서 압축이 풀린 2개의 디렉토리의 내용을 1곳으로 옮겨야한다. (더욱 귀찮아지고 있다..)

 

먼저 basic이라고 불리우는 곳 파일을 아래까지 이동해서 전부 복사하여 합칠 디렉토리에 옮겨둔다.

대략 여기까지의 내용을 몽땅 복사에서 옮길 디렉토리에 가져다 두자. 파일명칭은 다소 다를 수 있다.

 

다음으로 sdk라고 불리우는 폴더로 가서 아래 까지만 이동해서 복사해서 합칠 곳으로 옮겨두자.

요기다. 요기까지 와서 전체복사를 해서 옮길 디렉토리에 가져다 둔다.

 

아래 사진은 해당 2개의 압축파일을 각각 복사해서 1곳의 디렉토리에 놓아둔 모습이다.

디렉토리를 어디까지 복사해야되는지 알려주는(?)곳이 없어서 뭘 합쳐야하나...하고 삽질좀 했었다.

복사대상이 햇갈리면 안된다!

 

 

다시한번 확인하자!!!

1. basic이라고 불리우는 압축파일을 받아 압축을 푼 이후에 해당 내용을 전부 복사하여 옮겨놓은다.

2. sdk라고 불리우는 파일을 압축을 푼 이후에 sdk까지만 이동해서 basic을 옮겨놓은 디렉토리에 붙여넣는다.

 

완료된 해당 디렉토리를 환경변수에 추가한다.

해당 디렉토리를 환경변수에 추가!!

 

그리고나서 실행하면 잘된다!

이럴꺼면 그냥 압축파일1개만 받아서 되도록 만들지좀....

 

이후에 발생하는 오류의 대부분은 id 또는 비밀번호가 틀리거나, sid가 틀리거나, 오라클 외부접속이 허용되지 않거나등 3가지 정도의 문제라고 볼 수 있다.

 

오라클 연동이 안되는 경우 해결방법 내용을 정리하면,

1. npm을 활용해서 oracledb 모듈을 설치한다(npm install oracledb)

2. 오라클 클라이언트 파일 2개를 받는다. 

  * 주소 : https://www.oracle.com/database/technologies/instant-client.html

  1) Basic Package 라고 불리우는 압축 파일

  2) SDK Package 라고 불리우는 압축 파일

3. 받은 파일 2개를 1곳의 디렉토리에 압축을 풀어 놓는다.

  1) Basic Package 라고 불리우는 압축 파일은 전부!

  2) SDK Package 라고 불리우는 압축 파일은 sdk 이하 까지만!

4. 환경변수에 압축푼 디렉토리를 잡아준다.

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글