태그 보관물: JAVA

Oracle JDBC Connection

개요

Java 애플리케이션에서 Oracle JDBC 드라이버를 사용해 Oracle 데이터베이스에 연결하는 방법을 정리합니다. ojdbc jar 파일 추가, Connection URL 형식, JNDI DataSource 설정 등 Oracle JDBC 연동에 필요한 핵심 설정을 다룹니다.

Oracle JDBC URL 형식

Oracle JDBC 연결 URL은 세 가지 형식을 지원합니다. 가장 일반적인 Thin 드라이버 방식은 순수 Java로 구현되어 Oracle 클라이언트 소프트웨어 없이 동작합니다. SID 기반 URL과 서비스명 기반 URL 중 서버 환경에 맞는 형식을 사용합니다.

// SID 기반 (구형, 단일 인스턴스)
jdbc:oracle:thin:@x.x.x.x:1521:orcl

// 서비스명 기반 (권장, RAC/CDB/PDB 환경 지원)
jdbc:oracle:thin:@x.x.x.x:1521/orclpdb

// TNS 이름 기반 (tnsnames.ora 파일 필요)
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=x.x.x.x)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))

Oracle 11g 이하는 ojdbc6.jar, Oracle 12c 이상은 ojdbc8.jar를 사용합니다. ojdbc는 Oracle 사이트 또는 Maven Central에서 다운로드할 수 있습니다. Maven 프로젝트에서는 pom.xml에 ojdbc 의존성을 추가합니다.

JAVA에서 오라클 JDBC Driver를 연결하는 방법

  • JAVA 어플리케이션에서 드라이버(ojdbc)를 통해 오라클 DBMS와 연결을 가능하게 해줍니다.
  • ojdbc 드라이버는 오라클 DBMS의 설치 경로에서 확인이 가능합니다. (ex> oracle/product/11.2.0/db_1/jdbc/lib/ojdbc6.jar)
  • 해당 ojdbc 드라이버 파일을 JAVA의 Classpath에 복사 또는 별도도 지정해줘야 import가 가능 합니다. (이클립스에서는 해당 프로젝트 > Build Path > Configure Build Path > Add External JARs > 해당 드라이버 추가)
  • JAVA 코드 예시(Oracle 11G 기준)
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;

public class jdbc_connect {

    public static void main(String[] args) {
        String driver = "oracle.jdbc.driver.OracleDriver";
        String url = "jdbc:oracle:thin:@x.x.x.x:1521:orcl";
        String user = "tester";
        String password = "tester";
        Connection conn = null;

        try {
            Class.forName(driver);
            System.out.println("jdbc driver loading success");
            conn = DriverManager.getConnection(url, user, password);
            System.out.println("Oracle connection seccess");

        } catch (ClassNotFoundException e) {
            System.out.println("jdbc driver loading failure");
        } catch (SQLException e) {
            System.out.println("Oracle connection failure");
        }
        try {
            conn.close();
        } catch (SQLException e) {
            System.out.println("connection close failure");
        }
    }
}

Connection Pool (HikariCP) 설정

실제 애플리케이션에서는 매번 Connection을 새로 생성하지 않고 Connection Pool을 사용합니다. Spring Boot 기본 커넥션 풀인 HikariCP에서 Oracle JDBC를 설정하는 방법은 아래와 같습니다. application.yml에 JDBC URL, 계정 정보, 풀 크기를 지정합니다.

spring:
  datasource:
    url: jdbc:oracle:thin:@x.x.x.x:1521/orclpdb
    username: app_user
    password: <REDACTED>
    driver-class-name: oracle.jdbc.OracleDriver
    hikari:
      maximum-pool-size: 10
      minimum-idle: 2
      connection-timeout: 30000

커넥션 풀 크기는 서버의 CPU 코어 수와 쿼리 응답 시간을 고려해 결정합니다. Oracle 세션 수 제한(sessions 파라미터)을 초과하지 않도록 모든 애플리케이션 인스턴스의 pool size 합산을 관리해야 합니다.

주요 예외 처리와 연결 검증

Oracle JDBC 사용 시 자주 발생하는 예외를 이해하면 디버깅 시간을 크게 줄일 수 있습니다. ORA-12541: No listener는 Listener가 중지된 경우, ORA-01017: invalid username/password는 계정 정보 오류, ORA-00942: table or view does not exist는 권한 부족 또는 오브젝트 미존재 상황입니다. 연결 성공 여부는 connection.isValid(timeout)으로 확인할 수 있으며, 커넥션 풀에서는 connectionTestQuery=SELECT 1 FROM DUAL로 주기적으로 연결 상태를 검증합니다.

참고

참고 문서: Oracle JDBC Maven Central 가이드 · Oracle JDBC Connection URL 형식