在 RDS for Oracle 和 Amazon EFS 文件系统之间传输文件 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 RDS for Oracle 和 Amazon EFS 文件系统之间传输文件

要在 RDS for Oracle 实例和 Amazon EFS 文件系统之间传输文件,请至少创建一个 Oracle 目录并配置 EFS 文件系统权限以控制数据库实例访问权限。

创建 Oracle 目录

要创建 Oracle 目录,请使用过程 rdsadmin.rdsadmin_util.create_directory_efs。 过程具有以下参数。

参数名称 数据类型 默认值 必需 描述

p_directory_name

VARCHAR2

Oracle 目录的名称。

p_path_on_efs

VARCHAR2

EFS 文件系统上的路径。路径名的前缀使用模式 /rdsefs-fsid/,其中 fsid 是 EFS 文件系统 ID 的占位符。

例如,如果您的 EFS 文件系统名为 fs-1234567890abcdef0,并且您在此文件系统上创建了一个名为 mydir 的子目录,则可以指定以下值:

/rdsefs-fs-1234567890abcdef0/mydir

假设您在 EFS 文件系统 fs-1234567890abcdef0 上创建了一个名为 /datapump1 的子目录。以下示例创建一个 Oracle 目录 DATA_PUMP_DIR_EFS,该目录指向 EFS 文件系统上的 /datapump1 目录。p_path_on_efs 参数的文件系统路径值以字符串 /rdsefs- 为前缀。

BEGIN rdsadmin.rdsadmin_util.create_directory_efs( p_directory_name => 'DATA_PUMP_DIR_EFS', p_path_on_efs => '/rdsefs-fs-1234567890abcdef0/datapump1'); END; /

向 EFS 文件系统传输数据和从其中传输数据:示例

以下示例使用 Oracle Data Pump 将名为 MY_TABLE 的表导出到文件 datapump.dmp。此文件位于 EFS 文件系统上。

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'EXPORT', job_mode => 'TABLE', job_name=>null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'datapump.dmp', directory => 'DATA_PUMP_DIR_EFS', filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'datapump-exp.log', directory => 'DATA_PUMP_DIR_EFS', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

以下示例使用 Oracle Data Pump 从文件 datapump.dmp 中导出名为 MY_TABLE 的表。此文件位于 EFS 文件系统上。

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'TABLE', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'datapump.dmp', directory => 'DATA_PUMP_DIR_EFS', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'datapump-imp.log', directory => 'DATA_PUMP_DIR_EFS', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

有关更多信息,请参阅 将数据导入到 Amazon RDS 上的 Oracle