

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 從 Oracle 資料庫遷移至 Amazon RDS for Oracle AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToRDSOracle"></a>

將 Oracle 結構描述和程式碼遷移到 Amazon RDS for Oracle 的一些考量事項：
+ AWS SCT 可以將目錄物件新增至物件樹狀結構。*目錄物件*是邏輯結構，每個結構都代表伺服器檔案系統上的實體目錄。您可以使用目錄物件搭配套件，例如 DBMS\$1LOB、UTL\$1FILE、DBMS\$1FILE\$1TRANSFER、DATAPUMP 公用程式等。
+ AWS SCT 支援將 Oracle 資料表空間轉換為 Amazon RDS for Oracle 資料庫執行個體。Oracle 將資料以邏輯方式存放在資料表空間中，並以實體方式存放在與相應資料表空間關聯的資料檔案中。在 Oracle 中，您可以使用資料檔案名稱來建立資料表空間。Amazon RDS 僅支援資料檔案、日誌檔案和控制檔案的 Oracle 受管檔案 (OMF)。 會在轉換期間 AWS SCT 建立所需的資料檔案。
+ AWS SCT 可以轉換伺服器層級角色和權限。Oracle 資料庫引擎是使用以角色為基礎的安全性。角色是一組權限，您可以用來授與給使用者或撤銷。Amazon RDS 的預先定義的角色 (稱為 DBA) 通常允許 Oracle 資料庫引擎的所有管理權限。以下權限不適用於使用 Oracle 引擎之 Amazon RDS 資料庫執行個體的 DBA 角色：
  + 更改資料庫
  + 更改系統
  + 建立任何目錄
  + 授予任何權限
  + 授予任何角色
  + 建立外部工作

  您可以對 Amazon RDS for Oracle 使用者角色授與所有其他權限，包括進階篩選及資料欄權限。
+ AWS SCT 支援將 Oracle 任務轉換為可在 Amazon RDS for Oracle 上執行的任務。轉換有幾個限制，包括下列項目：
  + 不支援可執行的任務。
  + 不支援使用 ANYDATA 資料類型做為引數的排程任務。
+ Oracle Real Application Clusters (RAC) One Node 是 Oracle Database Enterprise Edition 中的一個選項，與 Oracle Database 11g Release 2 一同推出。Amazon RDS for Oracle 不支援 RAC 功能。使用 Amazon RDS 異地同步備份以提供高可用性。

  在異地同步備份部署中，Amazon RDS 會自動佈建，並在不同的可用區域中維持同步待命複本。主資料庫執行個體會在待命複本的可用區域間進行同步複製。此功能可提供資料備援，排除 I/O 凍結，並降低系統備份時的延遲遽增。
