自治数据库用DBMS_CLOUD.COPY_DATA加载大文件遇ORA-30094错误
解决Oracle自治数据库DBMS_CLOUD.COPY_DATA加载大CSV时的ORA-30094错误
问题根源
ORA-30094表明数据库缺少版本39的时区数据文件,而自治数据库(ADB)作为托管服务,用户无法自行更新时区补丁。大文件加载时触发了并行处理或特定日期解析逻辑,才暴露出版本不匹配问题,小文件因加载模式不同未触发该问题。
可行解决方案
提交Oracle服务请求升级时区数据
先执行以下语句确认当前数据库的时区文件版本:SELECT version FROM v$timezone_file;如果版本低于39,直接通过Oracle Cloud控制台提交服务请求(SR),要求将你的自治数据库时区数据版本升级至39。ADB的时区补丁由Oracle官方维护,这是彻底解决问题的方法。
临时单线程加载规避
修改DBMS_CLOUD.COPY_DATA的format参数,强制单线程加载,避免并行处理触发的时区数据依赖:DBMS_CLOUD.COPY_DATA( table_name =>'test_landing_zone', credential_name =>'test2', file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/idqt8fo79xkv/b/test-upload/o/2025.csv', format => json_object('type' value 'csv', 'ignoremissingcolumns' value 'true', 'trimspaces' value 'lrtrim', 'ignoreblanklines' value 'true', 'delimiter' value ';', 'parallel' value '1') );明确日期格式解析规则
检查CSV中的日期字段是否包含时区信息或非标准格式,若存在,在format参数中指定明确的日期格式,避免数据库自动触发时区转换逻辑:DBMS_CLOUD.COPY_DATA( table_name =>'test_landing_zone', credential_name =>'test2', file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/idqt8fo79xkv/b/test-upload/o/2025.csv', format => json_object('type' value 'csv', 'ignoremissingcolumns' value 'true', 'trimspaces' value 'lrtrim', 'ignoreblanklines' value 'true', 'delimiter' value ';', 'dateformat' value 'YYYY-MM-DD HH24:MI:SS') );替换
dateformat的值为你CSV中实际的日期格式。
内容的提问来源于stack exchange,提问作者Lukas Korous
相关产品推荐
相关产品推荐

