본문 바로가기
맥북초보

맥 오라클 설치하기 (Java DB연동)

by 코딩마스터^^ 2023. 1. 22.

https://shanepark.tistory.com/400

 

[MacOS] M1 맥북 도커로 ORACLE DB 실행하기

Intro M1 맥북을 구입 한 이후로 약 1년 반동안, 오라클 데이터베이스를 띄우기 위해 참 많은 노력을 했습니다. 원래 MacOS를 Oracle이 정식 지원을 하진 않지만, 그나마도 이전의 맥북에서 사용하던

shanepark.tistory.com

 

이걸 보고 설치했다.

 

brew install colima

 

콜리마 설치해주기

 

도커설치. 클리마를 클린업해준다? 자동으로 되는듯

 

어플리케이션에 있다.

 

안되서 도커엔진만 다시 깔았다.

brew install docker

 

/opt/homebrew/Cellar/docker/20.10.22: 12 files, 55.4MB

왜이럼...? 브루로 깐것 놔두고 결국 다시 깔았다. 

docker run -e ORACLE_PASSWORD=pass -p 1521:1521 -d gvenzl/oracle-xe

이걸로 포트번호따른 비번 설정 해준다.

 

컨테이너이름이 laughing_kilby 인가보다...? 언제 이렇게 됐지ㅋㅋ--->나중에 rm 명령어로 삭제함

 

데이터베이스가 레디가 되었다고한다...

 

1. 오라클 데이터베이스 (Oracle Database) SQLPlus 실행

 

run 명령어를 통해 컨테이너 생성과 동시에 실행하였기 때문에 도커(Docker) 를 종료하였거나 컨테이너를 정지시키지 않았다면 오라클 데이터베이스 (Oracle Database) 컨테이너 가 실행 중인 상태입니다.

docker exec -it my_oracle sqlplus 명령어를 이용하여 오라클 데이터베이스 (Oracle Database) SQLPlus 를 실행시켜 줍니다.

user-name 에는 system, password 에는 oracle 을 입력 후 엔터 클릭!

 

내가 유저네임이랑 패스워드를 설정한적이 없다...

그래서 알수가 없음 ㅜㅜ

 

docker exec '[특정 컨테이너]'의 bash 터미널을 실행시키기 위한 명령어입니다.

docker exec -it [자신이 설정한 container name] /bin/bash

tip. 자신이 설정한 컨테이너 이름이 기억나지 않을 때가 있습니다. Oracle DB가 docker에 run 되어 있다는 가정하에, docker ps라는 명령어를 입력하면 현재 실행중인 컨테이너 목록을 확인할 수 있습니다. oracle이 보이는 row에서 맨 끝 column인 NAME 부분을 보면 자신이 설정한 container name을 볼 수 있습니다. 

프로젝트 테이블 정리하다가 한 곳에 저장하기 불편해서 계정 만드는 법을 찾아봄...;;(맥북 설정 방법입니다^^)

 

 

$docker exec -it oracle11g sqlplus (oracle 접속하기) (system, oracle)

 

SQL> create user fianl_pj identified by final_pj;    ( 아이디 : final_pj, 비밀번호: final_pj를 만든다.) 

User created. 

 

SQL> grant connect, resource to final_pj; (권한부여해주기)

Grant succeeded.

 

SQL> exit (나가기) 

Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production 

 

$docker exec -it oracle11g sqlplus (oracle 접속하기) (final_pjfinal_pj)

 

 

-d옵션이 없다면 프로세스가 foreground로 실행되어 아무키도 입력할 수 없게 됩니다. 컨테이너를 종료하려면 ctrl + c를 입력해 주세요.

컨테이너 목록 확인하기 (ps)

컨테이너 목록을 확인하는 명령어는 다음과 같습니다.

docker ps [OPTIONS]

https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html

 

초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기

초보를 위한 도커 안내서 2번째 글입니다. 도커의 기본적인 내용을 이야기 했던 첫번째 글에 이어 실제로 도커를 설치하고 컨테이너를 실행하면서 도커 명령어를 알아봅니다. 도커를 처음 접하

subicura.com

https://devmoony.tistory.com/110

 

[MacOs] 맥북에서 도커(Docker)로 오라클(Oracle) 사용하기

맥북에서 도커(Docker) 활용해 오라클(Oracle) 사용하는 방법 이전 포스팅에 MacOS에 도커(Docker) 설치하는 방법을 설명하였습니다. 도커를 아직 설치하지 못하신 분들은 아래 포스팅을 참고하시면 됩