+ Oracle Spatial 提供的 SQL 結構描述和函數，有助於 Oracle 資料庫中空間資料集合的儲存、擷取、更新和查詢。Oracle Locator 提供通常支援下列項目所需的功能：網際網路和無線服務型應用程式和合作夥伴型 GIS 解決方案。Oracle Locator 是功能有限的 Oracle Spatial 子集。

  若要使用 Oracle Spatial 和 Oracle Locator 功能，請將 SPATIAL 選項或 LOCATOR 選項 (兩者互斥) 新增至資料庫執行個體的選項群組。

  在 Amazon RDS for Oracle 資料庫執行個體上使用 Oracle Spatial 和 Oracle Locator 有一些先決條件：
  + 執行個體應使用 Oracle Enterprise Edition 12.1.0.2.v6 版或更新版本，或 11.2.0.4.v10 版或更新版本。
  + 執行個體應位於 Virtual Private Cloud (VPC) 內。
  + 執行個體應為可支援 Oracle 功能的資料庫執行個體類別。例如，db.m1.small、db.t1.micro、db.t2.micro 或 db.t2.small 資料庫執行個體類別不支援 Oracle Spatial。如需詳細資訊，請參閱 [Oracle 的資料庫執行個體類別支援](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html#Oracle.Concepts.InstanceClasses)。
  + 執行個體必須啟用 Auto Minor Version Upgrade (自動次要版本升級) 選項。如果存在 CVSS 分數 9 分以上的安全漏洞或其他公布的安全漏洞，Amazon RDS 會將您的資料庫執行個體更新為最新的 Oracle PSU。如需詳細資訊，請參閱 

    [Oracle 資料庫執行個體的設定](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ModifyInstance.Oracle.html#USER_ModifyInstance.Oracle.Settings)。
  + 如果您的資料庫執行個體是 11.2.0.4.v10 版或更新版本，您必須安裝 XMLDB 選項。如需詳細資訊，請參閱

    [Oracle XML 資料庫](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.XMLDB.html)。
  + 您應具有 Oracle 提供的 Oracle Spatial 授權。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle Spatial 和 Graph](https://shop.oracle.com/apex/product?p1=OracleSpatialandGraph)。
+ Data Guard 包含在 Oracle Database Enterprise Edition 中。使用 Amazon RDS 異地同步備份功能以提供高可用性。

  在異地同步備份部署中，Amazon RDS 會自動佈建，並在不同的可用區域中維持同步待命複本。主資料庫執行個體會在待命複本的可用區域間進行同步複製。此功能可提供資料備援，排除 I/O 凍結，並降低系統備份時的延遲遽增。
+ AWS SCT 支援在遷移至 Amazon RDS for Oracle 時轉換 Oracle DBMS\$1SCHEDULER 物件。 AWS SCT 評估報告指出是否可以轉換排程物件。如需有關搭配 Amazon RDS 使用排程物件的詳細資訊，請參閱 [Amazon RDS 文件](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.System.html#Appendix.Oracle.CommonDBATasks.ModifyScheduler)。
+ 對於從 Oracle 到 Amazon RDS for Oracle 的轉換，支援資料庫連結。資料庫連結為某一資料庫內的結構描述物件，讓您能夠存取另一個資料庫上的物件。另一個資料庫不需要是 Oracle 資料庫。不過，若要存取非 Oracle 資料庫，您必須使用 Oracle 異質服務。

  一旦建立資料庫連結，您可用 SQL 陳述式中的連結參閱另一資料庫內的表格、檢視和 PL/SQL 物件。若要使用資料庫連結，請附加 `@dblink` 至表格、檢視或 PL/SQL 物件名稱。您可用 SELECT 陳述式查詢另一資料庫內的表格或檢視。如需有關使用 Oracle 資料庫連結的詳細資訊，請參閱 [Oracle 文件](https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm#ADMIN12083)。

  如需有關使用資料庫連結與 Amazon RDS 的詳細資訊，請參閱 [Amazon RDS 文件](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.Database.html#Appendix.Oracle.CommonDBATasks.DBLinks)。
+  AWS SCT 評估報告提供轉換的伺服器指標。這類有關 Oracle 執行個體的各項指標包括：
  + 目標資料庫執行個體的運算和記憶體容量。
  + 不支援的 Oracle 功能，例如 Amazon RDS 不支援的 Real Application Cluster。
  + 磁碟讀寫負載。
  + 磁碟輸送量總平均。
  + 伺服器資訊，如：伺服器名稱、作業系統、主機名稱和字元集。

## RDS for Oracle 做為目標的權限
<a name="CHAP_Source.Oracle.ToRDSOracle.ConfigureTarget"></a>

若要遷移至 Amazon RDS for Oracle，請建立特權資料庫使用者。您可以使用下列程式碼範例。

```
CREATE USER user_name IDENTIFIED BY your_password;

-- System privileges
GRANT DROP ANY CUBE BUILD PROCESS TO user_name;
GRANT ALTER ANY CUBE TO user_name;
GRANT CREATE ANY CUBE DIMENSION TO user_name;
GRANT CREATE ANY ASSEMBLY TO user_name;
GRANT ALTER ANY RULE TO user_name;
GRANT SELECT ANY DICTIONARY TO user_name;
GRANT ALTER ANY DIMENSION TO user_name;
GRANT CREATE ANY DIMENSION TO user_name;
GRANT ALTER ANY TYPE TO user_name;
GRANT DROP ANY TRIGGER TO user_name;
GRANT CREATE ANY VIEW TO user_name;
GRANT ALTER ANY CUBE BUILD PROCESS TO user_name;
GRANT CREATE ANY CREDENTIAL TO user_name;
GRANT DROP ANY CUBE DIMENSION TO user_name;
GRANT DROP ANY ASSEMBLY TO user_name;
GRANT DROP ANY PROCEDURE TO user_name;
GRANT ALTER ANY PROCEDURE TO user_name;
GRANT ALTER ANY SQL TRANSLATION PROFILE TO user_name;
GRANT DROP ANY MEASURE FOLDER TO user_name;
GRANT CREATE ANY MEASURE FOLDER TO user_name;
GRANT DROP ANY CUBE TO user_name;
GRANT DROP ANY MINING MODEL TO user_name;
GRANT CREATE ANY MINING MODEL TO user_name;
GRANT DROP ANY EDITION TO user_name;
GRANT CREATE ANY EVALUATION CONTEXT TO user_name;
GRANT DROP ANY DIMENSION TO user_name;
GRANT ALTER ANY INDEXTYPE TO user_name;
GRANT DROP ANY TYPE TO user_name;
GRANT CREATE ANY PROCEDURE TO user_name;
GRANT CREATE ANY SQL TRANSLATION PROFILE TO user_name;
GRANT CREATE ANY CUBE TO user_name;
GRANT COMMENT ANY MINING MODEL TO user_name;
GRANT ALTER ANY MINING MODEL TO user_name;
GRANT DROP ANY SQL PROFILE TO user_name;
GRANT CREATE ANY JOB TO user_name;
GRANT DROP ANY EVALUATION CONTEXT TO user_name;
GRANT ALTER ANY EVALUATION CONTEXT TO user_name;
GRANT CREATE ANY INDEXTYPE TO user_name;
GRANT CREATE ANY OPERATOR TO user_name;
GRANT CREATE ANY TRIGGER TO user_name;
GRANT DROP ANY ROLE TO user_name;
GRANT DROP ANY SEQUENCE TO user_name;
GRANT DROP ANY CLUSTER TO user_name;
GRANT DROP ANY SQL TRANSLATION PROFILE TO user_name;
GRANT ALTER ANY ASSEMBLY TO user_name;
GRANT CREATE ANY RULE SET TO user_name;
GRANT ALTER ANY OUTLINE TO user_name;
GRANT UNDER ANY TYPE TO user_name;
GRANT CREATE ANY TYPE TO user_name;
GRANT DROP ANY MATERIALIZED VIEW TO user_name;
GRANT ALTER ANY ROLE TO user_name;
GRANT DROP ANY VIEW TO user_name;
GRANT ALTER ANY INDEX TO user_name;
GRANT COMMENT ANY TABLE TO user_name;
GRANT CREATE ANY TABLE TO user_name;
GRANT CREATE USER TO user_name;
GRANT DROP ANY RULE SET TO user_name;
GRANT CREATE ANY CONTEXT TO user_name;
GRANT DROP ANY INDEXTYPE TO user_name;
GRANT ALTER ANY OPERATOR TO user_name;
GRANT CREATE ANY MATERIALIZED VIEW TO user_name;
GRANT ALTER ANY SEQUENCE TO user_name;
GRANT DROP ANY SYNONYM TO user_name;
GRANT CREATE ANY SYNONYM TO user_name;
GRANT DROP USER TO user_name;
GRANT ALTER ANY MEASURE FOLDER TO user_name;
GRANT ALTER ANY EDITION TO user_name;
GRANT DROP ANY RULE TO user_name;
GRANT CREATE ANY RULE TO user_name;
GRANT ALTER ANY RULE SET TO user_name;
GRANT CREATE ANY OUTLINE TO user_name;
GRANT UNDER ANY TABLE TO user_name;
GRANT UNDER ANY VIEW TO user_name;
GRANT DROP ANY DIRECTORY TO user_name;
GRANT ALTER ANY CLUSTER TO user_name;
GRANT CREATE ANY CLUSTER TO user_name;
GRANT ALTER ANY TABLE TO user_name;
GRANT CREATE ANY CUBE BUILD PROCESS TO user_name;
GRANT ALTER ANY CUBE DIMENSION TO user_name;
GRANT CREATE ANY EDITION TO user_name;
GRANT CREATE ANY SQL PROFILE TO user_name;
GRANT ALTER ANY SQL PROFILE TO user_name;
GRANT DROP ANY OUTLINE TO user_name;
GRANT DROP ANY CONTEXT TO user_name;
GRANT DROP ANY OPERATOR TO user_name;
GRANT DROP ANY LIBRARY TO user_name;
GRANT ALTER ANY LIBRARY TO user_name;
GRANT CREATE ANY LIBRARY TO user_name;
GRANT ALTER ANY MATERIALIZED VIEW TO user_name;
GRANT ALTER ANY TRIGGER TO user_name;
GRANT CREATE ANY SEQUENCE TO user_name;
GRANT DROP ANY INDEX TO user_name;
GRANT CREATE ANY INDEX TO user_name;
GRANT DROP ANY TABLE TO user_name;
GRANT SELECT_CATALOG_ROLE TO user_name;
GRANT SELECT ANY SEQUENCE TO user_name;

-- Database Links
GRANT CREATE DATABASE LINK TO user_name;
GRANT CREATE PUBLIC DATABASE LINK TO user_name;
GRANT DROP PUBLIC DATABASE LINK TO user_name;


-- Server Level Objects (directory)
GRANT CREATE ANY DIRECTORY TO user_name;
GRANT DROP ANY DIRECTORY TO user_name;
-- (for RDS only)
GRANT EXECUTE ON RDSADMIN.RDSADMIN_UTIL TO user_name;

-- Server Level Objects (tablespace)
GRANT CREATE TABLESPACE TO user_name;
GRANT DROP TABLESPACE TO user_name;

-- Server Level Objects (user roles)
/* (grant source privileges with admin option or convert roles/privs as DBA) */

-- Queues
grant execute on DBMS_AQADM to user_name;
grant aq_administrator_role to user_name;

-- for Materialized View Logs creation
GRANT SELECT ANY TABLE TO user_name;

-- Roles
GRANT RESOURCE TO user_name;
GRANT CONNECT TO user_name;
```

在上述範例中，請將 *user\$1name* 替換為您的使用者名稱。然後，將 *your\$1password* 替換為一個安全的密碼。

## 將 Oracle 轉換為 Amazon RDS for Oracle 時的限制
<a name="CHAP_Source.Oracle.ToRDSOracle.Limitations"></a>

將 Oracle 結構描述和程式碼遷移到 Amazon RDS for Oracle 時應考量的一些限制：
+  Amazon RDS 的預先定義的角色 (稱為 DBA) 通常允許 Oracle 資料庫引擎的所有管理權限。以下權限不適用於使用 Oracle 引擎之 Amazon RDS 資料庫執行個體的 DBA 角色：
  + 更改資料庫
  + 更改系統
  + 建立任何目錄
  + 授予任何權限
  + 授予任何角色
  + 建立外部工作

  您可以授與所有其他權限給 Oracle RDS 使用者角色。
+ Amazon RDS for Oracle 支援使用 DBMS\$1FGA 套件和 Oracle Unified Auditing 的傳統稽核、精細稽核。
+ Amazon RDS for Oracle 不支援變更資料擷取 (CDC)。若要在資料庫遷移期間和之後執行 CDC，請使用 AWS Database Migration Service。