DEVELOPMENT/SPRING

μŠ€ν”„λ§ λΆ€νŠΈ ORA-17059 μ—λŸ¬ μ™„λ²½ ν•΄κ²°!

Junesker 2025. 5. 13. 10:36
λ°˜μ‘ν˜•

μŠ€ν”„λ§λΆ€νŠΈ ORA-17059 μ—λŸ¬ 해결방법

 

ν•„μžλŠ” μŠ€ν”„λ§λΆ€νŠΈλ₯Ό μ΄μš©ν•˜μ—¬ ν’€μΊ˜λ¦°λ”λ₯Ό μ μš©ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 그러던 쀑, 였라클 λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄ 'Schedule'ν…Œμ΄λΈ”μ˜ μ €μž₯된 일정 λͺ©λ‘ 데이터λ₯Ό μ‘°νšŒν•΄μ„œ κ°€μ Έμ˜€λ˜ 쀑에 500 μ—λŸ¬κ°€ λ°œμƒν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ—λŸ¬ λ©”μ‹œμ§€λŠ” 'ORA-17059' μ—λŸ¬μ˜€μŠ΅λ‹ˆλ‹€. μ •ν™•ν•˜κ²ŒλŠ” 'ORA-17059: λ‚΄λΆ€ ν˜•μ‹μœΌλ‘œμ˜ λ³€ν™˜μ„ μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.' λΌλŠ” λ©”μ‹œμ§€μ˜€μŠ΅λ‹ˆλ‹€. 데이터λ₯Ό λ°›μ•„μ˜€λŠ” κ³Όμ •μ—μ„œ μ—λŸ¬κ°€ λ°œμƒν–ˆκΈ° λ•Œλ¬Έμ—, κ°€μž₯ ν™•μ‹€ν•˜κ²Œ μ˜μ‹¬ κ°€λŠ” 뢀뢄은 'ν…Œμ΄λΈ” λ‚΄ 쑰회된 데이터λ₯Ό λ°”μΈλ”©ν•˜λŠ”λ° μ—λŸ¬κ°€ λ°œμƒν–ˆκ΅¬λ‚˜.'μ˜€κ³ , μ—­μ‹œλ‚˜ 쿼리가 μž‘μ„±λœ mapper.xml의 'resultType' 속성에 λͺ…μ‹œλœ 클래슀 νƒ€μž…μœΌλ‘œ 쑰회된 데이터λ₯Ό λ°”μΈλ”©ν•˜λŠ” κ³Όμ •μ—μ„œ λ°œμƒν•œ μ—λŸ¬μ˜€μŠ΅λ‹ˆλ‹€. ꡬ체적으둜 μ„€λͺ…ν•˜μžλ©΄ 쑰회된 λ°μ΄ν„°λŠ” ν…Œμ΄λΈ”μ˜ 컬럼 νƒ€μž…μ΄ 'VARCHAR'인데 VO의 클래슀 ν•„λ“œ νƒ€μž…μ΄ int둜 κ΅¬μ„±λ˜μ–΄ μžˆμ–΄μ„œ 데이터가 λ°”μΈλ”©λ˜λŠ” κ³Όμ •μ—μ„œ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

 

ORA-17059: λ‚΄λΆ€ ν˜•μ‹μœΌλ‘œμ˜ λ³€ν™˜μ„ μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.

 

μ—λŸ¬κ°€ λ°œμƒν•œ ν•„μžμ˜ 상황

μœ„μ—μ„œ 상황 μ„€λͺ…ν–ˆλ“―이 쑰회λ₯Ό ν•΄μ„œ κ°€μ Έμ˜€λ €κ³  μž‘μ„±ν–ˆλ˜ μΏΌλ¦¬λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. 일반적인 ν…Œμ΄λΈ”μ„ μ΄μš©ν•΄ μ‘°νšŒν•˜κ³ μž ν•˜λŠ” μ»¬λŸΌμ„ SELECT ꡬ문에 μž‘μ„± ν›„ μ‘°νšŒν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

