https://shanepark.tistory.com/400
이걸 보고 설치했다.
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_pj, final_pj)
-d옵션이 없다면 프로세스가 foreground로 실행되어 아무키도 입력할 수 없게 됩니다. 컨테이너를 종료하려면 ctrl + c를 입력해 주세요.
컨테이너 목록 확인하기 (ps)
컨테이너 목록을 확인하는 명령어는 다음과 같습니다.
docker ps [OPTIONS]
https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html
https://devmoony.tistory.com/110
https://dongmin1994.tistory.com/10
oracle11컨테이너 만들었다.
포트번호 1521
만약 컨테이너 이름을 바꾸고싶으면 아래의 명령어를 사용하면 된다고 한다.
$ docker rename <현재 컨테이너 이름> <새 컨테이너 이름>
docker exec -it oracle11 sqlplus
명령어로 컨테이너에 접속함
user는 system
패스워드는 oracle
컨테이너 만들면 기본으로 이렇게 설정 되는듯 하다.
시스템 계정에서 scott과 banana 계정을 만들어 주었다.
exit으로 sql 나갈수있다.
https://eunoia3jy.tistory.com/87
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
나는 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를 써준다.
자바 테스트해보니 테이블에 데이터가 제대로 들어가있다.
'맥북초보' 카테고리의 다른 글
Mac git 연동시에 .DS_Store파일 생기는 이유 (0) | 2023.01.08 |
---|---|
맥북에 오라클이랑 토드 깔아야돼... (0) | 2022.12.27 |
(예비)개발자 맥북 구매😝 (0) | 2022.10.23 |
댓글