본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 24. 07:35

oracle-ai-ready-data Skill로 Oracle Database의 스키마를 AI Ready Data로 평가해 보기

요약

Oracle Database의 스키마가 AI 활용에 적합한 'AI Ready Data'인지 평가하는 방법을 소개합니다. Select AI를 통해 NL2SQL, RAG, AI Agent 등 다양한 AI 기능을 구현하는 메커니즘을 다룹니다.

핵심 포인트

  • Select AI를 활용한 자연어-SQL 변환(NL2SQL) 기능
  • RAG 및 AI Vector Search를 통한 데이터 그라운딩 구현
  • 합성 데이터 생성(SDG)을 통한 보안 데이터 활용 방안
  • AI Agent 및 자동 오브젝트 선택을 통한 워크플로우 확장

이번에는 HR 스키마를 예로 들어, Oracle Database의 스키마가 AI Ready Data로서 어느 정도 정돈되어 있는지를 평가해 보겠습니다.

AI-ReadyData.png

Oracle Database에서는 Select AI, RAG, AI Vector Search, AI Agent 등 AI 관련 기능이 늘어나고 있습니다. Oracle Autonomous AI Database와 Oracle AI Database 모두에서 Select AI는 채팅, 자연어에서 SQL로의 변환 (NL2SQL) 생성, 합성 데이터 생성, AI 에이전트, 요약, 번역 등, 26ai와 19c 모두에서 일관된 코어 익스피리언스 (Core Experience)를 제공합니다.

OracleDatabaseのAI機能2.png

image.png

NL2SQL

Select AI의 핵심 기능 중 하나가 자연어에서 SQL로의 변환입니다. 이를 통해 사용자는 필요한 데이터 결과를 자연어로 기술하고, Select AI를 통해 SQL을 생성, 실행, 내레이션, 설명할 수 있습니다. -
Feedback

생성된 SQL이나 결과에 대해 피드백을 주고, NL2SQL의 정밀도 개선에 활용하는 기능입니다. -
Auto Object Selection

사용자의 프롬프트와 관련된 오브젝트를 자동으로 선택하여, LLM에 전달할 메타데이터의 범위를 적절하게 좁히기 위한 기능입니다. -
RAG

임베딩 (embedding) 생성, Vector Store로부터의 의미 검색, 취득한 정보에 의한 프롬프트 확장을 조합하여, 답변을 데이터로 그라운딩 (grounding) 하기 위한 기능입니다. -
SDG

Synthetic Data Generation의 약자로, 기밀성이 높은 운영 데이터를 사용하지 않고 스키마에 준거한 합성 데이터를 생성하기 위한 기능입니다. -
AI Agents

Select AI를 SQL 실행이나 RAG 등의 도구 이용을 포함하는 액션 지향 워크플로우로 확장하기 위한 기능입니다. -
Summarization

쿼리 결과나 텍스트를 자연어로 요약하기 위한 기능입니다. -
Translation

자연어에 의한 응답이나 콘텐츠를 다국어화하기 위한 기능입니다. -
Chat

사용자의 프롬프트를 LLM에 전달하여 통상적인 채팅 형식으로 응답하기 위한 기능입니다.

이러한 기능들을 보면, Oracle Database 측에서는 AI를 활용하기 위한 메커니즘이 상당히 늘어나고 있음을 알 수 있습니다.

한편, AI 기능이 준비되어 있다고 해서 대상 데이터를 그대로 안전하고 고정밀도로 사용할 수 있다고 단정할 수는 없습니다.

AI의 「환각 (Hallucination)」이나 오작동을 방지하거나 저감하기 위해서는, LLM이나 AI 에이전트에 전달할 데이터의 의미, 구조, 관계성, 신선도, 권한, 민감 정보의 취급이 명확해지는 것이 중요합니다.

AI Ready Data란, 단순한 「깨끗한 데이터」의 틀을 넘어, 대규모 언어 모델 (LLM)이나 AI 에이전트, 머신러닝 모델이 인간의 개입 없이 자율적으로 읽고, 추론하고, 액션을 일으킬 수 있도록 최적화된 데이터 구조 및 프로세스입니다.