μ‘°νšŒν•˜λ €λŠ” ν…Œμ΄λΈ”μ˜ 각 μ»¬λŸΌλ³„ μ •λ³΄λŠ” μ•„λž˜ 이미지와 κ°™μŠ΅λ‹ˆλ‹€. 'SCH_NO'λΆ€ν„° 'SCH_ALLDAY' μ»¬λŸΌκΉŒμ§€ 각 μ»¬λŸΌλ§ˆλ‹€μ˜ νƒ€μž…μ΄ 크기와 ν•¨κ»˜ λ‹€λ₯΄κ²Œ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 쀑, 'SCH_NO'λ₯Ό μ œμ™Έν•˜κ³ λŠ” λͺ¨λ‘ 'VARCHAR2' νƒ€μž…μœΌλ‘œ λ¬Έμžμ—΄μ„ 담을 수 μžˆλŠ” νƒ€μž…μ΄ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

 

 

ν…Œμ΄λΈ”μ˜ μ •λ³΄λŠ” 'SCH_NO'λ₯Ό μ œμ™Έν•˜κ³  λ‚˜λ¨Έμ§€ 컬럼의 νƒ€μž…μ΄ 'VARCHAR'인데 데이터λ₯Ό 받을 VO 클래슀 λ‚΄ id의 ν•„λ“œκ°€ λ¬Έμžμ—΄μ„ λ°›κΈ° μœ„ν•œ νƒ€μž…μΈ String이 μ•„λ‹ˆλΌ int둜 μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 데이터λ₯Ό λ°›κΈ° μœ„ν•œ νƒ€μž…μ΄ μΌμΉ˜ν•˜μ§€ μ•Šμ•„μ„œ 'ORA-17059' μ—λŸ¬κ°€ λ°œμƒν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

 

이렇듯, 'ORA-17059'와 κ΄€λ ¨λœ μ—λŸ¬λŠ” ν•„μžκ°€ 진행쀑에 λ°œμƒν–ˆλ˜ μ—λŸ¬ 이외에 ν˜„μƒμ—μ„œλ„ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή μ—λŸ¬κ°€ λ°œμƒν•˜λŠ” μ—¬λŸ¬ 원인과 해결방법에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

 

 

 

 

'ORA-17059' μ£Όμš” λ°œμƒ 상황 및 ν•΄κ²° 방법

 

1. 데이터 νƒ€μž… 뢈일치

 

λ°œμƒ 상황

κ°€μž₯ ν”ν•œ 원인 쀑 ν•˜λ‚˜λ‘œ λ°μ΄ν„°λ² μ΄μŠ€ 컬럼의 데이터 νƒ€μž…κ³Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ ν•΄λ‹Ή 데이터λ₯Ό λ°›μœΌλ €κ³  ν•˜λŠ” Java νƒ€μž…μ΄ ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” 경우 λ°œμƒν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ°μ΄ν„°λ² μ΄μŠ€μ˜ NUMBER νƒ€μž… 컬럼 값을 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ String으둜 λ°›μœΌλ €κ³  ν•˜κ±°λ‚˜, DATE νƒ€μž… 컬럼 값을 INTEGER둜 λ°›μœΌλ €κ³  ν•  λ•Œ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

