You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON集合从一个Oracle自治数据库迁移至另一个?

复制Oracle自治数据库(ATP/AJD)中JSON集合到另一个实例的方法

下面是几种适配Oracle自治数据库场景的JSON集合迁移方案,可根据数据量、同步需求选择:

1. Oracle Data Pump(数据泵)批量迁移

适合大规模JSON集合的全量迁移,是自治数据库中最常用的批量数据转移方式。

  • 导出源库JSON数据:先创建云存储凭证,再导出包含JSON列的表(或指定JSON列):
    -- 创建云存储凭证(适配OCI对象存储或其他兼容存储)
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'OBJ_STORE_CRED',
        username => 'your_cloud_storage_user',
        password => 'your_cloud_storage_access_key'
      );
    END;
    /
    
    -- 导出JSON表到云存储
    BEGIN
      DBMS_CLOUD.EXPORT_DATA(
        credential_name => 'OBJ_STORE_CRED',
        file_uri_list => 'https://your-bucket-path/export_json_collection.dmp',
        query => 'SELECT * FROM your_json_table', -- 替换为你的JSON表名
        format => '{"type":"datapump"}'
      );
    END;
    /
    
  • 导入到目标库:在目标ATP/AJD实例中,使用相同凭证导入数据:
    -- 先确保目标库已创建相同结构的JSON表(或让Data Pump自动创建)
    BEGIN
      DBMS_CLOUD.IMPORT_DATA(
        credential_name => 'OBJ_STORE_CRED',
        file_uri_list => 'https://your-bucket-path/export_json_collection.dmp',
        table_name => 'target_json_table', -- 替换为目标表名
        format => '{"type":"datapump"}'
      );
    END;
    /
    
  • 注意:如果使用了自定义JSON集合类型,需先在目标库创建相同类型,避免导入报错。

2. DBMS_CLOUD跨库直接复制

当两个自治数据库处于同一OCI环境时,可通过数据库链接直接跨库复制,无需中间存储:

  • 创建源库数据库链接:在目标库中配置指向源ATP/AJD的链接:
    -- 先创建源库的访问凭证
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'SOURCE_DB_CRED',
        username => 'source_db_user',
        password => 'source_db_password'
      );
    END;
    /
    
    -- 创建数据库链接
    BEGIN
      DBMS_CLOUD.CREATE_DATABASE_LINK(
        db_link_name => 'SOURCE_ATP_LINK',
        hostname => 'source-atp-endpoint.adb.region.oraclecloud.com', -- 源库FQDN
        port => '1522',
        service_name => 'source_atp_service.adb.oraclecloud.com', -- 源库服务名
        credential_name => 'SOURCE_DB_CRED'
      );
    END;
    /
    
  • 直接复制数据:用INSERT或DBMS_CLOUD.COPY_DATA批量迁移:
    -- 简单INSERT(适合小数据量)
    INSERT INTO target_json_table
    SELECT * FROM your_json_table@SOURCE_ATP_LINK;
    
    -- 批量复制(适合大数据量)
    BEGIN
      DBMS_CLOUD.COPY_DATA(
        table_name => 'TARGET_JSON_TABLE',
        credential_name => 'SOURCE_DB_CRED',
        file_uri_list => 'dblink://SOURCE_ATP_LINK/your_json_table',
        format => '{"ignoremissingcolumns":true}'
      );
    END;
    /
    

3. JSON文件格式导出导入

适合小批量JSON数据,直接导出为纯JSON文件后导入:

  • 导出为JSON文件:
    BEGIN
      DBMS_CLOUD.EXPORT_DATA(
        credential_name => 'OBJ_STORE_CRED',
        file_uri_list => 'https://your-bucket-path/json_collection_export.json',
        query => 'SELECT JSON_SERIALIZE(json_column) FROM your_json_table', -- 序列化JSON列
        format => '{"type":"json"}'
      );
    END;
    /
    
  • 导入到目标库:
    BEGIN
      DBMS_CLOUD.IMPORT_DATA(
        credential_name => 'OBJ_STORE_CRED',
        file_uri_list => 'https://your-bucket-path/json_collection_export.json',
        table_name => 'TARGET_JSON_TABLE',
        column_list => 'json_column', -- 对应目标表的JSON列
        format => '{"type":"json", "ignoremissingcolumns":true}'
      );
    END;
    /
    

4. Oracle GoldenGate实时同步

如果需要持续同步JSON集合的变更(增量+全量),可以使用GoldenGate for Autonomous Databases:

  • 在源、目标ATP/AJD实例分别部署GoldenGate微服务
  • 配置抽取进程捕获源库JSON表的DML/DDL变更
  • 配置投递进程将变更同步到目标库的对应JSON表
  • 确保GoldenGate配置中启用JSON类型的变更支持

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:35:58