Oracle Database의 스키마로 생각하면, 테이블이나 컬럼의 의미가 코멘트로 설명되어 있는 것, 기본키 (Primary Key)나 외래키 (Foreign Key)로 관계성이 명확해져 있는 것, 통계 정보나 신선도 정보를 확인할 수 있는 것, RAG나 Vector Search에 필요한 텍스트 열이나 VECTOR 열 설계가 되어 있는 것 등이 AI Ready Data의 중요한 요소가 됩니다.

따라서 이러한 AI 기능들을 사용하기 전에, 대상이 되는 스키마나 테이블이 AI 입장에서 다루기 쉬운 상태인지, 즉 AI Ready한 상태인지를 확인해 두고 싶은 상황이 있습니다.

예를 들어, 다음과 같은 관점입니다.

  • 테이블이나 컬럼에 코멘트가 설정되어 있는가
  • 기본키나 외래키가 정의되어 있는가
  • 통계 정보가 취득되어 있는가
  • RAG에 사용할 수 있는 텍스트 열이나 VECTOR 열이 있는가
  • Select AI / RAG / Agent 등의 Oracle AI 기능이 DB 측에서 보이는가

그래서 이번에는 Oracle Database용으로 작성한 oracle-ai-ready-data Skill을 사용하여, Autonomous AI Lakehouse 상의 HR 스키마를 AI Ready 평가해 보겠습니다.

image.png

이번에는, oracle-ai-ready-data

Skill을 사용하여 HR 스키마에 대해 다음 3가지 종류의 평가를 실행합니다.

평가내용
scan profile스키마 전체의 AI Ready 정도를 폭넓게 확인
...

이번에는 제1회로서, 우선 HR 스키마에 대한 평가 결과를 확인합니다.

다음 회차부터는 Select AI Profile을 생성하여 NL2SQL을 시도하거나, RAG / Vector Search도 시도해 보고자 합니다.

예정

  • 제1회: Oracle Database의 HR 스키마를 AI Ready 평가해 보기
  • 제2회: BAD_AI_READY 스키마를 만들어 AI Ready 평가에서 실패해 보기
  • 제3회: Select AI Profile을 만들어 NL2SQL 해보기
  • 제4회: Oracle AI Vector Search / RAG용 Vector Index를 만들어 보기
  • 제5회: AI Agent의 SQL Tool / RAG Tool을 시도해 보기

이번 검증 환경은 다음과 같습니다.

항목내용
DatabaseOCI Autonomous AI Lakehouse
...

Autonomous AI Lakehouse와 HR 스키마 생성은 다음 내용을 참고하십시오.

Autonomous AI Lakehouse 생성

HR 스키마 생성

이번 feature readiness 실행 결과에서는 다음과 같은 AI 관련 패키지를 확인할 수 있었습니다.

항목결과
DBMS_CLOUD_AIvisible
...

따라서 이번 Autonomous AI Lakehouse에서는 Oracle AI 기능의 토대가 존재하는 상태입니다.

다만, AI Profile이나 Vector Index는 아직 생성하지 않았기 때문에 즉시 이용 가능한 상태는 아니며, 기능은 보이지만 설정이 필요한 상태로 평가되었습니다.

oracle-ai-ready-data는 Oracle Database의 스키마나 Oracle AI 기능의 이용 준비 상황을 확인하기 위해 작성한 Skill입니다.

GitHub 리포지토리는 여기입니다.

이 Skill은 SQLcl로 Oracle Database의 메타데이터를 수집하고, Python 스크립트로 Markdown 리포트와 개선 SQL을 생성합니다.

주요 구성은 다음과 같습니다.

파일내용
scripts/oracle_ai_ready_collect.sqlscan / rag용 메타데이터 수집 SQL
scripts/score_oracle_ai_ready_scan.pyscan / rag 리포트 생성 스크립트
scripts/oracle_ai_feature_collect.sqlOracle AI Feature Readiness 수집 SQL
scripts/score_oracle_ai_feature_readiness.pyFeature Readiness 리포트 생성 스크립트
profiles/scan.yamlscan profile의 가중치 정의
profiles/rag.yamlrag profile의 가중치 정의
profiles/feature-readiness.yamlOracle AI 기능 확인용 profile
examples/bad_ai_ready_schema.sql실패 패턴 확인용 스키마 생성 SQL

oracle-ai-ready-data에서는 크게 다음과 같은 관점에서 Oracle Database의 AI Ready 정도를 확인합니다.

평가 관점내용
Clean기본키(Primary Key), 제약 조건(Constraint), 통계 정보 등 AI 처리의 전제가 되는 구조적 신뢰성
...

