

# Aurora PostgreSQL용 관리형 계획 내보내기 및 가져오기
<a name="AuroraPostgreSQL.Optimize.Maintenance.ExportingImporting"></a>

관리형 계획을 내보내고 다른 DB 인스턴스로 가져올 수 있습니다.

**관리형 계획을 내보내려면**  
권한 있는 사용자는 `apg_plan_mgmt.plans` 테이블의 일부를 다른 테이블에 복사한 후, `pg_dump` 명령을 사용하여 저장할 수 있습니다. 다음은 예제입니다.

```
CREATE TABLE plans_copy AS SELECT * 
FROM apg_plan_mgmt.plans [ WHERE predicates ] ;
```

```
% pg_dump --table apg_plan_mgmt.plans_copy -Ft mysourcedatabase > plans_copy.tar
```

```
DROP TABLE apg_plan_mgmt.plans_copy;
```

**관리형 계획을 가져오려면**

1. 내보낸 관리형 계획의 .tar 파일을 계획이 복원되어야 할 시스템으로 복사합니다.

1. `pg_restore` 명령을 사용하여 tar 파일을 새 테이블로 복사합니다.

   ```
   % pg_restore --dbname mytargetdatabase -Ft plans_copy.tar
   ```

1. 다음 예제와 같이 `plans_copy` 테이블과 `apg_plan_mgmt.plans` 테이블을 병합합니다.
**참고**  
어떤 경우에는 한 버전의 `apg_plan_mgmt` 확장에서 덤프하여 다른 버전으로 복원할 수 있습니다. 이 경우 계획 테이블의 열은 다를 수 있습니다. 다른 경우에는 SELECT \$1를 사용하는 대신에 열에 명시적으로 이름을 지정합니다.

   ```
   INSERT INTO apg_plan_mgmt.plans SELECT * FROM plans_copy
    ON CONFLICT ON CONSTRAINT plans_pkey
    DO UPDATE SET
    status = EXCLUDED.status,
    enabled = EXCLUDED.enabled,
    -- Save the most recent last_used date 
    --
    last_used = CASE WHEN EXCLUDED.last_used > plans.last_used 
    THEN EXCLUDED.last_used ELSE plans.last_used END, 
    -- Save statistics gathered by evolve_plan_baselines, if it ran:
    --
    estimated_startup_cost = EXCLUDED.estimated_startup_cost,
    estimated_total_cost = EXCLUDED.estimated_total_cost,
    planning_time_ms = EXCLUDED.planning_time_ms,
    execution_time_ms = EXCLUDED.execution_time_ms,
    total_time_benefit_ms = EXCLUDED.total_time_benefit_ms, 
    execution_time_benefit_ms = EXCLUDED.execution_time_benefit_ms;
   ```

1. 관리형 계획을 공유 메모리에 다시 로드하고 임시 계획 테이블을 제거합니다.

   ```
   SELECT apg_plan_mgmt.reload(); -- refresh shared memory
   DROP TABLE plans_copy;
   ```