Last Updated on 4월 7, 2022 by Jade(정현호)
Contents
1. Autonomous Database
Autonomous Database 는 오라클 클라우드(Oracle Cloud) 의 Oracle Database 완전 관리형 클라우드 서비스(PaaS) 입니다.
이런 PaaS 서비스인 완전관리형 데이터베이스를 사용하게 되면 데이터베이스의 생성(프로비저닝)이 편리해지며 튜닝 및 자동화, 그리고 가용성 ,백업 ,복구 등을 손쉬게 사용할 수 있는 장점이 있습니다. 또한 데이터베이스의 옵션이 EE(Enterprise Edition) 이며 여러 유용한 옵션이 기본 제공되거나 유형에 따라서 RAC 도 지원되고 있습니다.
최근 출시 된 ARM 기반의 M1 프로세스가 탑재된 M1 MacBook(맥북) 에서 학습이나 개발 진행 단계에서 필요한 오라클 DB의 설치에 대해서 네이티브(Native) 또는 Docker(도커) 컨테이너로도 오라클(Oracle) DB가 설치가 어려운 부분이 있다고 여러 커뮤니티나 채널에서 관련한 문의 글을 많이 보았습니다.
M1 맥북이라서 또는 노트북 사양에 의해서 또는 사무실 과 집 ,커피숍 등 여러곳에서 개발을 계속 하는 환경 등의 여러 가지 상황에서 이번 포스팅에서 다루는 클라우드의 서비스형(PaaS) 데이터베이스(Database) 를 사용해보는 것도 좋을 것 같습니다.
그리고 오라클 클라우드 Autonomous Database 는 아래와 같은 장점을 가지고 있다고 합니다.
1-1 기능적 장단점
자율 구동: 데이터베이스 프로비저닝, 튜닝 및 확장 자동화
고가용성 데이터베이스를 프로비저닝하고, 특정 워크로드를 위해 구성 및 튜닝하고, 필요한 경우 컴퓨팅 리소스를 확장하여 자동으로 수행합니다.
자율 보안: 데이터 보호 및 보안 자동화
오라클 자율운영 데이터베이스를 통해 중요하고 규제된 데이터를 자동으로 보호하고, 데이터베이스에 보안 취약성 패치를 적용하며, 무단 액세스를 방지합니다.
자율 복구: 장애 감지, 장애 조치 및 복구 자동화
시스템 오류 및 사용자 오류를 자동으로 감지 및 보호하고 데이터 손실이 없는 대기 데이터베이스 장애 시 조치를 제공합니다.
1-2 Database 종류
Autonomous Database Family
Autonomous Database 패밀리로 대표적으로 아래 2가지 유형으로 서비스가 되고 있습니다.
• Autonomous Data Warehouse(ADW) 는 단어 그 자체로 DW 업무, 분석, 데이터 레이크(Data Lake) 등의 업무 유형에 최적화된 데이터베이스 입니다.
• Autonomous Transaction Processing(ATP) 는 OTLP 또는 그외 워크로드를 처리 할 수 있는 일반 적인 유형의 데이터베이스 입니다.
• Autonomous JSON Database 는 위의 이미지 없는 없지만 최근에 추가된 데이터베이스로 JSON 기능 지원과 특화된 데이터 베이스 입니다.
1-3 프리티어
프리티어 지원 Database
이러한 완전 관리형 Oracle Database 인 Autonomous Database 는 프리티어 등급에서도 제공되고 있으며 제공 스펙은 아래와 같습니다.
- Autonomous Database 2개 까지 지원
- 프로세서 OCP 1개
- 스토리지 용량 각각 20GB 제공
2. Database 생성
Autonomous Database 생성을 진행하도록 하겠습니다. 데이터베이스를 생성하기 전에 구획 (Compartment) 생성과 VCN 생성을 진행하시는 편이 좋습니다.
관련해서는 아래 포스팅에서 구획(Compartment) 및 VCN 생성 부분 까지만 참고하시면 될것 같습니다.
포스팅은 구획 생성 및 VCN 생성 이후 부분 부터 기술되어 있습니다.
2-1 자율운영 데이터베이스 선택
메뉴 -> Oracle Database -> 자율운영 데이터베이스 로 이동 합니다.
2-2 데이터베이스 생성 시작
먼저 구획을 이전에 생성한 구획으로 변경을 합니다. 구획이 변경된 것을 확인 한 후 "자율운영 데이터베이스 생성" 을 클릭 합니다.
2-3 기본 정보 및 유형 선택
기본 정보인 표시 이름 과 데이터베이스 이름을 지정 해야 합니다.
표시 이름은 클라우드에서 식별 하는 인스턴스의 이름이며 데이터베이스 이름은 접속을 위한 서비스 명 이라고 생각 하시면 될것 같습니다.
생성 후 확인 해보면 데이터베이스 이름인 SID 는 다른 이름으로 생성되어 있으며 입력하는 데이터베이스 이름은 접속하는 Connection String 에서 사용됩니다.
예시) 데이터베이스 이름을 orcl 로 설정 시
tnsnames 접속명 orcl_high
서비스명 : service_name=xxxx_orcl_high.adb.oraclecloud.com
작업 로드 유형 을 선택을 하면 되며 포스팅에서는 트랜잭션 처리 라고 기재되어 있는 ATP 를 선택하였습니다.
2-4 배치 유형 및 데이터베이스 구성
배치 유형을 선택하면 되며, 그 다음 데이터베이스 구성을 선택 합니다. 포스팅에서는 프리티어(항상 무료) 등급을 사용할 것 임으로 "항상 무료" 에 체크 하고 진행하였습니다.
항상 무료(프리티어)는 OCPU 1개, 스토리지 20GB 를 제공하고 있습니다.
2-5 관리자 정보 및 네트워크 액세스 선택
먼저 관리자 비밀번호를 입력해야 합니다. 관리자 이름은 ADMIN 으로 지정(고정) 되어 있으며 수정이 불가능 합니다.
그 다음 네트워크 액세스를 선택 해야 합니다.
모든 곳에서 액세스 또는 내부 OCI VCN 내에서만 접속 가능한 두가지 유형으로 선택 가능 하지만 아래 기재된 내용과 같이 프리티어(항상 무료) 에서는 선택이 불가능 합니다
(프리티어에서는 모든 곳에서 보안 액세스만 가능, 변경 불가)
2-6 관리자 정보 및 네트워크 액세스 선택
라이센스 유형 선택 후 아래의 "자율운영 데이터베이스 생성" 을 클릭 하여 생성을 완료 합니다.
Note
Autonomous Database 에서는 Create Tablespace 는 불가 합니다. Autonomous Database 생성시에 기본적으로 생성된 테이블스페이스 DATA 를 이용하시면 됩니다.
3. 데이터베이스 접속
생성된 데이터 베이스 접속하기 위해서는 웹 콘솔에서 전자지갑을 다운 받아서 접속을 할 수 있습니다.
3-1 전자 지갑 다운로드
3-1-1 DB 접속 선택
웹 콘솔로 접속하여 인스턴스 정보에서 상단에 있는 "DB 접속" 을 클릭 합니다.
3-1-2 전자 지갑 다운로드
전자 지갑 유형은 "인스턴스 전자 지갑" 을 선택 후 아래 전자 지갑 다운로드 를 클릭 합니다.
3-1-3 비밀번호 설정
전자 비밀번호를 입력 후 하단의 다운로드를 클릭 합니다.
[참고] 프리티어 등급 Autonomous 데이터베이스 Inactive 정책
프리티어 등급 Autonomous 데이터베이스를 7일간 사용하지 않았을 경우 자동 적으로 인스턴스는 정지(stop) 되게 되고 데이터는 보존 됩니다. 다시 사용을 원할 때는 Start 를 클릭 해서 인스턴스를 시작하여 사용할 수 있습니다.
자동 또는 수동으로 정지(stop) 된 후 비활성화 상태로 90일 이 경과 하면 데이터베이스가 회수되어 데이터가 영구적으로 삭제 될 수 있습니다.
Reference
• Inactivity Monitoring and Database Stoppage 참조
3-2 SQL Developer 를 통해 접속
3-2-1 SQL Developer 다운로드
먼저 오라클 접속 무료 툴인 SQL Developer 를 통해 접속을 하겠습니다. SQL Developer 는 아래 링크에서 다운로드 받으시면 됩니다.
별도의 JDK 가 설치 되어 있지 않다면 JDK가 포함된 버전을 다운로드 받으시면 됩니다.
3-2-2 tns 접속자 확인
먼저 다운로드 받은 전자지갑(Wallet) 을 압축을 해제 합니다. 그럼 아래와 같은 파일이 있습니다. 그 중에서 tnsnames.ora 파일을 확인해 보겠습니다.
3-2-3 tns 접속자 확인
아래와 같은 tns alias 정보 및 접속 프로토콜 ,접속 주소 등이 설정된 내역에 대해서 확인 할 수 있습니다.
3-2-4 Manage Concurrency
위에서 확인한 접속 스트링 별로 DB 에서 쿼리를 수행하는 동시성이나 성능 등이 달라지게 됩니다.
• high 는 최고의 성능, 가장 빠른 응답 속도 및 속도로 수행되지만 실행할 수 있는 동시 SQL문 수가 단 3개 뿐입니다.
• medium 은 high 보다 많은 동시 SQL 을 수행할 수 있으며 그 대신 high 에 비해서는 낮은 수준의 성능을 제공되게 됩니다.
• low 은 가장 많은 동시 SQL 을 지원하게 되며 각 SQL 문 마다 최소로 작은 수준의 리소스를 제공 합니다.
더 자세한 사항은 아래 문서를 참조하시면 됩니다.
Manage Concurrency .. Autonomous [Link]
3-2-5 SQL Developer 실행
다운로드 받은 SQL Developer 를 압축을 해제 하고 아래와 같이 SQL Developer 를 실행 합니다.
3-2-6 접속 유형
실행이 완료 되었다면 "+ 새로 만들기" 버튼을 클릭 후에 아래와 같이 접속 유형을 변경 합니다. 접속 유형은 "클라우드 전자 지갑" 으로 선택 하면 됩니다.
3-2-7 전자 지갑 선택
아래 이미지와 같이 찾아보기 를 클릭 합니다.
다운로드 받은 압축된 전자지갑 파일을 선택 후 하단의 열기 를 클릭 합니다.
3-2-8 TNS 접속 스트링 설정
전자 지갑을 선택하였다면 서비스, TNS 접속자를 선택 합니다. 포스팅에서는 high 를 선택 하였습니다. 해당 부분은 위에서 내용이 설명되어 있습니다.
3-2-9 DB 접속 시도
DB 접속을 위한 몇가지 설정만 하면 됩니다.
Name 은 툴에서 식별 가능한 정보 입니다
사용자 정보 : admin 계정의 비밀번호를 입력 합니다.
서비스 에서 사용할 tns connection alias 를 선택 합니다.
입력을 다하였다면 테스트 버튼을 클릭하여 접속 가능한지 테스트를 진행 합니다. 테스트가 완료 되었다면 실제 접속 을 시도 합니다.
3-2-10 DB 접속 및 조회
접속이 완료 되었다면 아래와 같이 쿼리를 수행시켜서 정상적으로 조회 되는지 확인 해보시면 될 것 같습니다.
3-3 DBeaver 를 통해 접속
SQL Developer 외 다른 SQL Tool 도 접속 방법을 확인해보겠습니다. 포스팅에서는 DBeaver Community Edition(CE) 를 사용하였 접속 하였습니다. 다운로드 및 설치는 아래 링크에서 참조하시면 됩니다.
It is free and open source (license).
Also you can get it from the GitHub mirror.
3-2-1 Create Database Connection
DBeaver 를 실행 후 + 접속 정보 생성 -> Oracle 를 선택 합니다.
3-2-2 OJDBC 다운로드 및 접속 방법 확인
아래 링크의 경로에서는 JDBC 를 통해서 Autonomous Database 에 접속하는 방법에 대해 기술되어 있습니다.
oracle.com/java-connectivity-to-atp.html [LInk]
사이트에서는 여러 내용이 있으며 접속하기 위해서 2가지를 먼저 확인 및 다운로드를 진행하면 됩니다.
먼저 JDBC Driver 를 다운로드 받아야 합니다. 포스팅에서는 19.3 JDBC - ojdbc10-full.tar.gz 를 선택하여 다운로드 받았습니다.
다운로드 받은 odbc 는 압축을 해제하시면 됩니다.
그리고 아래에 있는 jdbc 접속 string 입력 예시를 확인 해두도록 합니다.
Example
DB_URL="jdbc:oracle:thin:@dbname_medium?TNS_ADMIN=/users/test/wallet_dbname/"
위의 내용은 예제로 db_home_medium 은 다운로드 받은 tnsnames.ora 파일을 확인 하시면 됩니다.
아래 이미지는 위에서 한번 설명한 포스팅 시스템의 다운로드 받은 tnsnames.ora 파일 입니다.
3-2-3 접속 정보 입력 및 Driver 셋팅
먼저 Basic | TNS | Custom 항목이 있으며 그 중 Custom 으로 선택을 변경 하고 나서 위에서 참조한 접속 문구열을 입력 합니다. 디렉토리 경로는 전자지갑(Wallet) 이 있는 디렉토리 위치를 기재 하면 됩니다.
그 다음 admin 그리고 패스워드를 입력 후 "Edit Driver Settings" 를 클릭 합니다.
3-2-4 기존 드라이버 삭제
Libraries 탭으로 이동 후 리스트에 보이는 기존의 드라이버를 모두 삭제를 진행 합니다. 삭제하여도 하단의 "Reset to Defaults" 를 클릭하면 원복이 가능 합니다.
모두 삭제 하였다면 Add Folder 를 클릭 합니다.
3-2-5 ojdbc 선택
다운로드 받은 ojdbc(압축을 해제한 디렉토리) 디렉토리를 선택 후 open 을 클릭 합니다.
기존 드라이버 삭제 후 신규 ojdbc 를 등록 하였다면 아래와 같이 확인될 것이며 하단의 확인 을 클릭 합니다.
3-2-6 데이터베이스 접속
접속 정보 입력 화면에서 하단의 "Test Connection" 을 클릭 합니다 설정이 정상적으로 완료 되었다면 아래 이미지와 같이 접속 정보를 확인 되게 됩니다. 확인 되었다면 아래 완료 버튼을 클릭 합니다.
접속이 되었다면 이전과 동일한 쿼리를 수행하여 정보가 출력 되는지 확인을 진행합니다.
3-4 Java 에서 jdbc 를 통해 접속
이번에는 DB Client Tool 이 아닌 Java 소스에서 JDBC 를 설정하여 접속을 시도 해보겠습니다.
3-4-1 DataSourceSample.java 다운로드
SQL Tool 이 아닌 Java 에서 접속하는 부분을 확인해 보도록 하겠습니다. 위에서 ojdbc 드라이버를 다운 받았던 사이트를 다시 참조합니다.
사이트 에서 아래 이미지와 같이 5번 항목에서 "DataSourceSample.java" 링크를 클릭 합니다.
GitHub 사이트로 링크가 오픈 되며, 페이지에서 Raw 버튼에서 오른쪽 마우스 클릭 후 "링크를 다른 이름으로 저장" 을 선택하여 java 파일을 다운로드 받습니다.
3-4-2 Java 파일 수정
파일을 다운로드 받았다면 메모장 등의 편집기로 파일을 오픈 합니다. 그리고 몇가지를 수정하도록 하겠습니다
1) 접속 정보 및 계정 정보 수정
// The recommended format of a connection URL is the long format with the // connection descriptor. // final static String DB_URL= "jdbc:oracle:thin:@myhost:1521/myorcldbservicename"; <-- // 주석처리를 합니다. // For ATP and ADW - use the TNS Alias name along with the TNS_ADMIN when using 18.3 JDBC driver // final static String DB_URL="jdbc:oracle:thin:@wallet_dbname?TNS_ADMIN=/Users/test/wallet_dbname"; // In case of windows, use the following URL // 아래 DB_URL 의 주석을 해제 후 이전의 DBeaver 와 동일하게 접속 스트링을 입력 합니다. final static String DB_URL="jdbc:oracle:thin:@orcl_medium?TNS_ADMIN=/Users/Downloads/Wallet_orcl/"; final static String DB_USER = "admin"; final static String DB_PASSWORD = "패스워드입력";
2) 접속 후 실행 쿼리 수정
//// 변경 전 .executeQuery("select first_name, last_name from employees")) { System.out.println("FIRST_NAME" + " " + "LAST_NAME"); System.out.println("---------------------"); while (resultSet.next()) System.out.println(resultSet.getString(1) + " " + resultSet.getString(2) + " "); //// 변경 후 .executeQuery("SELECT instance_name, version, edition, database_type FROM v$instance")) { System.out.println("instance_name" + " " + "version" + " " + "edition" + " " + "database_type"); System.out.println("---------------------"); while (resultSet.next()) System.out.println(resultSet.getString(1) + " " + resultSet.getString(2) + " " + resultSet.getString(3) + " " + resultSet.getString(4) + " " );
3) CLASSPATH 환경 변수 지정
터미널에서 CLASSPATH 를 수정하도록 하겠습니다 CLASSPATH 에는 java 소스가 있는 디렉토리 및 이전에 다운로드 받은 ojdbc10.jar 파일이 있는 경로+파일명 2개를 설정 하면 됩니다.
export CLASSPATH=/Users/Downloads/DataSourceSample:/Users/Downloads/ojdbc10-full/ojdbc10.jar
4) 컴파일 및 실행
다운로드 받은 java 파일을 수정하였다면 javac 를 통해 컴파일 하고 java 를 통해 실행하면 됩니다. CLASSPATH 와 Java 소스가 정상적으로 수정이 되었다면 아래처럼 접속 후 쿼리 수행까지 정상적으로 수행되는 걸 확인 할 수 있습니다.
~]$ javac DataSourceSample.java ~]$ java DataSourceSample Driver Name: Oracle JDBC driver Driver Version: 19.3.0.0.0 Default Row Prefetch Value is: 20 Database Username is: ADMIN instance_name version edition database_type --------------------- feyk1pod1 19.0.0.0.0 EE RAC
추가로 자바 스프링(Java Spring) 또는 스프링 부트에서는 yaml 파일에 아래와 같은 형태로 작성하면 됩니다.
spring: datasource: driver-class-name: oracle.jdbc.OracleDriver url: jdbc:oracle:thin:@orcl_high?TNS_ADMIN=..경로/resources/Wallet_orcl username: username password: password
orcl_high 는 tnsnames.ora 파일에서 tns alias 를 확인 하시면 되며, 배포시에 포함될 수 있도록 resources 경로 아래에 파일을 위치 시키면 되겠습니다.
여기 까지 오라클 클라우드의 완전관리형 Oracle 데이터베이스 서비스인 Autonomous Database 의 생성 및 접속에 대해서 확인 해보았으며 추가적인 내용은 다시 업데이트 하도록 하겠습니다.
4. Reference
Reference Link
• java-connectivity-to-atp.html
• Manage Concurrency .. Autonomous
• stackoverflow.com
관련된 다른 글
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io
이제 막 데이터베이스를 배우기 시작하여 감이 오지 않았는데
여러 글에서 자세한 설명과 친철한 안내에 많은 도움을 받고 갑니다.
감사합니다. 많은 도움을 받았습니다.
안녕하세요
도움이 되었다니 다행이네요, 정성스러운 코멘트 감사 드립니다.
방문해주셔서 감사하고 좋은 하루 되세요
올려주신 글 너무 감사합니다. 맥으로 현재 공부중인 학생인데요 다 똑같이 따라했는데 마지막 패스부분이 조금 헷갈리는데 혹시 참고할만한 자료 있을지 궁금합니다.
안녕하세요
마지막 패스라고 질문 주신 부분은 어느 내용인가요?
댓글 남겨주세요
감사합니다
[export CLASSPATH=/Users/Downloads/DataSourceSample:/Users/Downloads/ojdbc10-full/ojdbc10.jar ]
여기 부분을 못했는데요.. 실행해보면 아래와 같은 오류문구가 뜨네요
SEVERE: attempt to configure ONS in FanManager failed with oracle.ons.NoServersAvailable: Subscription time out
중간의 Users 는 유저명이 들어가는데요
혹시 경로를 저대로 하셨나요?
실제 사용하시는 경로로 해야 합니다
export CLASSPATH=/Users/Downloads/DataSourceSample:/Users/Downloads/ojdbc10-full/ojdbc10.jar
위의 경로를 실제 ojdbc10-full이 있는 폴더 경로로 하여 바꾸어 보면
export CLASSPATH=/[경로]/Downloads/DataSourceSample:/[경로]/Downloads/ojdbc10-full/ojdbc10.jar
이렇게 하는게 맞는걸까요?
제가 지금 밖이라서 에러 트래킹과 직접 해볼수가 없네요
해보고 댓글 남길게요
감사합니다!!
1) 먼저 디렉토리가 정확히 확인이 안되신다면 mac 의 파인더의 기능에서 터미널을 열어보시는 것이 도움이 되실 것 입니다.
터미널을 오픈하였다면 pwd 명령어를 통해서 현재 디렉토리 경로를 확인 하실수 있습니다.
2) 동일하게 테스트 해봤을 때 맥에서도 문제 없이 되는 것을 확인하였습니다.
감사합니다
친절한 설명 감사합니다!!!
하신대로 따라하고 있는데 test connection을 누르면
IO 오류: could not resolve the connect identifier "orcl_medium"
could not resolve the connect identifier "orcl_medium"
could not resolve the connect identifier "orcl_medium"
이런식으로 뜨는데 혹시 뭐가 잘못된건가 알수 있을까요?
안녕하세요
어느부분에서 그러는 건가요?
예상하기로는 DBeaver 에서 그러는 것 같은데요
맞나요?
옙 맞습니다. 지금 계속 시도해 보고 있는데 이번에는
oracle.jdbc.config.file 접속 속성에서 지정된 파일의 읽기를 실패했습니다.: default
java.nio.file.FileSystemException: /Users/**/Downloads/Wallet_orcl/ojdbc.properties: Operation not permitted
java.nio.file.FileSystemException: /Users/**/Downloads/Wallet_orcl/ojdbc.properties: Operation not permitted
/Users/**/Downloads/Wallet_orcl/ojdbc.properties: Operation not permitted
/Users/**/Downloads/Wallet_orcl/ojdbc.properties: Operation not permitted
이런식으로 오류가 나고 있습니다
1. 지금 Mac 을 쓰시면서 경로가 맞나요?
2. 경로가 맞다면 아래 블로그를 참조하여 권한을 부여할 수 있는지를 체크해보세요
https://shanepark.tistory.com/169
혹시 해결 하셨나요 ?
글 잘 읽었습니다 ^^ 유용한 정보 감사드립니다.
혹시 admin 계정으로 table space 생성 시 권한 오류가 나서
admin 계정 롤 권한 변경 시도하니
not granted or does not exist 이렇게 error 메세지가 출력되더라구요,
그래서 sys or system 계정으로 접속 시도해도 login 오류때문에 접근이 안되고
어떻게 해야 table space를 생성할 수 있는지 알 수 있을까요?
오라클 클라우드 ATP 환경에 무료 버전 사용하고 있고
db tool은 sql developer 사용하고 있습니다.
답변 부탁드립니다.
안녕하세요
create tablespace 는 불가 합니다.
Ref : Oracle 문서
생성된 테이블 스페이스 중에서 DATA 를 이용하시면 됩니다.
감사합니다.
신속한 답변 감사드립니다. 참고 하겠습니다 ^^
sql developer 에는 잘 접속하였는데 이클립스에서 url연동 시 oracle.jdbc.config.file 접속 속성에서 지정된 파일의 읽기를 실패했습니다.: default 라는 오류가 반환되면서 데이터베이스 접속이 안되는거 같은데 혹시 문제점을 아시나요 ...?
참고로 맥북m1이고 오라클 클라우드 전자지갑 사용하였습니다 ㅠ
링크드린 블로그의 내용과 같이 eplipse 에 권한 부여된 것이 맞나요?
https://shanepark.tistory.com/169
이거 말씀하시는거 맞으신가요 ? 이클립스에 전체권한을 줘도 같은 현상 발생합니다 ㅠ ..
천천이 따라했더니 잘 되네요
감사합니다.
코멘트 감사합니다
좋은 하루 되세요
감사합니다! 덕분에 쉽게 DB 셋팅을 하게되었습니다!
안녕하세요
원만하게 DB구성이 되었다니 저도 기쁘네요!
친절한 코멘트 감사합니다.
좋은 하루 되세요