

# RDS for Oracle DB 인스턴스와 Amazon EFS 파일 시스템 간 파일 전송
<a name="oracle-efs-integration.transferring"></a>

RDS for Oracle 인스턴스와 Amazon EFS 파일 시스템 간에 파일을 전송하려면 하나 이상의 Oracle 디렉터리를 생성하고 DB 인스턴스 액세스를 제어하도록 EFS 파일 시스템 권한을 구성해야 합니다.

**Topics**
+ [Oracle 디렉터리 생성](#oracle-efs-integration.transferring.od)
+ [EFS 파일 시스템으로/EFS 파일 시스템에서 데이터 전송: 예제](#oracle-efs-integration.transferring.upload)

## Oracle 디렉터리 생성
<a name="oracle-efs-integration.transferring.od"></a>

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`인 하위 디렉터리를 생성하는 경우 다음 값을 지정할 수 있습니다. <pre>/rdsefs-fs-1234567890abcdef0/mydir</pre>  | 

EFS 파일 시스템 `fs-1234567890abcdef0`에 이름이 `/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 파일 시스템으로/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) 섹션을 참조하세요.