데이터 공유 도구로 오류 해결
이 장에서는 성능 저하를 유발하는 문제와 이러한 문제를 해결하는 방법에 대한 지침을 제공합니다.
항목:
- 라이브 공유 기능 느린 성능
- 공유 테이블 질의 시도 실패
- 원격 IP 허용 목록으로 인해 HTTP 403 무단
문제:HTTP 403 - Unauthorized오류로 인해 공유 데이터 액세스 또는 원격 데이터 다운로드가 실패합니다.
상위 항목: 데이터 공유 도구
라이브 공유 기능 느린 성능
ECPU가 증가함에 따라 복잡한 쿼리를 실행하는 동안 데이터 공유 도구의 라이브 공유 기능 성능이 향상됩니까?
아니요, 그렇지 않습니다. 이 경우 복잡한 실행 질의 성능을 향상시키기 위해 Data Studio를 사용하여 DOP(병렬도)를 구성해야 합니다.
Data Studio를 사용하여 DOP(병렬도) 구성
Database Actions 인스턴스의 라이브 공유 기능이 증가된 ECPU 값으로 실행되는 경우 기본적으로 복잡한 실행 중인 쿼리의 성능이 향상되지 않습니다.
DOP 옵션을 사용하여 복잡한 실행 query의 성능을 향상시킬 수 있습니다. DOP는 각 병렬 계획 실행에 대해 단일 명령문을 실행하기 위해 사용되는 프로세서 수를 설정합니다. 이 절에서는 Data Studio의 라이브 공유 기능을 사용하여 자율운영 AI 데이터베이스에서 degree of parallelism(DOP) 구성 옵션을 구성하는 방법에 대해 설명합니다.
이 예에서는 라이브 공유 기능을 사용하고 압축되지 않은 크기가 1TB인 테이블을 공유합니다.
시작하기 전에 고려해야 할 몇 가지 사항은 다음과 같습니다.- DOP 값을 구성하는 옵션은
admin를 통해서만 수행할 수 있습니다.
- Database Actions 인스턴스에 관리자로 로그인하고 관리에서 Resource Management 규칙 설정을 선택합니다.
- 기본 동시성 값 및 DOP를 확인합니다.
- 공유를 제공자로 생성합니다.
- 소비자로 공유를 사용하고 공유 위에 외부 쿼리를 생성하여 쿼리 실행 시간을 기록합니다.
- 제공자 및 소비자로서 ECPU를 현재 값보다 큰 값으로 늘리고 질의 실행 시간을 기록합니다.
MEDIUM소비자 그룹에 대한DOP값을 구성합니다.- 동일한 공유를 사용하고 동일한 테이블의 질의 실행 시간을 기록합니다.
주:
ECPU 수 및 DOP 값을 ADMIN 권한이 있는 제공자로 구성해야 합니다.
- 공유를 제공자로 생성합니다.
- 공유 제공을 누르고 +공유 생성을 선택합니다.
- 공유 만들기 마법사의 [일반 사항] 탭의 이름 필드에 공유 이름을 입력합니다. 예: TEST.
설명 필드에 공유하는 데이터에 대한 설명을 입력합니다. 이 필드는 선택사항입니다.
게시 세부정보 탭으로 진행하려면 다음을 선택합니다.
- 마법사의 [세부정보 테이블 게시] 탭에서 데이터 공유 직접 연결을 선택합니다.
다음을 누르십시오.
- 마법사의 테이블 선택 탭에 있는 드롭다운 메뉴에서 스키마를 선택하고 사용 가능한 테이블에서
CUSTOMER테이블을 끌어 놓습니다.주:
이 예제에서는 크기가 큰Customer라는 단일 테이블을 공유합니다.다음을 눌러 공유 만들기 마법사의 [수신자] 탭으로 이동합니다.
- 공유 만들기 마법사의 [수신자] 탭에 있는 드롭다운에서
MY_COMPARTMENT을 선택합니다. - 생성을 선택하여 공유를 생성합니다.
- 소비자로 공유를 사용하고 공유 위에 외부 쿼리를 생성하여 쿼리 실행 시간을 기록합니다.
- 공급자로 공유를 생성한 후 제공자가 공유하는 데이터를 소비하게 됩니다.
자세한 내용은 공유 소비를 참조하십시오.
- 소비자로 로그인하여 데이터 공유 제공자에 가입하고 공유의 데이터에 액세스합니다.
- 데이터 공유 도구의 제공자 및 소비자 페이지에서 공유 소비 타일을 눌러 공유 소비 페이지를 표시합니다.
- 공유 제공자에 가입 드롭다운 목록을 누른 다음 라이브 공유 제공자에 가입 옵션을 누릅니다.
- 공유 제공자 세부정보에서 제공자 이름을 선택합니다. 이 예에서
TPUSER은 제공자의 이름입니다. - [공유에 가입] 제공자 설정 마법사 페이지의 공유 추가 패널에서 사용 가능한 공유 섹션의 테스트를 누른 다음 (>) 아이콘을 누릅니다.
- 이 도구는 선택한 공유 섹션에 공유를 추가합니다. 가입을 누릅니다.
TPUSER공유 제공자가 성공적으로 생성되었습니다. 정보 메시지가 표시됩니다. 공유 탭이 선택된 상태로 데이터 로드 페이지로 이동합니다.TESTSHARE데이터 공유 노드를 확장하여 객체를 표시합니다.TPUSER.CUSTOMER공유 테이블을 끌어 놓아 데이터 로드 작업에 추가합니다.- 공유 테이블이 데이터 링크 작업에 추가됩니다. 이 작업을 실행하면 공유된
CUSTOMER테이블 위에 새CUSTOMER뷰가 생성됩니다. - 시작을 누릅니다. 클라우드 저장소에서 링크 시작 대화상자가 표시됩니다. 실행을 누릅니다. 작업이 성공적으로 완료되면 링크 아이콘이 표시됩니다.
CUSTOMER뷰가 생성됩니다. - Database Actions | Data Share 배너를 누릅니다. Database Actions | Launchpad에서 Development 탭을 누른 다음 SQL 탭을 눌러 SQL Worksheet를 표시합니다.
CUSTOMER테이블을 SQL Worksheet 영역으로 끌어다 놓습니다.- 사용 가능한 삽입 유형을 제공하는 대화상자가 표시됩니다.
- 선택, 적용 순으로 누릅니다.
- 실행을 누릅니다. 워크시트에 표시되는 자동으로 생성된 질의를 볼 수 있습니다.
- 질의 결과 탭 아래에 표시되는 실행 시간 필드에서 질의 실행 시간을 확인합니다.
- 공급자로 공유를 생성한 후 제공자가 공유하는 데이터를 소비하게 됩니다.
- 공급자 및 소비자로 ECPU를 늘리고 쿼리 실행 시간을 기록합니다.
- 자율운영 AI 데이터베이스 인스턴스의 ECPU를 OCI 콘솔에서 제공자로, 소비자로 늘립니다.
주:
자동 스케일링을 사용으로 설정하지 않았는지 확인합니다.이 예에서는 ECPU 수를 32로 늘렸습니다. 원하는 값으로 ECPU 수를 확장할 수 있습니다.
- 동일한
CUSTOMER공유를 반복하고 질의 실행 시간을 계산합니다. 테이블 query 시간은 변경되지 않습니다.
- 자율운영 AI 데이터베이스 인스턴스의 ECPU를 OCI 콘솔에서 제공자로, 소비자로 늘립니다.
MEDIUM소비자 그룹에 대한 DOP 값을 구성합니다.ADMIN권한이 있는 소비자로 데이터베이스 작업 인스턴스에 로그인합니다.-
선택기를 누르고 관리에서 Resource Management 규칙 설정을 선택합니다.
-
MEDIUM소비자 그룹의 동시성 제한을 8로 줄이고 변경사항 저장을 누릅니다. 동시성 제한을 줄이면 DOP가 증가합니다.
주:
이 단계에서 설정한 동시성 제한은 필요 조건에 지정한 기본값보다 작아야 합니다.- 후속 조치 단계- 병렬도 옵션을 구성한 후 공유 사용 프로세스를 반복하여 쿼리 실행 시간을 기록하기 위해 공유 위에 외부 쿼리를 생성합니다.
Query 실행 시간 값이 감소한 것을 확인할 수 있습니다.
서버를 재시작하지 않고도 동일한 복잡한 SQL 질의의 성능이 향상됩니다.
공유 테이블 질의 시도 실패
문제: 공유 테이블을 질의하려고 시도하면 지원되지 않는 델타 테이블 기능을 나타내는 오류가 발생하여 실패합니다.
가능한 원인: 공유 테이블은 델타 레이크 기능인 삭제 벡터를 사용합니다. 자율운영 AI 데이터베이스 델타 공유 소비자는 DV(삭제 벡터)를 지원하지 않습니다.
- Databricks 16.3 이상에서는
ALTER TABLE <table_name> DROP FEATURE deletionVectors;를 사용하고 다시 공유합니다. -
새 DV 사용을 중지하지만 프로토콜을 다운그레이드하지 않는
{{delta.enableDeletionVectors=false - }}설정에만 의존하지 마십시오. 델타 레이크 테이블 삭제 기능 및 테이블 프로토콜 다운그레이드의 지침을 따릅니다. - 자세한 내용은 삭제 벡터란?를 참조하십시오.
상위 항목: 데이터 공유 도구로 오류 해결
HTTP 403 원격 IP 허용 목록으로 인해 승인되지 않음
문제: HTTP 403 - Unauthorized 오류로 인해 공유 데이터 액세스 또는 원격 데이터 다운로드가 실패합니다.
가능한 원인: 원격 서비스(예: Azure Blob Storage 또는 다른 외부 끝점)는 자율운영 AI 데이터베이스에서 사용되는 공용 아웃바운드 IP 주소를 포함하지 않는 소스 IP 허용 목록으로 구성됩니다.
주:
다음 질의를 사용하여 아웃바운드 IP 주소를 식별하지 마십시오.
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual;
이 질의는 외부 서비스에 표시되는 아웃바운드 IP 주소가 아닌 현재 세션의 클라이언트 IP 주소를 반환합니다.
해결 방법: 호출자 IP 주소를 반환하는 퍼블릭 엔드포인트에 HTTPS 요청을 수행하여 자율운영 AI 데이터베이스 아웃바운드 IP 주소를 식별합니다. 그런 다음 원격 서비스 관리자에게 해당 IP 주소를 허용 목록에 추가하도록 요청합니다.
-
테스트 끝점에 대한 액세스 권한을 부여합니다.
BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'httpbin.org', lower_port => 443, upper_port => 443, ace => xs$ace_type( privilege_list => xs$name_list('http'), principal_name => USER, principal_type => xs_acl.ptype_db)); END; / -
자율운영 AI 데이터베이스 내에서 엔드포인트를 쿼리합니다.
SET SERVEROUTPUT ON DECLARE resp UTL_HTTP.resp; line VARCHAR2(32767); BEGIN resp := UTL_HTTP.begin_request('https://httpbin.org/ip'); resp := UTL_HTTP.get_response(resp); UTL_HTTP.read_line(resp, line, TRUE); DBMS_OUTPUT.put_line('Autonomous Database outbound IP = ' || line); UTL_HTTP.end_response(resp); END; /응답에는 외부 서비스에 표시되는 공용 IP 주소가 포함됩니다. 예:{{{"origin":"150.136.133.92"}}} -
원격 허용 목록에 IP 주소를 추가합니다.
IP 주소를 포함하도록 방화벽, 스토리지 계정 네트워크 규칙 또는 파트너측 허용 목록을 업데이트합니다.
허용 목록을 업데이트한 후 데이터 액세스 또는 데이터 공유 작업을 재시도하십시오.
상위 항목: 데이터 공유 도구로 오류 해결













