

# RDS for Oracle と Amazon EFS ファイルシステム間のファイルの転送
<a name="oracle-efs-integration.transferring"></a>

RDS for Oracle インスタンスと Amazon EFS ファイルシステム間でファイルを転送するには、Oracle ディレクトリを 1 つまたは複数作成し、DB インスタンスのアクセスを制御する EFS ファイルシステム権限を設定します。

**Topics**
+ [Oracle ディレクトリの作成](#oracle-efs-integration.transferring.od)
+ [EFS ファイルシステム間のデータ転送: 例](#oracle-efs-integration.transferring.upload)

## Oracle ディレクトリの作成
<a name="oracle-efs-integration.transferring.od"></a>

ディレクトリを作成するには、`rdsadmin.rdsadmin_util.create_directory_efs` のプロシージャを使用します。 プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  VARCHAR2  |  –  |  はい  |  Oracle ディレクトリの名前。  | 
|  `p_path_on_efs`  |  VARCHAR2  |  –  |  はい  |  EFS ファイルシステムのパス。パス名のプレフィックスには `/rdsefs-fsid/` パターンが使用されています。*fsid* は EFS ファイルシステム ID のプレースホルダーです。 例えば、`fs-1234567890abcdef0` という名前の EFS ファイルシステムがあり、この `mydir` という名前のファイルシステムにサブディレクトリを作成する場合、次の値を指定できます。 <pre>/rdsefs-fs-1234567890abcdef0/mydir</pre>  | 

`fs-1234567890abcdef0` という EFS ファイルシステムに、`/datapump1` という名前のサブディレクトリを作成したとします。次の例では、EFS ファイルシステムの `/datapump1` ディレクトリを指す Oracle ディレクトリ `DATA_PUMP_DIR_EFS` を作成しています。`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 ファイルシステム間のデータ転送: 例
<a name="oracle-efs-integration.transferring.upload"></a>

次の例では、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 を使用して、`MY_TABLE` という名前のテーブルを `datapump.dmp` ファイルからインポートしています。このファイルは 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 にデータをインポートする](Oracle.Procedural.Importing.md)」を参照してください。