解决DBMS_CLOUD_AI中ORA-20006错误:不支持的Object Store URI
DBMS_CLOUD_AIOpenAI集成ORA-20006Oracle AIPL/SQL
原文地址: https://btimmerman.hashnode.dev/how-to-fix-ora-20006-error-unsupported-object-store-uri-in-dbmscloudai
# 如何解决 ORA-20006 错误:DBMS_CLOUD_AI 中的不支持的 Object Store URI

在使用 `dbms_cloud_ai` 包的 `GENERATE_SYNTHETIC_DATA` 过程中,我遇到了 `ORA-20006` 错误,提示 URI 格式不支持。
```sql
ERROR at line 1:
ORA-20006: Unsupported object store URI - bearer://bearer://api.openai.com/v1/chat/completions
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD$PDBCS_260123_0", line 2252
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD_AI", line 18924
ORA-06512: at line 2
```
## 解决方案
### 1. 设置 ACL 规则
允许 HR 用户访问 OpenAI API:
```sql
begin
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'api.openai.com'
, ace => xs$ace_type(privilege_list => xs$name_list('http')
, principal_name => 'HR'
, principal_type => xs_acl.ptype_db)
);
END;
```
### 2. 创建 OpenAI 凭据
存储 API 密钥:
```sql
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OPENAI_CRED'
, username => 'OPENAI'
, password => 'sk-123sv*****1vmmdjhbAA' );
END;
```
### 3. 创建 AI 配置文件
必须包含 `provider_endpoint` 和 `model` 参数:
```sql
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OPENAI'
, attributes => JSON_OBJECT('provider' value 'openai'
,'credential_name' value 'OPENAI_CRED'
,'provider_endpoint' value 'https://api.openai.com/v1/chat/completions'
,'model' value 'gpt-5.2')
, status => 'enabled'
, description => 'AI profile to use OpenAI for HR schema'
);
END;
```
## 最终测试
成功执行数据生成:
```sql
BEGIN
DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
profile_name => 'OPENAI'
, object_name => 'EMP'
, owner_name => 'HR'
, record_count => 500
);
END;
```