특히 이번에는 테이블 코멘트(Table Comment)와 컬럼 코멘트(Column Comment)를 중요하게 다룹니다.

oracle-ai-ready-data에서는 테이블 코멘트 또는 컬럼 코멘트에 누락이 있는 경우, 수치 점수와 관계없이 Mandatory comment gate가 fail 됩니다.

scanrag

scanrag는 둘 다 AI Ready 평가이지만, 목적이 조금 다릅니다.

Profile주요 목적
scan스키마 전체의 AI Ready 정도를 폭넓게 확인
ragRAG / Vector Search / Agent RAG 관점에서 확인

scan은 스키마 전체의 건강검진과 같습니다.

기본 키 (Primary Key), 외래 키 (Foreign Key), 코멘트 (Comment), 제약 조건 (Constraint), 통계 정보 (Statistics), 최신성 열 (Freshness column), 권한 (Privilege) 등을 폭넓게 확인합니다.

반면 rag는 RAG나 Vector Search의 정보원으로서 사용하기 용이한지를 중시합니다.

예를 들어, 검색 대상이 되는 텍스트 열이 있는지, VECTOR 열이 있는지, 근거 행을 고유하게 특정할 수 있는지, 데이터의 최신성을 설명할 수 있는지 등을 확인합니다.

이번 Skill에서는 다음과 같은 메트릭 (Metric)을 확인합니다.

Metric내용
Table comment coverage코멘트가 설정되어 있는 평가 대상 테이블의 비율
...LAST_ANALYZED가 입력되어 있는 테이블의 비율
Column stats coverageLAST_ANALYZED가 입력되어 있는 컬럼 (Column)의 비율
Recent stats coverage최근 통계 정보가 수집된 테이블의 비율
Freshness coverageUPDATED_AT 또는 LAST_UPDATE_DATE 등의 최신성 열이 있는 테이블의 비율
Source metadata coverageSOURCE_SYSTEM, BATCH_ID, CREATED_BY 등의 출처 정보가 있는 테이블의 비율
Text-bearing table coverageRAG 후보가 될 수 있는 텍스트 열을 가진 테이블의 비율
Vector table coverageVECTOR 타입 또는 임베딩 (Embedding) 후보를 가진 테이블의 비율
Sensitive candidate documentation민감 정보 후보 열 중 코멘트가 있는 열의 비율
Broad data grant absencePUBLIC 등 광범위한 대상에 대한 데이터 액세스 권한이 검출되지 않은 비율

이러한 항목들을 조합하여 Clean, Contextual, Consumable, Current, Correlated, Compliant 점수를 산출합니다.

Oracle AI Feature Readiness는 스키마의 품질이 아니라, Oracle Database 측에서 AI 기능을 사용할 수 있는 상태인지를 확인하는 평가입니다.

구체적으로는 다음과 같은 사항들을 확인합니다.

기능확인 내용
Select AI / NL2SQLDBMS_CLOUD_AI, CREATE_PROFILE, GENERATE 등이 보이는지
Select AI RAGCREATE_VECTOR_INDEX, AI Profile, Vector Index를 사용할 수 있는지
Oracle AI Vector SearchDBMS_VECTOR, DBMS_VECTOR_CHAIN, VECTOR 열, vector index를 사용할 수 있는지
AI AgentDBMS_CLOUD_AI_AGENT가 보이는지
Synthetic Data GenerationGENERATE_SYNTHETIC_DATA가 보이는지
NL2SQL FeedbackFEEDBACK이 보이는지
Auto Object Selection자동 object selection에 필요한 기능이 보이는지

이번에는 Autonomous AI Lakehouse에서 실행했기 때문에, DBMS_CLOUD_AI, DBMS_CLOUD_AI_AGENT, DBMS_VECTOR를 확인할 수 있었습니다.

다만, AI Profile이나 Vector Index는 아직 생성하지 않았기 때문에, 각 기능은 지원됨·설정 필요로 판정되었습니다.

이제부터 실제로 HR 스키마에 oracle-ai-ready-data를 실행해 보겠습니다.

GitHub에서 다운로드하여 Oracle SQLcl을 실행하는 클라이언트에 배치합니다.

git clone 명령어를 사용하는 경우는 다음과 같습니다.

git clone https://github.com/shirok-tech/oracle-ai-ready-data.git
cd oracle-ai-ready-data

