[Node.js] Oracle DB 연결하기

Programming/Node.js 2021. 8. 26. 16:12 Posted by 생각하는로뎅
반응형

  Oracle 연동을 위해, node js 에서는 두가지가 필요하다.

 

  - npm oracledb install

  - Oracle client pc 사양에 맞게 다운로드

 

 

 

1. Oracle Client PC 사양에 맞게 다운로드

 

  1) https://www.oracle.com/database/technologies/instant-client/downloads.html

 

  2) 위 사이트에 접속 후, 자신의 PC 사야에 맞게 다운로드한다. (압축 파일이다. 2021/08/26 기준)

 

접속이 불가능할 경우, https://www.oracle.com/database/technologies/instant-client.html 에 접속해서, Download 버튼을 누르면 진입이 가능하다.

 

  3) 다운로드 후, 압축을 해제한다. 그리고, 관리하기 편한 곳으로 이동시킨다. 필자는 C:\에 위치 시켰다.

필자는 C:\에 위치 시켰다.

 

 

 

2. oracledb 모듈 설치

 

> npm install oracledb

> oracledb@5.2.0 install C:\work\project\nodejs\test1\node_modules\oracledb
> node package/install.js

oracledb ********************************************************************************
oracledb ** Node-oracledb 5.2.0 installed in Node.js 12.18.3 (win32, x64)
oracledb **
oracledb ** To use node-oracledb:
oracledb ** - Oracle Client libraries (64-bit) must be available.
oracledb ** - Follow the installation instructions:
oracledb **   https://oracle.github.io/node-oracledb/INSTALL.html#windowsinstallation
oracledb ********************************************************************************

npm WARN saveError ENOENT: no such file or directory, open 'C:\work\project\nodejs\test1\package.json'
npm WARN enoent ENOENT: no such file or directory, open 'C:\work\project\nodejs\test1\package.json'
npm WARN test1 No description
npm WARN test1 No repository field.
npm WARN test1 No README data
npm WARN test1 No license field.

+ oracledb@5.2.0
updated 1 package and audited 114 packages in 1.285s
found 0 vulnerabilities

 

 

 

3. root / dbconfig.js 생성

 

module.exports = {
    user          :"DB ID",
    password      : "DB PASSWORD",
    connectString : "DB IP 또는 localhost:DB Port/Database Name",
    externalAuth  : false
};

 

 

 

4.  Node.js 가 실행될 파일에 oracledb 를 쓰겠다고 선언한다. 그리고, dbconfig.js 도 할당한다.

 

// database
const oracledb = require('oracledb');
const dbConfig = require("./dbconfig.js");

 

 

 

5. oracledb를 사용하기 위해서는 oracle client 위치를 설정해줘야한다. 1번에서 다운로드 받은 경로를 설정해준다.

 

// 초기화
function init() {

    //oracle client 경로 설정
    oracledb.initOracleClient({ libDir: 'C:\\instantclient_19_12' });
    
}

 

 

 

6. oracle db select를 해본다.

 

// DB Select
async function selectDatabase() {

    console.log("!!!!! db conenction !!!!!");

    let connection = await oracledb.getConnection(dbConfig);

    let binds = {};
    let options = {
        outFormat: oracledb.OUT_FORMAT_OBJECT   // query result format
      };

    console.log("!!!!! db select !!!!!");

    let result = await connection.execute("select * from PRD_PRD_M", binds, options);

    console.log("!!!!! db response !!!!!");
    console.log(result.rows[0]);

    console.log("!!!!! db close !!!!!");
    await connection.close();

}

 

 

 

7. 전체 소스

 

 

  - [Node.js] 간단히 서버 만들기 게시글에 적용된 소스이다.

 

const express = require("express");
const app = express();

// database
const oracledb = require('oracledb');
const dbConfig = require("./dbconfig.js");

// 서버 listen
const server = app.listen(3000, ()=> {

    console.log("Start serer : localhost:3000");

})

// __dirname : 현재 디렉토리
// page 경로 설정
app.set("views", __dirname + "/views");

// ejs(Embedded JavaScript templates) : html에서 javascript를 같이 쓸 수 있게끔 해주는 engine 이다.
app.set("view engine", "ejs");

app.engine("html", require("ejs").renderFile);

// 라우터 설정
app.get("/", function(req, res) {
    res.render("index.html")
});

app.get("/db", function (req, res){

    // DB Select
    selectDatabase();

    // 화면에 보여줄 txt
    res.send("execute!!!")

});

// DB Select
async function selectDatabase() {

    console.log("!!!!! db conenction !!!!!");

    let connection = await oracledb.getConnection(dbConfig);

    let binds = {};
    let options = {
        outFormat: oracledb.OUT_FORMAT_OBJECT   // query result format
      };

    console.log("!!!!! db select !!!!!");

    let result = await connection.execute("select * from PRD_PRD_M", binds, options);

    console.log("!!!!! db response !!!!!");
    console.log(result.rows[0]);

    console.log("!!!!! db close !!!!!");
    await connection.close();

}

// 초기화
function init() {

    //oracle client 경로 설정
    oracledb.initOracleClient({ libDir: 'C:\\instantclient_19_12' });
    
}

// 초기화
init();

 

 

8. 위 소스 접속 방법은 아래와 같다.

 

  1) 서버 실행

 

> node server.js

Start serer : localhost:3000

 

 

  2) 웹 페이지 접속

 

http://localhost:3000/db

[Node js 터미널 log]
Start serer : localhost:3000
!!!!! db conenction !!!!!
!!!!! db select !!!!!
!!!!! db response !!!!!
{
  실행 ROW 1 데이터 출력
}
!!!!! db close !!!!!

 

실행 결과

 

반응형