본문 바로가기

프로젝트

Node.js 로 Oracle Cloud DB 접속하여 쿼리문 실행하기

 

 

 

 

 

Node.js 파일에서 Oracle Cloud DB 에 접속하여 쿼리문을 실행시켜 볼 것이다

 

우선은 자신의 Oracle Cloud DB 에 접속하여 접속 가능한 IP 설정을 진행한다

엑세스 제어 목록 - 편집 클릭

 

값에 접속할 IP 를 설정해준다 ( 내 IP 주소 추가를 누르면 내 공인 IP 가 추가되며 내 아이피 외에 다른 아이피가 접속하려면 다른 공인 IP 를 기입해주면 된다 ) - 저장

 

mTLS 인증 옆의 편집 클릭

 

mTLS 인증 필요의 체크박스를 해제 후 저장 클릭

 

데이터 베이스 접속 클릭

 

접속 문자열에서 TLS 클릭

 

TNS 의 접속 문자열 중  high, low, medium 중 하나 복사 ( high, low, medium 은 성능을 나타냄 )

 

high - 최고 성능, 가장 빠른 응답 속도로 수행되지만 실행할 수 있는 동시 SQL 문 수가 3개

medium - high 보다 동시에 많은 SQL 문을 수행할 수 있으나 high 에 비해서는 낮은 수준의 성능을 제공

low - 동시에 가장 많은 SQL 문을 수행하며 각 SQL 문 마다 최소로 작은 수준의 리소스를 제공

 

const oracledb = require('oracledb');

// Oracle Cloud 자율운영 데이터베이스 연결 정보
const dbConfig = {
  user: 'admin',
  password: 'Oracle1234567',
  connectString: '!!!!Oracle DB의 접속 TLS 정보를 기입!!!!'
  // connectString 에 TLS 에서 복사한 정보를 기입
};

async function run() {
  let connection;

  try {
    // Oracle 데이터베이스에 연결
    connection = await oracledb.getConnection(dbConfig);

    // 연결 확인
    console.log('Connected to database!');

    // 여기에 쿼리 실행 또는 기타 작업 추가
    // 예를 들어:
    // const result = await connection.execute('SELECT * FROM my_table');
    // console.log(result);
    let result = await connection.execute("select * from test");
    console.log("result : ", result);
    
  } catch (err) {
    console.error('Error connecting to database:', err);
  } finally {
    // 연결 닫기
    if (connection) {
      try {
        await connection.close();
        console.log('Connection closed.');
      } catch (err) {
        console.error('Error closing connection:', err);
      }
    }
  }
}

run();

dbConfig 에서 connectString 부분에 복사한 oracleDB 의 TLS 주소를 넣어준다

 

테스트로 생성해둔 test 테이블의 결과를 출력했으며 응답은 다음과 같다.

rows 열에 있는 데이터를 꺼내 쓰면 될 듯 하다

 

지금은 배열 형식의 Object 를 사용하지만 key 로 값을 가져오는 Object 형식으로 변환하는 코드를 추가

 

const oracledb = require('oracledb');

oracledb.autoCommit = true;
// 쿼리문 작성 시 자동으로 커밋되는 기능 활성화
oracledb.outFormat = oracledb.OBJECT;
// 데이터 베이스로부터 데이터를 얻어올때 Object 자료형으로 가져온다
// 위 설정을 하면 [{}, {}, {}] 형식으로 들어오고
// 위 설정을 하지 않으면 [[], [], []] 형식으로 데이터가 들어온다
// 키와 값으로 사용하기 위해 해당 설정을 한다

// Oracle Cloud 자율운영 데이터베이스 연결 정보
const dbConfig = {
  user: 'admin',
  password: 'Oracle1234567',
  connectString: '(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.us-chicago-1.oraclecloud.com))(connect_data=(service_name=g72f610f5f11b4c_orcl_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))'
  // connectString 에 TLS 에서 복사한 정보를 기입
};

async function run() {
  let connection;

  try {
    // Oracle 데이터베이스에 연결
    connection = await oracledb.getConnection(dbConfig);

    // 연결 확인
    console.log('Connected to database!');

    // 여기에 쿼리 실행 또는 기타 작업 추가
    // 예를 들어:
    // const result = await connection.execute('SELECT * FROM my_table');
    // console.log(result);
    let result = await connection.execute("select * from test");
    console.log("result : ", result);
    
  } catch (err) {
    console.error('Error connecting to database:', err);
  } finally {
    // 연결 닫기
    if (connection) {
      try {
        await connection.close();
        console.log('Connection closed.');
      } catch (err) {
        console.error('Error closing connection:', err);
      }
    }
  }
}

run();

 

oracledb.autoCommit = true;
// 쿼리문 작성 시 자동으로 커밋되는 기능 활성화
oracledb.outFormat = oracledb.OBJECT;
// 데이터 베이스로부터 데이터를 얻어올때 Object 자료형으로 가져온다
// 위 설정을 하면 [{}, {}, {}] 형식으로 들어오고
// 위 설정을 하지 않으면 [[], [], []] 형식으로 데이터가 들어온다
// 키와 값으로 사용하기 위해 해당 설정을 한다

위 부분이 추가됐으며, 결과 값은 아래와 같다

 

기존 결과 값과 다르게 키, 값의 형식으로 가져오는 모습 여기서 키는 row 의 값으로 변환되어 나온다

 

이전에 DAO 를 사용하는 형식으로 사용될 때 db의 Config 파일만 고쳐주면 사용이 가능하다

기존에 connectString 의 값을 복사한 TLS 값으로 집어넣으면 됨

 

DAO 를 사용해서 DB 에 접근하는 부분은 아래 링크 참조

 

[Node.js] DB 연동(2) - DAO 로 쿼리문 실행, 네비게이션 bar 만들기

DB 연동 create table members( id varchar2(20) primary key, pwd varchar2(100), name varchar2(20), addr varchar2(100) ); insert into members values('aaa','aaa','홍길동','산골짜기'); insert into members values('bbb','bbb','김개똥','개똥별'); in

youngho3358.tistory.com

728x90