ν•΄κ²° 방법

  • λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ 확인
    λ¨Όμ €ν•΄λ‹Ή 컬럼의 νƒ€μž…μ„ μ •ν™•νžˆ 확인해야 ν•©λ‹ˆλ‹€. SQL Developerλ‚˜ DBeaver 같은 νˆ΄μ„ μ‚¬μš©ν•˜κ±°λ‚˜, 'DESCRIBE ν…Œμ΄λΈ”λͺ…;'κ³Ό 같은 SQL ꡬ문을 μ‹€ν–‰ν•΄μ„œ 컬럼 정보λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.
  • Java μ½”λ“œ μˆ˜μ •
    λ°μ΄ν„°λ² μ΄μŠ€ 컬럼 νƒ€μž…μ— 맞좰 Java λ³€μˆ˜μ˜ νƒ€μž…μ„ λ³€κ²½ν•΄μ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, NUMBER νƒ€μž…μ€ int, long, BigDecimal λ“±μœΌλ‘œ, VARCHAR2 νƒ€μž…μ€ String으둜, DATE λ˜λŠ” TIMESTAMP νƒ€μž…μ€ Date, TimeStamp λ“±μœΌλ‘œ λ§€ν•‘ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • ResultSet의 getXXX() λ©”μ„œλ“œ 확인
    ResultSetμ—μ„œ 데이터λ₯Ό κ°€μ Έμ˜¬ λ•Œ μ‚¬μš©ν•˜λŠ” getInt(), getString(), getDate() λ“±μ˜ λ©”μ„œλ“œκ°€ 컬럼 νƒ€μž…κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, NUMBER νƒ€μž… 컬럼의 값을 κ°€μ Έμ˜¬ λ•ŒλŠ” getInt()λ‚˜ getLong()을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • λͺ…μ‹œμ μΈ νƒ€μž… λ³€ν™˜
    ν•„μš”ν•œ 경우, Java μ½”λ“œ λ‚΄μ—μ„œ λͺ…μ‹œμ μΈ νƒ€μž… λ³€ν™˜μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, BigDecimal 값을 String으둜 λ°˜ν™˜ν•΄μ•Ό ν•œλ‹€λ©΄ bigDecimalValue.toString() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

 

2. 데이터 ν˜•μ‹ 뢈일치

 

λ°œμƒ 상황

λ°μ΄ν„°λ² μ΄μŠ€ 컬럼의 데이터 νƒ€μž…μ€ λ§žμ§€λ§Œ, μ €μž₯된 λ°μ΄ν„°μ˜ ν˜•μ‹μ΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ κΈ°λŒ€ν•˜λŠ” ν˜•μ‹κ³Ό λ‹€λ₯Ό λ•Œ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. 특히 λ‚ μ§œ(DATE, TIMESTAMP) νƒ€μž…μ˜ 경우, λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯된 ν˜•μ‹κ³Ό JDBC λ“œλΌμ΄λ²„μ˜ κΈ°λ³Έ ν˜•μ‹ λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ§€μ •ν•œ ν˜•μ‹μ΄ λ‹€λ₯΄λ©΄ λ³€ν™˜μ— μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

ν•΄κ²° 방법

  • λ‚ μ§œ ν˜•μ‹ 확인
    λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯된 λ‚ μ§œ ν˜•μ‹μ„ ν™•μΈν•©λ‹ˆλ‹€. TO_CHAR ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • ν˜•μ‹μœΌλ‘œ μ‘°νšŒν•΄ 보면 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. (SELECT TO_CHAR(date_column, 'YYYY-MM-DD HH24:MI:SS') FROM TABLENAME; SQL ꡬ문으둜 쑰회)
  • JDBC URL νŒŒλΌλ―Έν„° μ„€μ •
    JDBC μ—°κ²° URL에 λ‚ μ§œ ν˜•μ‹ κ΄€λ ¨ νŒŒλΌλ―Έν„°λ₯Ό μΆ”κ°€ν•˜μ—¬ JDBC λ“œλΌμ΄λ²„κ°€ νŠΉμ • ν˜•μ‹μœΌλ‘œ λ‚ μ§œ 데이터λ₯Ό μ²˜λ¦¬ν•˜λ„λ‘ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    (jdbc:oracle:thin:@localhost:1521:XE?oracle.jdbc.formatMapping=true&oracle.jdbc.timestampTZinGmt=false 와 같은 νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.)
  • SimpleDateFormat μ‚¬μš©
    Java μ½”λ“œμ—μ„œ SimpleDateFormat 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ κ°€μ Έμ˜¨ λ‚ μ§œ 데이터λ₯Ό μ›ν•˜λŠ” ν˜•μ‹μœΌλ‘œ νŒŒμ‹±ν•˜κ±°λ‚˜, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ‚ μ§œ 데이터λ₯Ό λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•  ν˜•μ‹μœΌλ‘œ ν¬λ§·νŒ… ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

