npm i oracledb
프로젝트 최상위 디렉토리에서 생성
DB 접속 정보 입력
환경 변수 작명은 자유
// .env.local
DB_USER='db 유저네임'
DB_PASSWORD='db 비밀번호'
DB_CONNECTIONSTRING='넘버.넘버.넘버.넘버:넘버/ABCD'
DB_CONNECTIONSTRING 은 db url인데
참고 : https://www.youtube.com/watch?v=I23XTkUMrtM
// .gitignore
// ... 생략
# local env files
.env*.local
.env
// ... 생략
require('dotenv').config()
module.exports = {
user : process.env.DB_USER || "hr",
password : process.env.DB_PASSWORD,
connectString : process.env.DB_CONNECTIONSTRING || "localhost/orclpdb1",
};
// pages/api/faqs.js
const oracledb = require('oracledb');
// 이전 단계에서 만든 dbconfig.js을 생성 경로에 맞춰 불러오기
const dbConfig = require('../../assets/db/dbconfig.js');
export default async function getAllFaqs( req, res ) {
let connection;
try {
// DB 연결
connection = await oracledb.getConnection(dbConfig);
const sql = `
SELECT *
FROM FAQS
`
// sql문 실행
const { rows } = await connection.execute(sql);
return res.status(200).json({ faqsList : rows });
} catch (err) {
console.error('연결 실패------', err);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}
// index.js
// useEffect에서 api 호출로 data fetch시에는
// useState로 data 관리
const [ faqs, setFaqs ] = useState([])
useEffect(() => {
const fetchFAQs = async () => {
const res = await fetch('/api/faqs');
const { faqsList } = await res.json();
setFaqs(faqsList);
}
fetchFAQs();
})
return (
<div>{ faqsList.map((faq,idx) => <p key={idx}>{ faq[idx] }</p>) }<div>
)
아래의 모든 작업은!
위 nextjs 기반으로 구현된 애플리케이션을 git clone으로 가져온 디렉터리에서 실행했다.
/opt/oracle 디렉토리로 이동
- oracle 드라이버가 설치되는 디렉토리로 이동 (나 같은 경우는 /opt/oracle 디렉터리에 저장)
다운로드 url
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
설치 드라이버
- "Basic" packages
- "SQL*Plus" packages
다운로드 방법
위 2개 드라이버를 각각 다운로드 링크 주소 복사 후, wget 명령어로 터미널에서 다운로드
wget <https://download.oracle.com/otn_software/linux/instantclient/217000/instantclient-basic-linux.x64-21.7.0.0.0dbru.zip>
unzip instantclient-basic-linux.x64-21.7.0.0.0dbru.zip
sudo yum install libaio
설치 경로와 설치한 패키지 버전에 유의하여 환경 변수를 설정한다.
3-1. 임시로 환경 변수를 설정하는 방법
export LD_LIBRARY_PATH=/opt/oracle/instantclient_21_7:$LD_LIBRARY_PATH
export PATH=/opt/oracle/instantclient_21_7:$PATH
3-2. 영구적으로 환경 변수 설정하는 방법
1) root(su) 권한으로 접속
2) 터미널에서~/.bashrc 들어가기
vi ~/.bashrc
3) 환경변수를 맨 아래 줄에 작성 ("export" 단어와 함께 작성)
npm run build
nohup npm run start &
✅ 참고
https://devbybyun.tistory.com/7
https://www.youtube.com/watch?v=I23XTkUMrtM
https://www.oracle.com/database/technologies/appdev/quickstartnodeonprem.html#linux-tab