設定 Oracle Rest Data Services (ORDS) - Amazon Relational Database Service

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

設定 Oracle Rest Data Services (ORDS)

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

安裝和設定 ORDS 21 及更低版本

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

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

安裝和設定 ORDS 21 及更低版本以搭配 Oracle APEX 使用
  1. 前往 Oracle REST 資料服務,並檢查讀我檔案。請確定您已安裝必要的 Java 版本。

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

    mkdir /home/apexuser/ORDS cd /home/apexuser/ORDS
  3. Oracle REST資料服務下載檔案 ords.version.number.zip

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

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

    pdb.disable.lockdown=false
  6. 授與主要使用者安裝 ORDS 所需的權限。

    安裝 Oracle APEX 的選項後,為主要使用者提供安裝 ORDS 結構描述所需的權限。您可以連線至資料庫並執行下列命令來完成此動作。以您的主要使用者的大寫名稱取代 MASTER_USER

    重要

    輸入使用者名稱時,除非您使用區分大小寫的識別符來建立使用者,否則請使用大寫。例如,如果您執行 CREATE USER myuserCREATE USER MYUSER,資料字典會存放 MYUSER。不過,如果您在 CREATE USER "MyUser" 中使用雙引號,資料字典則會存放 MyUser。如需更多詳細資訊,請參閱 授予SYS物件 SELECT 或 EXECUTE權限

    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 版和更新版本。

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

    java -jar ords.war install advanced

    程式會提示您輸入下列資訊。方括號中是預設值。如需詳細資訊,請參閱 Oracle 文件中的 Oracle REST Data Services 簡介

    • 輸入要存放組態資料的位置:

      輸入 /home/apexuser/ORDS。這是 ORDS 組態檔案的位置。

    • 指定要使用的資料庫連線類型。輸入 [1] 基本 [2] TNS [3] 自訂 URL [1] 的數字:

      選擇所需的連線類型。

    • 輸入資料庫伺服器的名稱 [localhost]:DB_instance_endpoint

      選擇預設值或輸入正確值。

    • 輸入資料庫接聽程式連接埠 [1521]:DB_instance_port

      選擇預設值或輸入正確值。

    • 輸入 1 以指定資料庫服務名稱,或輸入 2 以指定資料庫 SID [1]:

      選擇 2 以指定資料庫 SID。

    • 資料庫 SID [xe]

      選擇預設值或輸入正確值。

    • 若要驗證/安裝 Oracle REST Data Services 結構描述,請輸入 1,或輸入 2 以略過此步驟 [1]:

      選擇 1。此步驟會建立名為 ORDS_PUBLIC_USER 的 Oracle REST Data Services 代理使用者。

    • 輸入 ORDS_PUBLIC_USER 的資料庫密碼:

      輸入密碼,然後確認。

    • 需要使用管理員權限登入,以驗證 Oracle REST Data Services 結構描述。

      輸入管理員使用者名稱:master_user

      輸入 master_user 的資料庫密碼:master_user_password

      確認密碼:master_user_password

      注意

      指定此處所顯示提示以外的密碼,作為安全最佳實務。

    • 輸入 ORDS_METADATA [SYSAUX] 的預設資料表空間。

      輸入 ORDS_METADATA [TEMP] 的暫時資料表空間。

      輸入 ORDS_PUBLIC_USER [USERS] 的預設資料表空間。

      輸入 ORDS_PUBLIC_USER [TEMP] 的暫時資料表空間。

    • 如果要使用 PL/SQL 閘道請輸入 1,或輸入 2 來略過此步驟。如果您使用 Oracle Application Express 或從 mod_plsql 遷移,則必須輸入 1 [1]。

      選擇預設值。

    • 輸入 PL/SQL Gateway 資料庫使用者名稱 [APEX_PUBLIC_USER]

      選擇預設值。

    • 輸入 APEX_PUBLIC_USER 的資料庫密碼:

      輸入密碼,然後確認。

    • 輸入 1 以指定 Application Express RESTful Services 資料庫使用者 (APEX_LISTENER, APEX_REST_PUBLIC_USER) 的密碼,或輸入 2 以略過此步驟 [1]:

      若為 APEX 4.1.1.V1,請選擇 2;至於其他所有 APEX 版本,請選擇 1

    • [APEX 4.1.1.v1 不需要此步驟] APEX_LISTENER 的資料庫密碼

      輸入密碼 (如需要),然後確認。

    • [APEX 4.1.1.v1 不需要此步驟] APEX_REST_PUBLIC_USER 的資料庫密碼

      輸入密碼 (如需要),然後確認。

    • 輸入數字以選取要啟用的功能:

      輸入 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_path 是您將檔案解壓縮的目錄所在位置。

    • 若使用 HTTP,請輸入 1;或若使用 HTTPS [1],則請輸入 2:

      如果您輸入 1,請指定 HTTP 連接埠。如果您輸入 2,請指定 HTTPS 連接埠和 SSL 主機名稱。HTTPS 選項會提示您指定提供憑證的方式:

      • 輸入 1 以使用自我簽署的憑證。

      • 輸入 2 以提供您自己的憑證。如果您輸入 2,請指定 SSL 憑證的路徑,以及 SSL 憑證私密金鑰的路徑。

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

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

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

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

    java -jar ords.war

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

  10. 返回瀏覽器中的 Oracle APEX 管理視窗,然後選擇管理。接著選擇 Application Express Internal Administration (Application Express 內部管理)。當提示您提供登入資料時,請輸入下列資訊:

    • 使用者名稱admin

    • 密碼 – 使用 apxchpwd.sql 指令碼所設定的密碼

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

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

