

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

# 設定 Oracle Rest Data Services (ORDS)
<a name="Appendix.Oracle.Options.APEX.ORDSConf"></a>

下列主題列出 ORDS 21 和 22 的組態選項：

**Topics**
+ [安裝並設定 ORDS 21 及更低版本](#Appendix.Oracle.Options.APEX.ORDS)
+ [安裝並設定 ORDS 22 及更新版本](#Appendix.Oracle.Options.APEX.ORDS22)

## 安裝並設定 ORDS 21 及更低版本
<a name="Appendix.Oracle.Options.APEX.ORDS"></a>

您現在可以安裝和設定 Oracle Rest Data Services (ORDS)，以便與 Oracle APEX 搭配使用。對於 Oracle APEX 5.0 版及更新版本，請使用 ORDS 19.1 版到 21 版。若要了解如何安裝 ORDS 22 及更新版本，請參閱 [安裝並設定 ORDS 22 及更新版本](#Appendix.Oracle.Options.APEX.ORDS22)。

將接聽程式安裝在另一部主機上，例如 Amazon EC2 執行個體、公司的現場部署伺服器或您的桌上型電腦。對於本節中的範例，我們假設您的主機名稱是 `myapexhost.example.com`，而且主機執行 Linux。

**安裝並設定 ORDS 21 及更低版本以搭配 Oracle APEX 使用**

1. 前往 [Oracle REST Data Services](https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-212.html)，並檢查讀我檔案。請確認您已安裝必要版本的 Java。

1. 為您的 ORDS 安裝建立新的目錄。

   ```
   mkdir /home/apexuser/ORDS
   cd /home/apexuser/ORDS
   ```

1. 從 [Oracle REST資料服務](https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-212.html)下載檔案 `ords.version.number.zip`。

1. 將檔案解壓縮在 `/home/apexuser/ORDS` 目錄中。

1. 如果要在多重租用資料庫中安裝 ORDS，請將下行新增至 `/home/apexuser/ORDS/params/ords_params.properties` 檔案：

   ```
   pdb.disable.lockdown=false
   ```

1. 授與主要使用者安裝 ORDS 所需的權限。

   安裝 Oracle APEX 的選項之後，請為主要使用者提供安裝 ORDS 結構描述所需的權限。您可以連線至資料庫並執行下列命令來完成此動作。以您的主要使用者的大寫名稱取代 `MASTER_USER`。
**重要**  
輸入使用者名稱時，除非您使用區分大小寫的識別符來建立使用者，否則請使用大寫。例如，如果您執行 `CREATE USER myuser` 或 `CREATE USER MYUSER`，資料字典會存放 `MYUSER`。不過，如果您在 `CREATE USER "MyUser"` 中使用雙引號，資料字典則會存放 `MyUser`。如需更多詳細資訊，請參閱 [將 SELECT 或 EXECUTE 權限授予 SYS 物件](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)。

   ```
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ROLE_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONS_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONSTRAINTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_PROCEDURES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TABLES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_VIEWS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPIUTL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SESSION', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_UTILITY', 'MASTER_USER', 'EXECUTE', true);
   ```
**注意**  
這些命令會套用至 ORDS 19.1 版和更新版本。

1. 使用下載的 ords.war 檔案來安裝 ORDS 結構描述。

   ```
   java -jar ords.war install advanced
   ```

   程式會提示您輸入下列資訊。方括號中是預設值。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle REST Data Services 簡介](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/20.2/aelig/installing-REST-data-services.html#GUID-6F7B4E61-B730-4E73-80B8-F53299123730)。
   + 輸入要存放組態資料的位置：

     輸入 */home/apexuser/ORDS*。這是 ORDS 組態檔案的位置。
   + 指定要使用的資料庫連線類型。輸入 [1] 基本 [2] TNS [3] 自訂 URL [1] 的數字：

     選擇所需的連線類型。
   + 輸入資料庫伺服器的名稱 [localhost]：*DB\$1instance\$1endpoint*

     選擇預設值或輸入正確值。
   + 輸入資料庫接聽程式連接埠 [1521]：*DB\$1instance\$1port*

     選擇預設值或輸入正確值。
   + 輸入 1 以指定資料庫服務名稱，或輸入 2 以指定資料庫 SID [1]：

     選擇 `2` 以指定資料庫 SID。
   + 資料庫 SID [xe]

     選擇預設值或輸入正確值。
   + 若要驗證/安裝 Oracle REST Data Services 結構描述，請輸入 1，或輸入 2 以略過此步驟 [1]：

     選擇 `1`。此步驟會建立名為 ORDS\$1PUBLIC\$1USER 的 Oracle REST Data Services 代理使用者。
   + 輸入 ORDS\$1PUBLIC\$1USER 的資料庫密碼：

     輸入密碼，然後確認。
   + 需要使用管理員權限登入，以驗證 Oracle REST Data Services 結構描述。

     輸入管理員使用者名稱：*master\$1user*

     輸入 *master\$1user* 的資料庫密碼：*master\$1user\$1password*

     確認密碼：*master\$1user\$1password*
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。
   + 輸入 ORDS\$1METADATA [SYSAUX] 的預設資料表空間。

     輸入 ORDS\$1METADATA [TEMP] 的暫時資料表空間。

     輸入 ORDS\$1PUBLIC\$1USER [USERS] 的預設資料表空間。

     輸入 ORDS\$1PUBLIC\$1USER [TEMP] 的暫時資料表空間。
   + 如果要使用 PL/SQL 閘道請輸入 1，或輸入 2 來略過此步驟。如果您使用 Oracle Application Express 或從 mod\$1plsql 遷移，則必須輸入 1 [1]。

     選擇預設值。
   + 輸入 PL/SQL Gateway 資料庫使用者名稱 [APEX\$1PUBLIC\$1USER]

     選擇預設值。
   + 輸入 APEX\$1PUBLIC\$1USER 的資料庫密碼：

     輸入密碼，然後確認。
   + 輸入 1 以指定 Application Express RESTful Services 資料庫使用者 (APEX\$1LISTENER, APEX\$1REST\$1PUBLIC\$1USER) 的密碼，或輸入 2 以略過此步驟 [1]：

     若為 APEX 4.1.1.V1，請選擇 `2`；至於其他所有 APEX 版本，請選擇 `1`。
   + [APEX 4.1.1.v1 不需要此步驟] APEX\$1LISTENER 的資料庫密碼

     輸入密碼 (如需要)，然後確認。
   + [APEX 4.1.1.v1 不需要此步驟] APEX\$1REST\$1PUBLIC\$1USER 的資料庫密碼

     輸入密碼 (如需要)，然後確認。
   + 輸入數字以選取要啟用的功能：

     輸入 `1` 以啟用所有功能：SQL Developer Web、REST Enabled SQL 和 Database API。
   + 若要以獨立模式啟動，請輸入 1，或輸入 2 以結束 [1]：

     輸入 `1`。
   + 輸入 APEX 靜態資源位置：

     如果您將 APEX 安裝檔案解壓縮至 `/home/apexuser`，請輸入 `/home/apexuser/apex/images`。否則，請輸入 `unzip_path/apex/images`，其中 *unzip\$1path* 是您將檔案解壓縮的目錄所在位置。
   + 若使用 HTTP，請輸入 1；或若使用 HTTPS [1]，則請輸入 2：

     如果您輸入 `1`，請指定 HTTP 連接埠。如果您輸入 `2`，請指定 HTTPS 連接埠和 SSL 主機名稱。HTTPS 選項會提示您指定提供憑證的方式：
     + 輸入 `1` 以使用自我簽署的憑證。
     + 輸入 `2` 以提供您自己的憑證。如果您輸入 `2`，請指定 SSL 憑證的路徑，以及 SSL 憑證私密金鑰的路徑。

1. 設定 APEX `admin` 使用者的密碼。若要這麼做，請使用 SQL\$1Plus 以主要使用者身分連線至資料庫執行個體，然後執行以下命令。

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   將 `master` 改為您的主要使用者名稱。當 `apxchpwd.sql` 指令碼提示您時，請輸入新的 `admin` 密碼。

1. 啟動 ORDS 接聽程式。執行下列程式碼。

   ```
   java -jar ords.war
   ```

   第一次啟動 ORDS 時會提示您提供 APEX 靜態資源的位置。此影像資料夾位於 APEX 安裝目錄的 `/apex/images` 目錄中。

1. 在瀏覽器中返回 Oracle APEX 管理視窗，然後選擇**管理**。接著選擇 **Application Express Internal Administration (Application Express 內部管理)**。當提示您提供登入資料時，請輸入下列資訊：
   + **使用者名稱** – `admin` 
   + **密碼** – 使用 `apxchpwd.sql` 指令碼所設定的密碼 

   選擇 **Login (登入)**，然後設定 `admin` 使用者的新密碼。

您的接聽程式現在可供使用。

## 安裝並設定 ORDS 22 及更新版本
<a name="Appendix.Oracle.Options.APEX.ORDS22"></a>

您現在可以安裝和設定 Oracle Rest Data Services (ORDS)，以便與 Oracle APEX 搭配使用。對於本節中的範例，我們假設您的個別主機名稱是 `myapexhost.example.com`，而且主機執行 Linux。ORDS 22 的指示與先前版本的指示不同。

**安裝並設定 ORDS 22 及更新版本以搭配 Oracle APEX 使用**

1. 前往 [Oracle REST Data Services](http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html)，並檢查您計畫下載之 ORDS 版本的讀我檔案。請確認您已安裝必要版本的 Java。

1. 為您的 ORDS 安裝建立新的目錄。

   ```
   mkdir /home/apexuser/ORDS
   cd /home/apexuser/ORDS
   ```

1. 從 [Oracle REST Data Services](http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html) 下載 `ords.version.number.zip` 或 `ords-latest.zip` 檔案。

1. 將檔案解壓縮在 `/home/apexuser/ORDS` 目錄中。

1. 授與主要使用者安裝 ORDS 所需的權限。

   安裝 `APEX` 選項之後，請為主要使用者提供安裝 ORDS 結構描述所需的權限。您可以登入資料庫並執行下列命令來完成此操作。以您的主要使用者的大寫名稱取代 `MASTER_USER`。
**重要**  
輸入使用者名稱時，除非您使用區分大小寫的識別符來建立使用者，否則請使用大寫。例如，如果您執行 `CREATE USER myuser` 或 `CREATE USER MYUSER`，資料字典會存放 `MYUSER`。不過，如果您在 `CREATE USER "MyUser"` 中使用雙引號，資料字典則會存放 `MyUser`。如需詳細資訊，請參閱[將 SELECT 或 EXECUTE 權限授予 SYS 物件](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)。

   ```
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ROLE_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONS_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONSTRAINTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_PROCEDURES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TABLES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_VIEWS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPIUTL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SESSION', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_UTILITY', 'MASTER_USER', 'EXECUTE', true);
   
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOB', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_ASSERT', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_OUTPUT', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SCHEDULER', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('HTP', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('OWA', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPG_DOCLOAD', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_METADATA', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SQL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('UTL_SMTP', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_NETWORK_ACL_ADMIN', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('SESSION_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_USERS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_NETWORK_ACL_PRIVILEGES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_NETWORK_ACLS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'MASTER_USER', 'SELECT', true);
   ```
**注意**  
上述命令適用於 ORDS 22 及更新版本。

1. 使用下載的 `ords` 指令碼來安裝 ORDS 結構描述。指定目錄以包含組態檔案和日誌檔案。Oracle Corporation 建議不要將這些目錄放置在包含 ORDS 產品軟體的目錄中。

   ```
   mkdir -p /home/apexuser/ords_config /home/apexuser/ords_logs
   
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config \
     install --interactive --log-folder /home/apexuser/ords_logs
   ```

   對於執行容器資料庫 (CDB) 架構的資料庫執行個體，請使用 ORDS 23.3 或更新版本，並在安裝 ORDS 時傳遞 `--pdb-skip-disable-lockdown` 引數。

   ```
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config \
     install --interactive --log-folder /home/apexuser/ords_logs --pdb-skip-disable-lockdown
   ```

   程式會提示您輸入下列資訊。方括號中是預設值。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle REST Data Services 簡介](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/20.2/aelig/installing-REST-data-services.html#GUID-6F7B4E61-B730-4E73-80B8-F53299123730)。
   + `Choose the type of installation:`

     選擇 **2** 以在資料庫中安裝 ORDS 結構描述，並在本機 ORDS 組態檔案中建立資料庫連線集區。
   + `Specify the database connection type to use. Enter number for [1] Basic [2] TNS [3] Custom URL:`

     選擇所需的連線類型。此範例假設您選擇 **1**。
   + `Enter the name of the database server [localhost]:` ***DB\$1instance\$1endpoint***

     選擇預設值 或輸入正確值。
   + `Enter the database listener port [1521]:` ***DB\$1instance\$1port***

     選擇預設值 **1521** 或輸入正確值。
   + `Enter the database service name [orcl]:`

     輸入 RDS for Oracle 資料庫執行個體使用的資料庫名稱。
   + `Provide database user name with administrator privileges`

      輸入 RDS for Oracle 資料庫執行個體的主要使用者名稱。
   + `Enter the database password for [username]:`

     輸入 RDS for Oracle 資料庫執行個體的主要使用者密碼。
   + `Enter the default tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [SYSAUX]:`
   + `Enter the temporary tablespace for ORDS_METADATA [TEMP]. Enter the default tablespace for ORDS_PUBLIC_USER [USERS]. Enter the temporary tablespace for ORDS_PUBLIC_USER [TEMP].`
   + `Enter a number to select additional feature(s) to enable [1]:`
   + `Enter a number to configure and start ORDS in standalone mode [1]: `

      選擇 **2** 以獨立模式立即略過啟動 ORDS。
   + `Enter a number to select the protocol [1] HTTP`
   + `Enter the HTTP port [8080]:`
   + `Enter the APEX static resources location:`

     輸入 Oracle APEX 安裝檔案的路徑 (`/home/apexuser/apex/images`)。

1. 設定 Oracle APEX `admin` 使用者的密碼。若要這麼做，請使用 SQL\$1Plus 以主要使用者身分連線至資料庫執行個體，然後執行以下命令。

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   將 `master` 改為您的主要使用者名稱。當 `apxchpwd.sql` 指令碼提示您時，請輸入新的 `admin` 密碼。

1. 使用 `ords` 指令碼搭配 `serve` 命令，以獨立模式執行 ORDS。對於生產部署，請考慮使用支援的 Java EE 應用程式伺服器，例如 Apache Tomcat 或 Oracle WebLogic Server。如需詳細資訊，請參閱 Oracle Database 文件中的[部署和監控 Oracle REST Data Services](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/23.1/ordig/deploying-and-monitoring-oracle-rest-data-services.html#GUID-6791F5DF-AC67-4885-BFFA-B80964C17EC9)。

   ```
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config serve \
     --port 8193 \
     --apex-images /home/apexuser/apex/images
   ```

   如果 ORDS 正在執行但無法存取 Oracle APEX 安裝，您可能會看到下列錯誤，特別是在非 CDB 執行個體上。

   ```
   The procedure named apex_admin could not be accessed, it may not be declared, or the user executing this request may not have been granted execute privilege on the procedure, or a function specified by security.requestValidationFunction configuration property has prevented access.
   ```

   若要修正此錯誤，請執行 `ords` 指令碼搭配 `config` 命令，以變更 ORDS 使用的請求驗證函數。根據預設，ORDS 會使用 `ords_util.authorize_plsql_gateway` 程序，該程序僅在 CDB 執行個體上受支援。對於非 CDB 執行個體，您可以將此程序變更為 `wwv_flow_epg_include_modules.authorize` 套件。如需為您的使用案例設定適當請求驗證函數的最佳實務，請參閱 Oracle Database 文件和 Oracle Support。

1. 在瀏覽器中返回 Oracle APEX 管理視窗，然後選擇**管理**。接著選擇 **Application Express Internal Administration (Application Express 內部管理)**。當提示您提供登入資料時，請輸入下列資訊：
   + **使用者名稱** – `admin` 
   + **密碼** – 使用 `apxchpwd.sql` 指令碼所設定的密碼 

   選擇 **Login (登入)**，然後設定 `admin` 使用者的新密碼。

您的接聽程式現在可供使用。