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

ep6jt1vc  于 2023-08-08  发布在  Oracle
关注(0)|答案(1)|浏览(123)

我在自治数据库(ATP/AJD)中有一些JSON集合,我想将它们复制到另一个示例。

evrscar2

evrscar21#

如果您使用的是Oracle API for MongoDB,您始终可以选择使用mongoexport/mongoimportmongodump/mongorestorehttps://www.mongodb.com/docs/database-tools/mongodump/
否则,有两种选择。
第一个选项是可以使用DBMS_CLOUD.EXPORT_DATADBMS_CLOUD.CREATE_EXTERNAL_TABLE
在源数据库上,使用EXPORT_DATA将备份表复制到对象存储:

begin
DBMS_CLOUD.EXPORT_DATA (
      file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/tenant/b/mybucket/o/out.dmp',
      format => '{"type":"datapump"}',
      credential_name => 'DEF_CRED_NAME',
      query => 'SELECT * FROM MYCOLLECTION');
end;
/

字符串
然后,在目标数据库上,使用CREATE_EXTERNAL_TABLE将数据Map到:

begin
   DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
    table_name =>'MYCOLLECTION_EXT',
    credential_name =>'DEF_CRED_NAME',
    file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/tenant/b/mybucket/o/out.dmp',
    format => json_object('type' value 'datapump', 'rejectlimit' value '1'),
    column_list => 'ID VARCHAR2(255 byte),
                    CREATED_ON TIMESTAMP(6),
                    LAST_MODIFIED TIMESTAMP(6),
                    VERSION VARCHAR2(255 byte),
                    DATA BLOB');
END;
/


创建一个空集合(例如mycollection)并使用insert作为select加载它:

INSERT /*+ PARALLEL */ INTO NAVTNAHISTORY2 (ID, CREATED_ON, LAST_MODIFIED, VERSION, DATA)
SELECT /*+ PARALLEL */ ID, CREATED_ON, LAST_MODIFIED, VERSION, DATA FROM NAVTNAHISTORY_EXT;


使用“高”连接来支持平行加载。
请参阅:https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/dbms-cloud-package.html
第二个选项是你可以使用imdp/expdp。首先将集合表导出到对象存储:

expdp 'admin/xxxx@mydb_high' \
     credential=DEF_CRED_NAME \
     filesize=5GB \
     dumpfile=https://objectstorage.us-phoenix-1.oraclecloud.com/n/tenant/b/mybucket/o/out%u.dmp \
     parallel=16 \
     logfile=export.log \
     directory=data_pump_dir \
     TABLES=MYCOLLECTION


创建一个空集合(例如mycollection),然后使用imdp加载它

impdp 'admin/xxxx@mydb2_high' \
       credential=DEF_CRED_NAME \
       DUMPFILE=https://objectstorage.us-phoenix-1.oraclecloud.com/n/tenant/b/mybucket/o/out%u.dmp \
       TABLES=MYCOLLECTION \
       CONTENT=DATA_ONLY \
       parallel=16


参见:https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/export-data-create-dump-file.html#GUID-8D734C1A-FAF3-446C-B777-16DF62FB049E

相关问题