devmoony.tistory.com

https://dongmin1994.tistory.com/10

 

[Oracle] 맥OS 오라클 계정 만들기

프로젝트 테이블 정리하다가 한 곳에 저장하기 불편해서 계정 만드는 법을 찾아봄...;;(맥북 설정 방법입니다^^) $docker exec -it oracle11g sqlplus (oracle 접속하기) (system, oracle) SQL> create user fianl_pj identifi

dongmin1994.tistory.com

\

oracle11컨테이너 만들었다.

포트번호 1521

 

만약 컨테이너 이름을 바꾸고싶으면 아래의 명령어를 사용하면 된다고 한다.

$ docker rename <현재 컨테이너 이름> <새 컨테이너 이름>

 

docker exec -it oracle11 sqlplus     

명령어로 컨테이너에 접속함

 

user는 system

패스워드는 oracle

 

컨테이너 만들면 기본으로 이렇게 설정 되는듯 하다.

 

시스템 계정에서 scott과 banana 계정을 만들어 주었다.

exit으로 sql 나갈수있다.

 

https://eunoia3jy.tistory.com/87

 

[ macOS 맥북 ] 오라클 데이터베이스 (Oracle Database) 설치 및 접속

macOS 에서 오라클 데이터베이스 (Oracle Database) 를 사용하려면 도커(Docker) 를 설치해야 하는데요! 도커(Docker) 설치 전이라면 이전 게시물을 참고해주세요 :) https://eunoia3jy.tistory.com/86?category=1011677 [ m

eunoia3jy.tistory.com

SQL Dveloper 설치 완료.

 

docker container 다시 들어가기

 

1. colima를 다시 켜준다.

 

colima start --memory 4 --arch x86_64

 

2. docker container다시 열어준다.

내 컨테이너 이름은 oracle11

docker start oracle11

 

3. 자바와 연동

드라이브 설치

https://seongjaemoon.github.io/database/2018/02/18/database-oracle6.html

 

슈퍼문의 개발일지

Frontend, Git, Algorithm, IT, Firebase, Web, Database, My Story, etc.

seongjaemoon.github.io

 

나는 gradle방식으로 ojdbc8을 dependency에 추가해줬기때문에 필요가 없다.

package banana_project.server.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class DBConnectionMgr {
    public static final String _DRIVER = "oracle.jdbc.driver.OracleDriver";
    // public static final String _URL = "jdbc:oracle:thin:@192.168.10.72:1521:orcl11";
//    public static final String _URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl11";
    // public static final String _URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    public static final String _URL = "jdbc:oracle:thin:@127.0.0.1:1521:xe";//도희테스트용

    public static String _USER = "scott";
    public static String _PW = "tiger";

    public Connection getConnection() {
        Connection con = null;
        try {
            Class.forName(_DRIVER);
            con = DriverManager.getConnection(_URL, _USER, _PW);
        } catch (ClassNotFoundException e) {
            System.out.println("드라이버 클래스를 찾을 수 없습니다.");
        } catch (Exception e) {
            System.out.println("오라클 서버와 커넥션 실패!!");
        } // end of try-catch

        return con;
    } // end of getConnection()

    public void freeConnection(Connection con, Statement stmt) {
        if (con != null) {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } // end of freeConnection

    public void freeConnection(Connection con, PreparedStatement pstmt) {
        if (con != null) {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (pstmt != null) {
            try {
                pstmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } // end of freeConnection - [INSERT, UPDATE, DELETE]

    public void freeConnection(Connection con, Statement stmt, ResultSet rs) {
        if (con != null) {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (rs != null) {
            try {
                rs.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } // end of freeConnection

    public void freeConnection(Connection con, PreparedStatement pstmt, ResultSet rs) {
        if (con != null) {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (pstmt != null) {
            try {
                pstmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (rs != null) {
            try {
                rs.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } // end of freeConnection - [SELECT]

    public static void main(String[] args) {
        DBConnectionMgr dbMgr = new DBConnectionMgr();
        Connection con = dbMgr.getConnection();
        System.out.println("con ===> " + con);
    }
}
"jdbc:oracle:thin:@127.0.0.1:1521:xe"

도커에서 오라클을 쓸때에는 자바 연동시에 xe를 써준다.

 

자바 테스트해보니 테이블에 데이터가 제대로 들어가있다.

댓글