맥에서 Oracle을 사용하기 위해서는 Docker가 필요하다. 이번 포스팅에서는 도커를 이용해 Oracle xe를 다운받고 이를 JDBC로 연동하는 방법에 대해 알아보려한다.
docker pull truevoly/oracle-12c
내 경우에는 위의 컨테이너로 다운 받았다.
docker run --name oracle12c -d -p 8080:8080 -p 1521:1521 -v <디렉토리 경로>
단, 실행할 때 주의할 점의 도커의 컨테이너는 휘발성을 지니기 때문에, 컨테이너 이름과 저장할 디렉토리를 지정해줘야 한다는 것이다.
실행중인 상태를 확인하려면
docker ps
명령어를 사용하거나, 도커 데스크탑 애플리케이션에서 gui 상으로 확인해볼수도 있다.(컨테이너 실행도 앱에서 가능하다)
docker exec -it <컨테이너 이름> sqlplus
기본적으로 System(root) 계정의 패스워트는 oracle로 설정되어 있으니 이걸 치고 들어간다.
잘못된 명령어를 입력하거나하면 계정에서 로그아웃되는데 이때는 !whoami 명령어를 통해 현재 계정을 확인하고 필요시 다시 connect한 후 진행한다.
위 3번에서 적은 디렉토리 경로가 도커 상에서는 root이다. 따라서 sql에서 파일을 불러오거나 하는 작업을 할 때에는 해당 경로에 파일을 넣은 후 해줘야한다.
//sql 파일 로드
@파일 경로
데이터베이스 클라이언트 툴로는 DBeaver를 사용했다. SQL Developer를 쓰려고 했지만, 맥 OS에서 오류로 설치가 되지 않는 것 같았다.
DBeaver 설정은 위와 같이 해주었다.
JDBC(Java Database Connectivity-자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API)를 이용한 이클립스에서의 Oracle 연동 방법은 간단하다.
ojdbc6.jar 파일을 찾아서(윈도우에서는 oracle 설치 폴더 내부 라이브러리 안에 있는데, 맥에서는 아마 따로 찾아서 넣어줘야하는 것 같다..) apache-tomcat 설치 폴더 안의 lib 폴더 안에 이 파일을 넣어주면 된다.
tomcat 파일은 파인더에서 cmd
+shift
+G
를 해서 /usr/local
파일로 이동하면 찾을 수 있다.
그러면 이를 이용해 이클립스에서 자바 코드를 통해 DB 내용을 수정해줄 수 있다. 그 예시는 아래와 같다.
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "계정 이름";
String password = "계정 비밀번호";
String sql = "insert into board values(board_seq.nextval, ?, ?, ?, sysdate, 0)";
int re = -1;
Connection conn = null;
PreparedStatement pstmt = null;
try {
//1. JDBC 드라이버를 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
//2. 데이터베이스와 연결 (Connection 객체 생성)
conn = DriverManager.getConnection(url, user, password);
//3. SQL 질의 (PrepareStatement 객체 생성)
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, board.getTitle());
pstmt.setString(2, board.getWriter());
pstmt.setString(3, board.getContents());
re = pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(pstmt != null) { // 메모리 낭비 최소화
try {
pstmt.close();
} catch (Exception e2) {}
}
if(conn != null) {
try {
conn.close();
} catch (Exception e3) {}
}
}
return re;
}