安裝和設定 ORDS 22 及更高版本

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

安裝和設定 ORDS 22 及更高版本以搭配 Oracle APEX 使用
  1. 前往 Oracle REST 資料服務,並檢查 Readme 是否有您計劃下載的 ORDS 版本。請確定您已安裝必要的 Java 版本。

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

    mkdir /home/apexuser/ORDS cd /home/apexuser/ORDS
  3. 從 Oracle REST ords-latest.zip 資料服務下載 檔案ords.version.number.zip或 。 http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html

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

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

    安裝 APEX選項後,為主要使用者提供安裝 ORDS 結構描述所需的權限。您可以登入資料庫並執行下列命令來執行此操作。以您的主要使用者的大寫名稱取代 MASTER_USER

    重要

    輸入使用者名稱時,除非您使用區分大小寫的識別符來建立使用者,否則請使用大寫。例如,如果您執行 CREATE USER myuserCREATE USER MYUSER,資料字典會存放 MYUSER。不過,如果您在 CREATE USER "MyUser" 中使用雙引號,資料字典則會存放 MyUser。如需詳細資訊,請參閱授予SYS物件 SELECT 或 EXECUTE權限

    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 及更新版本。

  6. 使用下載的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.2 及更高版本,並在安裝 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 簡介

    • 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_instance_endpoint

      選擇預設值或輸入正確值。

    • Enter the database listener port [1521]: DB_instance_port

      選擇預設值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)。

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

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

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

  8. 使用 ords指令碼搭配 serve命令,以獨立模式執行 ORDS。對於生產部署,請考慮使用支援的 Java EE 應用程式伺服器,例如 Apache Tomcat 或 Oracle WebLogic Server。如需詳細資訊,請參閱 Oracle 資料庫文件中的部署和監控 Oracle REST Data Services

    /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.

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

  9. 返回瀏覽器中的 Oracle APEX 管理視窗,然後選擇管理。接著選擇 Application Express Internal Administration (Application Express 內部管理)。當提示您提供登入資料時,請輸入下列資訊:

    • 使用者名稱admin

    • 密碼 – 使用 apxchpwd.sql 指令碼所設定的密碼

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

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