3. NLS μ„€μ • 문제

 

λ°œμƒ 상황

였라클 λ°μ΄ν„°λ² μ΄μŠ€μ˜ NLS(National Language Support) 섀정이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ‘œμΌ€μΌ μ„€μ •κ³Ό μΆ©λŒν•˜λŠ” κ²½μš°μ—λ„ 데이터 λ³€ν™˜ 였λ₯˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. 특히 μˆ«μžλ‚˜ λ‚ μž ν˜•μ‹μ— 영ν–₯을 λ―ΈμΉ  수 μžˆμŠ΅λ‹ˆλ‹€. 마치 ν•œκ΅­μ‹ λ‚ μž ν‘œκΈ° 방식과 미ꡭ식 λ‚ μ§œ ν‘œκΈ° 방식을 ν˜Όμš©ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 것과 같은 ν˜Όλž€μ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

** NLSλž€?
'National Language Support'의 μ•½μžλ‘œ, 였라클 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ‹€κ΅­μ–΄ ν™˜κ²½μ„ μ§€μ›ν•˜λŠ” κΈ°λŠ₯을 μ˜λ―Έν•©λ‹ˆλ‹€. NLS νŒŒλΌλ―Έν„°λŠ” λ°μ΄ν„°λ² μ΄μŠ€, μΈμŠ€ν„΄μŠ€, μ„Έμ…˜ λ ˆλ²¨μ—μ„œ μ„€μ •ν•˜μ—¬ μ–Έμ–΄, μ§€μ—­, 문자 μ§‘ν•©κ³Ό κ΄€λ ¨λœ λ™μž‘ 방식을 μ œμ–΄ν•©λ‹ˆλ‹€.

 

ν•΄κ²° 방법

  • λ°μ΄ν„°λ² μ΄μŠ€ NLS μ„€μ • 확인
    λ°μ΄ν„°λ² μ΄μŠ€μ˜ NLS 섀정을 ν™•μΈν•©λ‹ˆλ‹€. 'SELECT * FROM NLS_DATABASE_PARAMETERS;' SQL ꡬ문을 μ‹€ν–‰ν•˜μ—¬ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 특히 NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT, NLS_NUMERIC_CHARACTERS λ“±μ˜ νŒŒλΌλ―Έν„°λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.
  • μ„Έμ…˜ NLS μ„€μ • λ³€κ²½
    ν•„μš”ν•œ 경우, νŠΉμ • μ„Έμ…˜μ— λŒ€ν•΄μ„œλ§Œ NLS 섀정을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    예λ₯Ό λ“€μ–΄ 'ALTER' SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS;'와 같이 SQL ꡬ문을 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • JDBC URL νŒŒλΌλ―Έν„° μ„€μ •
    JDBC μ—°κ²° URL에 NLS κ΄€λ ¨ νŒŒλΌλ―Έν„°λ₯Ό μΆ”κ°€ν•˜μ—¬ JDBC λ“œλΌμ΄λ²„μ˜ λ™μž‘ 방식을 μ œμ–΄ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

4. BLOB / CLOB 데이터 처리 였λ₯˜

 

λ°œμƒ 상황

BLOB (Binary Large Object) λ˜λŠ” CLOB (Character Large Object) νƒ€μž…μ˜ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” κ³Όμ •μ—μ„œ 인코딩 μΏ€μ œλ‚˜ 데이터 길이 문제 λ“±μœΌλ‘œ λ³€ν™˜μ— μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

