

# Oracle 구체화된 보기로 마이그레이션
<a name="Oracle.Procedural.Importing.Materialized"></a>

Oracle 구체화된 보기 복제를 사용하여 최신 데이터 세트를 효율적으로 마이그레이션할 수 있습니다. 복제를 사용하면 대상 테이블을 원본 테이블과 동기화된 상태로 유지할 수 있습니다. 따라서 필요한 경우 나중에 Amazon RDS로 전환할 수 있습니다.

구체화된 보기로 마이그레이션하려면 먼저 다음 요구 사항을 충족해야 합니다.
+ 대상 데이터베이스에서 원본 데이터베이스로의 액세스를 구성합니다. 다음 예에서는 SQL\$1Net을 통해 RDS for Oracle 대상 데이터베이스가 원본에 연결할 수 있도록 원본 데이터베이스에서 액세스 규칙이 활성화되었습니다.
+ RDS for Oracle DB 인스턴스에서 원본 데이터베이스로 연결되는 데이터베이스 링크를 생성합니다.

**구체화된 보기를 사용하여 데이터 마이그레이션**

1. 원본 및 RDS for Oracle 대상 인스턴스 모두에서 동일한 암호로 인증할 수 있는 사용자 계정을 생성합니다. 다음 예에서는 이름이 `dblink_user`인 사용자를 생성합니다.

   ```
   CREATE USER dblink_user IDENTIFIED BY my-password
     DEFAULT TABLESPACE users
     TEMPORARY TABLESPACE temp;
      
   GRANT CREATE SESSION TO dblink_user;
   
   GRANT SELECT ANY TABLE TO dblink_user;
   
   GRANT SELECT ANY DICTIONARY TO dblink_user;
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

1. 새로 생성된 사용자를 사용하여 RDS for Oracle 대상 인스턴스에서 원본 인스턴스로의 데이터베이스 링크를 생성합니다.

   ```
   CREATE DATABASE LINK remote_site
     CONNECT TO dblink_user IDENTIFIED BY my-password
     USING '(description=(address=(protocol=tcp) (host=my-host) 
       (port=my-listener-port)) (connect_data=(sid=my-source-db-sid)))';
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

1. 링크를 테스트합니다.

   ```
   SELECT * FROM V$INSTANCE@remote_site;
   ```

1. 원본 인스턴스에서 주 키와 구체화 보기 로그를 사용하여 샘플 테이블을 생성합니다.

   ```
   CREATE TABLE customer_0 TABLESPACE users 
     AS (SELECT ROWNUM id, o.* 
         FROM   ALL_OBJECTS o, ALL_OBJECTS x
         WHERE  ROWNUM <= 1000000);
   
   ALTER TABLE customer_0 ADD CONSTRAINT pk_customer_0 PRIMARY KEY (id) USING INDEX;
   
   CREATE MATERIALIZED VIEW LOG ON customer_0;
   ```

1. 대상 RDS for Oracle DB 인스턴스에서 구체화된 보기를 생성합니다.

   ```
   CREATE MATERIALIZED VIEW customer_0 
     BUILD IMMEDIATE REFRESH FAST 
     AS (SELECT * 
         FROM   cust_dba.customer_0@remote_site);
   ```

1. 대상 RDS for Oracle DB 인스턴스에서 구체화된 보기를 새로 고칩니다.

   ```
   EXEC DBMS_MVIEW.REFRESH('CUSTOMER_0', 'f');
   ```

1. 구체화된 보기를 삭제하고 `PRESERVE TABLE` 절을 포함하여 구체화된 보기 컨테이너 테이블과 그 내용을 보관합니다.

   ```
   DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;
   ```

   보관한 테이블에는 끊긴 구체화된 보기와 같은 이름이 있습니다.