외부 카탈로그
Oracle AI Data Platform 외부의 위치에서 데이터를 소싱할 외부 카탈로그를 생성합니다.
외부 카탈로그는 AI Data Platform을 Oracle Autonomous AI Lakehouse, Oracle AI Database, Oracle Autonomous AI Transaction Processing과 같은 외부 데이터 소스 및 Snowflake, Azure SQL, MySQL와 같은 타사 저장소에 연결합니다. AI 데이터 플랫폼은 이러한 소스의 메타데이터를 검색 및 마스터 카탈로그로 동기화하여 사용자가 기본 데이터를 복제하지 않고도 원격 스키마 및 테이블을 찾아보고 쿼리할 수 있도록 합니다.
외부 카탈로그는 외부 소스 질의를 위해 외부 카탈로그 생성 중에 제공된 인증서를 사용합니다. 데이터 소스에 대한 자세한 내용은 내부 소스를 참조하십시오.
예를 들어, 사용된 Autonomous AI Lakehouse 사용자 자격 증명이 schema2가 아닌 schema1에 대한 액세스 권한이 있는 Autonomous AI Lakehouse 인스턴스에 대한 외부 카탈로그를 생성하는 경우 schema1만 외부 카탈로그에 나타납니다. 외부 카탈로그에 대한 권한이 있는 사용자는 자율운영 AI 레이크하우스 사용자가 액세스할 수 있는 스키마만 질의할 수 있습니다.
주:
AI 데이터 플랫폼은 PDB(플러그인할 수 있는 데이터베이스) 또는 Oracle에서 유지 관리하는 스키마 및 테이블에서 공유되는 스키마 및 테이블에서 데이터 수집을 지원하지 않습니다.자율운영 AI 레이크하우스 및 자율운영 AI 트랜잭션 처리(ATP)에 필요한 권한
- CREATE SESSION: 데이터베이스 연결
- 최소 권한 부여 또는 전용 읽기 롤을 통해 필요한 객체(테이블/뷰/외부 테이블)에 대한 SELECT 액세스 권한 부여
- READ, WRITE on DIRECTORY DATA_PUMP_DIR
제한사항
UPDATE 작업은 외부 카탈로그에 대해 지원되지 않습니다. 검색 및 질의 액세스에 외부 카탈로그 테이블을 사용합니다.
외부 카탈로그 생성에 사용된 인증서에 DDL 문을 실행할 수 있는 권한이 있는 경우에도 DDL은 지원되지 않습니다.
- 테이블 이름을 대문자로 제공할 경우 테이블은 대문자를 사용하여 생성되며 Autonomous AI Lakehouse에서 대소문자를 구분하지 않는 기본 동작을 따릅니다.
- 테이블 이름을 소문자로 제공할 경우 Autonomous AI Lakehouse에서 대소문자를 구분하여 테이블이 생성됩니다. 자율운영 AI 레이크하우스를 통해 생성된 테이블의 열 이름은 항상 대소문자를 구분하여 생성됩니다.
- 소스 열 설명은 외부 카탈로그 수집 및 새로고침 중 256 UTF-8바이트로 제한됩니다. 제한은 문자가 아닌 바이트 단위로 측정되므로 멀티바이트 문자를 포함하는 주석은 256자 이하의 문자를 포함할 경우 제한을 초과할 수 있습니다. 제한을 초과하면 메타데이터 수집 또는 새로고침이 실패할 수 있습니다. 소스 열 주석을 256 UTF-8바이트 이하로 줄인 다음 재시도하십시오.
Oracle Autonomous AI Database on Exadata Cloud@Customer를 Oracle AI Data Platform에 연결하는 방법
Oracle Autonomous AI Database on Exadata Cloud@Customer에서 실행되는 Oracle Autonomous AI Transaction Processing, Oracle Autonomous AI Database 또는 Oracle Autonomous AI Lakehouse 데이터베이스에 대한 외부 카탈로그를 생성할 수 있습니다. 전용 네트워크를 통해서만 데이터베이스에 액세스할 수 있는 경우 전용 네트워크 액세스 및 데이터베이스 SCAN 세부정보를 사용하여 AI 데이터 플랫폼 작업 영역을 구성합니다.
접속은 클라이언트 인증서 전자 지갑과 함께 TLS를 사용합니다.
요구 사항
- 데이터베이스가 프로비전되어 사용 가능합니다.
- 데이터베이스 클라이언트 인증서 전자 지갑을 다운로드했습니다.
- 데이터베이스 SCAN 정규화된 도메인 이름과 TLS 리스너 포트를 알고 있습니다.
- SCAN 이름은 AI 데이터 플랫폼 작업 영역에서 사용되는 개인 네트워크에서 확인할 수 있습니다.
- 네트워크 경로 및 보안 규칙은 작업 영역 네트워크에서 데이터베이스 리스너 포트로의 트래픽을 허용합니다.
- 필요한 VCN, 서브넷 및 네트워크 보안 그룹을 검사할 수 있는 권한이 있습니다.
- 데이터베이스 유저는 외부 카탈로그를 통해 표시하려는 스키마 및 객체에 대해 CREATE SESSION 및 SELECT 권한을 가집니다.
- 데이터베이스 사용자는 의도한 읽기 또는 쓰기 작업에 필요한 추가 권한을 가집니다.
전용(private) 연결로 작업 영역 생성
- Oracle Exadata Cloud@Customer 환경에 대한 접속을 제공하는 VCN 및 서브넷을 제공합니다.
- 고급 네트워크 옵션에서 내 데이터 소스에 SCAN 프록시를 통한 액세스 필요를 선택합니다.
- 데이터베이스 SCAN 정규화된 도메인 이름을 입력합니다.
- 데이터베이스 TLS 리스너 포트를 입력합니다.
외부 카탈로그 생성
- 외부 소스 유형의 경우 Oracle Autonomous AI Transaction Processing을 선택합니다.
- 접속 방법에 대해 전자 지갑을 선택합니다.
- 데이터베이스에서 다운로드한 클라이언트 인증서 전자 지갑을 업로드합니다.
- 전자 지갑에서 필요한 데이터베이스 서비스를 선택합니다.
- 필요한 경우 전자지갑 비밀번호를 제공하십시오.
- 데이터베이스 네트워크 및 SCAN 주소에 대한 액세스 권한으로 위에서 구성한 작업 영역을 선택합니다.
- 연결을 테스트하여 모든 항목이 올바르게 구성되었는지 확인합니다.
연결 유효성 검사
- 예상한 스키마 및 테이블이 외부 카탈로그에 나타나는지 확인합니다.
- 프라이빗 작업 영역에서 컴퓨트 클러스터를 시작하거나 선택합니다.
- 다음 세 부분으로 구성된 이름을 사용하여 검색된 테이블을 query합니다.
SELECT *
FROM <catalog_name>.<schema_name>.<table_name>;SQL을 사용하여 외부 카탈로그 새로고침
SQL 문법을 사용하여 외부 카탈로그에 대한 메타 데이터와 해당 스키마 및 테이블을 새로 고치면 컨텐트가 외부 소스와 동기화됩니다.
외부 카탈로그를 새로 고치려면 노트북에서 다음 SQL 명령을 사용합니다.
REFRESH EXTERNAL CATALOG <<catalog_name>>외부 카탈로그의 스키마를 새로 고치려면 다음을 사용합니다.
REFRESH SCHEMA IN EXTERNAL CATALOG <<catalog_name.schema_name>>External Catalog의 스키마에 있는 테이블을 Refresh하려면 다음을 사용합니다.
REFRESH TABLE IN EXTERNAL CATALOG <<catalog_name.schema_name.table_name>>자세한 내용은 SQL 문법을 참조하십시오.
외부 카탈로그 비밀번호 변경
소스 액세스를 계속할 수 있도록 외부 카탈로그에 대한 필수 비밀번호를 업데이트할 수 있습니다.
- 왼쪽 탐색 창에서
마스터 카탈로그를 누릅니다. - 카탈로그 탭에서 카탈로그를 찾고
작업을 누른 다음 비밀번호 변경을 누릅니다. - 외부 카탈로그에 대한 새 비밀번호를 입력하고 저장을 누릅니다.
외부 카탈로그 삭제
더 이상 필요하지 않은 경우 외부 카탈로그를 삭제할 수 있습니다.
외부 카탈로그를 삭제하면 로컬에 저장된 메타 데이터만 삭제됩니다. 외부 데이터 소스의 데이터는 영향을 받지 않습니다.
외부 카탈로그 내의 테이블에서 데이터 삭제
카탈로그 및 테이블이 푸시다운 SQL DELETE를 지원하도록 구성된 경우 Spark 쓰기 경로를 사용하여 외부 카탈로그 테이블에서 행을 삭제할 수 있습니다.
카탈로그 ID를 사용하여 테이블 데이터 삭제: Python 예제
from pyspark.sql.types import StructType
df = spark.createDataFrame([], StructType([]))
df.write
.format("aidataplatform")
.option("catalog.id", "<catalog>")
.option("pushdown.sql", "DELETE FROM <schema>.<target_table> WHERE ID = 2")
.save()
카탈로그 ID를 사용하여 테이블 데이터 삭제: Scala 예제
val df = spark.emptyDataFrame
df.write
.format("aidataplatform")
.option("catalog.id", "<catalog>")
.option("pushdown.sql", "DELETE FROM <schema>.<target_table> WHERE ID = 2")
.save()
테이블 데이터 삭제를 위한 수집 스타일 샘플: Python 예제
from pyspark.sql.types import StructType
df = spark.createDataFrame([], StructType([]))
df.write
.format("aidataplatform")
.option("data.asset.type", "ORACLE_ALH")
.option("tns.alias", alhTns)
.option("user.name", userName)
.option("wallet.content", alhWalletContent)
.option("password", alhPassword)
.option("pushdown.sql", "DELETE FROM ADMIN.PUSHDOWN_FEATURE WHERE ID = 2")
.save()테이블 데이터 삭제를 위한 수집 스타일 샘플: Scala 예제
val df = spark.emptyDataFrame
df.write
.format("aidataplatform")
.option("data.asset.type", "ORACLE_ALH")
.option("tns.alias", alhTns)
.option("user.name", userName)
.option("wallet.content", alhWalletContent)
.option("password", alhPassword)
.option("pushdown.sql", "DELETE FROM ADMIN.PUSHDOWN_FEATURE WHERE ID = 2")
.save()