ν•΄κ²° 방법

  • 인코딩 확인
    CLOB 데이터λ₯Ό μ²˜λ¦¬ν•  λ•ŒλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 문자 인코딩이 μΌμΉ˜ν•˜λŠ”μ§€ 확인해야 ν•©λ‹ˆλ‹€. 일반적으둜 UTF-8 인코딩을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
  • 슀트리밍 방식 처리
    BLOB λ˜λŠ” 맀우 큰 CLOB λ°μ΄ν„°λŠ” ν•œ λ²ˆμ— λ©”λͺ¨λ¦¬μ— λ‘œλ“œν•˜μ§€ μ•Šκ³  슀트리밍 λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. JDBCμ—μ„œ μ œκ³΅ν•˜λŠ” BLOB 및 CLOB μΈν„°νŽ˜μ΄μŠ€μ˜ λ©”μ„œλ“œλ₯Ό ν™œμš©ν•©λ‹ˆλ‹€.
  • 데이터 길이 확인
    μ‚½μž…ν•˜κ±°λ‚˜ μ‘°νšŒν•˜λ €λŠ” λ°μ΄ν„°μ˜ 길이가 컬럼의 μ΅œλŒ€ 길이λ₯Ό μ΄ˆκ³Όν•˜μ§€ μ•ŠλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

 

 

5. JDBC λ“œλΌμ΄λ²„ 버전 문제

 

λ°œμƒ 상황

μ‚¬μš©ν•˜κ³  μžˆλŠ” JDBC λ“œλΌμ΄λ²„ 버전이 였라클 λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ 버전과 ν˜Έν™˜λ˜μ§€ μ•Šκ±°λ‚˜, νŠΉμ • λ²„μ „μ—μ„œ μ•Œλ €μ§„ λ²„κ·Έλ‘œ 인해 데이터 λ³€ν™˜ 였λ₯˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

ν•΄κ²° 방법

  • JDBC λ“œλΌμ΄λ²„ 버전 확인
    μ‚¬μš©ν•˜κ³  μžˆλŠ” JDBC λ“œλΌμ΄λ²„μ˜ 버전을 ν™•μΈν•©λ‹ˆλ‹€. Maven λ˜λŠ” Gradleκ³Ό 같은 λΉŒλ“œ 도ꡬλ₯Ό μ‚¬μš©ν•˜λŠ” 경우, ν•΄λ‹Ή μ˜μ‘΄μ„± 정보λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.
  • λ“œλΌμ΄λ²„ 버전 μ—…κ·Έλ ˆμ΄λ“œ λ˜λŠ” λ‹€μš΄κ·Έλ ˆμ΄λ“œ
    였라클 λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ 버전에 λ§žλŠ” μ΅œμ‹  JDBC λ“œλΌμ΄λ²„λ‘œ μ—…κ·Έλ ˆμ΄λ“œν•˜κ±°λ‚˜, μ•ˆμ •μ μΈ 이전 λ²„μ „μœΌλ‘œ λ‹€μš΄κ·Έλ ˆμ΄λ“œλ₯Ό ν•΄λ΄…λ‹ˆλ‹€. 였라클 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ—¬ ν˜Έν™˜λ˜λŠ” λ“œλΌμ΄λ²„ 버전을 ν™•μΈν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

 

 

 

ORA-17059 μ—λŸ¬λŠ” λ‹€μ–‘ν•œ μ›μΈμœΌλ‘œ λ°œμƒν•  수 μžˆμ§€λ§Œ, λŒ€λΆ€λΆ„ 데이터 νƒ€μž…μ΄λ‚˜ ν˜•μ‹ λΆˆμΌμΉ˜μ™€ κ΄€λ ¨λœ λ¬Έμ œμž…λ‹ˆλ‹€. μœ„μ— μ œμ‹œλœ ν•΄κ²° 방법듀을 μ°¨κ·Όμ°¨κ·Ό 확인해 보면 문제 해결에 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

 

 

 

 

 

@Junesker


 

λ°˜μ‘ν˜•