디렉터리 구성은 다음과 같습니다.

oracle-ai-ready-data/
├── README.md
├── SKILL.md
...

oracle-ai-ready-data

그럼, 먼저 SQLcl로 메타데이터를 수집합니다.

1) oracle-ai-ready-data 실행

기본적인 실행 형식은 다음과 같습니다.

sql -s <user>/<password>@<connect_identifier> @scripts/oracle_ai_ready_collect.sql <schema_owner> <table_like_pattern> <profile>

이번 대상은 HR 스키마이므로, 다음과 같이 실행합니다.

sql -s admin/<password>@adb_high @scripts/oracle_ai_ready_collect.sql HR % scan

2) 메타데이터 .out 파일 취득

실행하면 다음과 같은 .out 파일이 생성됩니다.

oracle_ai_ready_scan_HR_scan.out

rag 프로파일의 경우는 다음과 같습니다.

sql -s admin/password@adb_high @scripts/oracle_ai_ready_collect.sql HR % rag

이 경우 다음 파일이 생성됩니다.

oracle_ai_ready_scan_HR_rag.out

scan 프로파일의 .out 파일로부터 Markdown 리포트와 개선 SQL을 생성합니다.

python3 scripts/score_oracle_ai_ready_scan.py \
oracle_ai_ready_scan_HR_scan.out \
--profile scan \
...

생성되는 파일은 다음과 같습니다.

파일내용
hr_scan_report.mdscan 프로파일의 평가 리포트
hr_scan_improvement.sql개선 SQL

다음으로 rag 프로파일의 리포트를 생성합니다.

python3 scripts/score_oracle_ai_ready_scan.py \
oracle_ai_ready_scan_HR_rag.out \
--profile rag \
...

생성되는 파일은 다음과 같습니다.

파일내용
hr_rag_report.mdrag 프로파일의 평가 리포트
hr_rag_improvement.sql개선 SQL

다음으로, Oracle AI Feature Readiness를 확인합니다.

1) oracle_ai_feature_collect.sql 실행

sql -s admin/password@adb_high @scripts/oracle_ai_feature_collect.sql HR %

2) .out 파일 취득

실행하면 다음 .out 파일이 생성됩니다.

oracle_ai_feature_readiness_HR.out

3) 리포트와 셋업 SQL 생성

.out 파일로부터 Markdown 리포트와 셋업 SQL 템플릿을 생성합니다.

python3 scripts/score_oracle_ai_feature_readiness.py \
oracle_ai_feature_readiness_HR.out \
--language ja \
...

생성되는 파일은 다음과 같습니다.

파일내용
oracle_ai_feature_readiness_HR.md
Oracle AI Feature Readiness 평가 리포트
oracle_ai_feature_setup_HR.sql
AI Profile / RAG / Agent 등의 설정 SQL 템플릿

이제부터 실제로 HR 스키마에 대해 실행한 결과를 살펴보겠습니다.

scan

profile 결과는 다음과 같습니다.

항목결과
종합 스코어0.67 / 1.00
...

Dimension별 스코어는 다음과 같습니다.

DimensionScore주요 근거
Clean0.50PK 100.0%, 제약 조건 100.0%, 통계 정보 0.0%
...

HR 스키마에서는 테이블 코멘트(Table comment)와 컬럼 코멘트(Column comment)가 100%였으며, Mandatory comment gate는 pass였습니다.

반면, 통계 정보(Statistics)가 수집되지 않았기 때문에 CleanCurrent 스코어가 낮아졌습니다.

주요 메트릭(Metric)은 다음과 같습니다.

MetricValueStatus
Table comment coverage100.0%pass
...

개선 SQL로는 통계 정보 수집을 위한 DBMS_STATS.GATHER_TABLE_STATS와 신선도(Freshness) 열 후보인 UPDATED_AT 추가 템플릿이 생성되었습니다.

