ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ๋งฅ๋ถ M1 ์ „์ž์ง€๊ฐ‘ ์˜ค๋ผํด DB ์™€ ์ดํด๋ฆฝ์Šค ์—ฐ๋™ํ•˜๊ธฐ
    ๐Ÿ›  develop/Mac 2022. 4. 28. 17:25

     

    ๐Ÿ’ก ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ

    • ์ด ๊ธ€์—์„œ ์ด์šฉํ•˜๋Š” ์ž๋ฐ” ๋ฒ„์ „์€ Java 17 ๊ธฐ์ค€ ์ž…๋‹ˆ๋‹ค. 
    • M1 ์—์„œ ์˜ค๋ผํด์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  shanepark ๋‹˜์˜ M1 Oracle DB ์‹œ๋ฆฌ์ฆˆ 1, 2๋ฅผ ๋งˆ์น˜์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
     

    Apple Silicon m1 ๋งฅ๋ถ์—์„œ Oracle Database ์‚ฌ์šฉํ•˜๊ธฐ

    โ€‹ ์ •๋ง ๋งŽ์€ ๋ถ„๋“ค์ด m1 ๋งฅ๋ถ์„ ๊ตฌ๋งคํ•˜์…จ๋‹ค๊ฐ€ (ํŠนํžˆ ๊ตญ๋น„์ˆ˜์—… ๋“ฃ๋Š”๋ถ„๋“ค) ์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•ด ์ขŒ์ ˆ์„ ํ•˜์‹œ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•œ๊ฐ€์ง€ ๋‚˜์œ ์†Œ์‹๊ณผ ์ข‹์€ ์†Œ์‹์œผ๋กœ ํ•ด๋‹น ๊ธ€์„ ์‹œ์ž‘ํ•˜

    shanepark.tistory.com

     

     

     

    ์ „์ž์ง€๊ฐ‘์œผ๋กœ ์ƒ์„ฑํ•œ ์˜ค๋ผํด DB ์™€ ์ดํด๋ฆฝ์Šค ์—ฐ๋™ํ•˜๊ธฐ

    [1] ์˜ค๋ผํด JDBC ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ธฐ

     

    JDBC(Java Database Connectivity)๋Š” ์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ž๋ฐ” API์ž…๋‹ˆ๋‹ค. 

    ์˜ค๋ผํด JDBC ๋‹ค์šด๋กœ๋“œ ์ฐฝ์— ๋“ค์–ด๊ฐ€์„œ JDBC ๋ฅผ ๋‹ค์šด๋ฐ›์•„์ค๋‹ˆ๋‹ค.

     

    ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ์ž๋ฐ” ๋ฒ„์ „์— ๋”ฐ๋ผ JDBC ๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ๋ณธ ์ž‘์„ฑ์ž๋Š” Java 17 ์„ ์ด์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ojdbc11-full.tar.gz ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์ค๋‹ˆ๋‹ค. 

     

     

    [2] ์˜ค๋ผํด JDBC ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์••์ถ• ํ•ด์ œ

     

    ์ด์ œ ๋‹ค์šด๋ฐ›์€ JDBC ๋ฅผ ์••์ถ• ํ•ด์ œ ํ•ด์ค๋‹ˆ๋‹ค.

    ์ด๋•Œ, ์ดํด๋ฆฝ์Šค์—์„œ ์ž‘์—…ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ํด๋”์— JDBC ๋ฅผ ์••์ถ• ํ•ด์ œ ํ•ด์ค๋‹ˆ๋‹ค.

     

     

    [3] Build Path

     

    JDBC ๋ฅผ ์‚ฌ์šฉํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์šฐํด๋ฆญ ํ•ด์ค๋‹ˆ๋‹ค.

    [Build Path] -> [Configure Build Path] ๋ฅผ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

     

    Java Build Path ์ฐฝ์—์„œ [Libraries] ํƒญ์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

    [Add External JARs...] ์ฐฝ์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

     

    ์—ฐ๋™์„ ์œ„ํ•ด์„œ ojdbc11.jar ํŒŒ์ผ์„ Open ํ•ด์ค๋‹ˆ๋‹ค.

    ojdbc11.jar ์„ ์„ ํƒํ•˜์‹œ๊ณ  [Open] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

     

    ์ดํ›„ ์ด๋Ÿฐ์‹์œผ๋กœ JDBC ํŒŒ์ผ์ด ์ž˜ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

    ์—ฌ๊ธฐ์„œ ์ž ๊น!

    ์˜ค๋ผํด ์ „์ž์ง€๊ฐ‘์„ ์ด์šฉํ•˜์—ฌ JDBC ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ojdbc11 ํŒŒ์ผ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ

    osdt_cert

    osdt_core

    oraclepki

    ๋ฅผ ์ถ”๊ฐ€๋กœ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

     

    ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ „๋ถ€ ์ถ”๊ฐ€ํ•ด ์ค๋‹ˆ๋‹ค.

    ์ถ”๊ฐ€ ํ›„ [Appy and Close] ๋ฅผ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

     

    ์ด์ œ JDBC ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์—ฐ๊ฒฐํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

     

     

    [4] JDBC ๋กœ๋”ฉ ํ…Œ์ŠคํŠธ

     

    ์ž๋ฐ” ํด๋ž˜์Šค ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ณ , ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์‹คํ–‰์‹œ์ผœ ์ค๋‹ˆ๋‹ค.

    import java.sql.*;
    
    public class Connect01 {
    
    	public static void main(String[] args) {
    		String driver = "oracle.jdbc.driver.OracleDriver";
    
    		try {
    
    			Class.forName(driver);
    			System.out.println("JDBC Driver Loading ์„ฑ๊ณต!!");
    
    		} catch (Exception e) {
    			
    			System.out.println("JDBC Driver Loading ์‹คํŒจ!!");
    			e.printStackTrace();
    			
    		}
    
    	}

    ์‹คํ–‰ ์‹œํ‚ค๋ฉด ์ฝ˜์†” ์ฐฝ์— "JDBC Driver Loading ์„ฑ๊ณต!!" ์ด ๋œน๋‹ˆ๋‹ค.

    ์ด์ œ Oracle ๊ณผ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ด๋ณผ๊นŒ์š”?

     

     

    [5] ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

     

    ์ž๋ฐ” ํด๋ž˜์Šค ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

    import java.sql.*;
    
    public class Connect02 {
    
    	public static void main(String[] args) {
    
    		String driver = "oracle.jdbc.driver.OracleDriver";
    
    		// String url = "jdbc:oracle:thin:@์ „์ž์ง€๊ฐ‘์ด๋ฆ„_์„ฑ๋Šฅ?TNS_ADMIN=/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ๊ฒฝ๋กœ/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ";
    		String url = "jdbc:oracle:thin:@์ „์ž์ง€๊ฐ‘์ด๋ฆ„_high?TNS_ADMIN=/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ๊ฒฝ๋กœ/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ";
    		String id = "์‚ฌ์šฉ์ž์ด๋ฆ„";
    		String pwd = "๋น„๋ฐ€๋ฒˆํ˜ธ";
    
    		Connection con = null;
    
    		try {
    
    			Class.forName(driver);
    			con = DriverManager.getConnection(url, id, pwd);
    			System.out.println("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ฑ๊ณต!!");
    
    		} catch (Exception e) {
    
    			System.out.println("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์‹คํŒจ!!");
    			e.printStackTrace();
    
    		} finally {
    			try {
    				if (con != null)
    					con.close();
    			} catch (Exception e) {
    				System.out.println(e.getMessage());
    			}
    		}
    	}
    }

     

    ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ์ปฌ์—์„œ ์˜ค๋ผํด์„ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด

    "jdbc:oracle:thin:@localhost:1521:xe"

    ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์ง€๋งŒ,

     

    M1 ์œ ์ €๋“ค์€ ์ „์ž์ง€๊ฐ‘์„ ํ†ตํ•ด ์˜ค๋ผํด์„ ์ด์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

    "jdbc:oracle:thin:@์ „์ž์ง€๊ฐ‘์ด๋ฆ„_์„ฑ๋Šฅ?TNS_ADMIN=/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ๊ฒฝ๋กœ/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ"

    ์˜ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

     

    ์—ฌ๊ธฐ์„œ "์ „์ž์ง€๊ฐ‘์ด๋ฆ„" ๋ถ€๋ถ„์„ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„์ด ๋งŽ์„ ๊ฒƒ์ด๋ผ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์•Œ์•„๋ณด๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ์ „์ž์ง€๊ฐ‘ ํŒŒ์ผ์„ ์••์ถ• ํ•ด์ œ ํ•ฉ๋‹ˆ๋‹ค.

     

    ์••์ถ• ํ•ด์ œํ•œ ํด๋”์— ๋“ค์–ด๊ฐ€๋ณด์‹œ๋ฉด tnsnames.ora ํŒŒ์ผ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ํด๋ฆญํ•ด์„œ ๋‚ด์šฉ์„ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด (์ผ๋ฐ˜ txt ํŒŒ์ผ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ๊ฐœ๋ฐœ ํˆด์—์„œ ์—ด์–ด์„œ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ์ ํ˜€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

     

    ๋นจ๊ฐ„ ์ค„๋กœ ํ‘œ์‹œํ•œ ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์ „์ž ์ง€๊ฐ‘ ์ด๋ฆ„ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋’ค์˜ high / low / medium ์€ ์˜ค๋ผํด์—์„œ ์ œ๊ณตํ•˜๋Š” DB ์„ฑ๋Šฅ ์„œ๋น„์Šค์˜ ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ ์‹ค์Šต์„ ์œ„ํ•œ ์‚ฌ์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— high ๋ฅผ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

     

    ์ด์ œ ์ด์— ๋งž์ถฐ ์ž‘์„ฑ์„ ์™„๋ฃŒํ•˜์—ฌ ์‹คํ–‰์‹œ์ผœ ์ค๋‹ˆ๋‹ค.

     

    ๋˜‘๊ฐ™์ด ์ฝ˜์†”์ฐฝ์„ ํ™•์ธํ•˜๋ฉด? ์—ฐ๊ฒฐ ์„ฑ๊ณต ์ž…๋‹ˆ๋‹ค!

     

     

    ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

    ๋Œ€๋ถ€๋ถ„ ์ด ๊ธ€์„ ์ฐพ์•„์ฃผ์‹œ๋Š” ๋ถ„๋“ค์ด ์˜ค๋ผํด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ตญ๋น„ ํ•™์› ๋™๊ธฐ๋“ค์ผ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.

     

    ๋งํฌ ๊ฑธ์–ด๋‘” Shane Park ๋‹˜์˜ ๊ธ€์—์„œ๋„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋“ฏ์ด,

    ๋งฅ๋ถ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๊ตญ๋น„ ์—ฌ์ •์„ ๋งˆ์น  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐ™์ด ๊ธธ์„ ๊ฐœ์ฒ™ํ•ด ๋‚˜๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

     

     

    ๋Œ“๊ธ€๊ณผ ๊ณต๊ฐ์€ ํ•ญ์ƒ ํ™˜์˜์ž…๋‹ˆ๋‹ค!

     

    ๋Œ“๊ธ€