BEGIN
DBMS_STATS.GATHER_TABLE_STATS(
ownname => 'HR',
...

신선도 열의 경우, 실제 애플리케이션에 영향이 있을 수 있으므로 템플릿으로서 주석 처리되어 있습니다.

-- ALTER TABLE "HR"."COUNTRIES" ADD "UPDATED_AT" TIMESTAMP(6);
-- ALTER TABLE "HR"."DEPARTMENTS" ADD "UPDATED_AT" TIMESTAMP(6);
-- ALTER TABLE "HR"."JOBS" ADD "UPDATED_AT" TIMESTAMP(6);
...

rag profile 결과는 다음과 같습니다.

항목결과
종합 스코어0.68 / 1.00
...

Dimension별 스코어는 다음과 같습니다.

DimensionScore주요 근거
Clean0.50PK 100.0%, 제약 조건 100.0%, 통계 정보 0.0%
...

rag profile에서는 RAG나 Vector Search 관점에서 텍스트 열(Text column)과 VECTOR 열도 확인합니다.

이번 HR 스키마의 결과는 다음과 같았습니다.

MetricValue
Text-bearing table coverage0.0%
Vector table coverage0.0%

HR 스키마는 테이블 코멘트, 컬럼 코멘트, 기본 키(Primary Key), 외래 키(Foreign Key) 등의 설명성이 높습니다.

따라서 Select AI / NL2SQL의 PoC(Proof of Concept) 대상으로 적합해 보입니다.

반면, RAG용 장문 텍스트 열이나 VECTOR 열은 없었습니다.

즉, HR 스키마 자체가 RAG용 벡터 스토어(Vector store)로 설계된 것은 아니며, RAG를 테스트하려면 문서 데이터, 청킹(Chunking), 임베딩 모델(Embedding model), 벡터 인덱스(Vector index) 등을 별도로 설계해야 할 것으로 보입니다.

다음은 Autonomous AI Lakehouse에서 Oracle AI Feature Readiness를 실행한 결과입니다.

항목결과
Feature readiness score0.60 / 1.00
...

처음 이 결과를 보았을 때, 바로 이용 가능한 기능: 없음이라고 표시되어 AI 기능이 없는 것인가 생각했습니다.

하지만 상세 내용을 보면 그렇지 않았습니다.

패키지 / 프로시저 흔적(Package / Procedure trace)에서는 다음을 확인할 수 있었습니다.

항목결과
DBMS_CLOUD_AI visibleyes
...

또한, DBMS_CLOUD_AI에서는 다음과 같은 프로시저(Procedure)도 확인할 수 있었습니다.

CREATE_PROFILE
CREATE_VECTOR_INDEX
GENERATE
...

DBMS_CLOUD_AI_AGENT에서는 다음과 같은 프로시저(Procedure)도 확인할 수 있었습니다.

CREATE_AGENT
CREATE_TASK
CREATE_TEAM
...

즉, 이번 Autonomous AI Lakehouse에서는 Select AI, RAG, AI Agent, SDG 등의 토대가 되는 기능들은 확인되었습니다.

다만, AI Profile은 아직 생성하지 않았기 때문에 즉시 사용할 수 있는 상태는 아니었습니다.

AI profile 은(는) 검출되지 않았습니다.

따라서 이번 사례에 대한 올바른 해석은 다음과 같습니다.

AI 기능이 없다
→ 오답
AI 기능은 있으나, AI Profile, Credential, Vector Index가 미생성 상태
...

Autonomous AI Lakehouse에서는 다음 사항을 확인할 수 있었습니다.

기능Autonomous AI Lakehouse설정·확인에 참고할 Oracle Document
DBMS_CLOUD_AI검출DBMS_CLOUD_AI Package Manage AI Profiles Select AI and Select AI Agent Capability Matrix
DBMS_CLOUD_AI_AGENT검출Select AI Agent Examples of Using Select AI Agent Select AI and Select AI Agent Capability Matrix
DBMS_VECTOR / DBMS_VECTOR_CHAIN검출Overview of Oracle AI Vector Search DBMS_VECTOR DBMS_VECTOR_CHAIN
AI Profile미생성Manage AI Profiles DBMS_CLOUD_AI Package
Select AI / NL2SQL지원함·설정 필요Manage AI Profiles Use AI Keyword to Enter Prompts Select AI and Select AI Agent Capability Matrix
Select AI RAG지원함·설정 필요Manage AI Profiles DBMS_CLOUD_AI Package Use AI Keyword to Enter Prompts
AI Agent지원함·설정 필요Select AI Agent Examples of Using Select AI Agent Select AI and Select AI Agent Capability Matrix

Autonomous AI Lakehouse에서는 DBMS_CLOUD_AI, DBMS_CLOUD_AI_AGENT, DBMS_VECTOR / DBMS_VECTOR_CHAIN이 확인되었습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0