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

Oracle Rest Data Services (ORDS) の設定

次のトピックでは、ORDS 21 および 22 の設定オプションを一覧表示します。

ORDS 21 以前のインストールと設定

これで、Oracle APEX で使用する Oracle Rest Data Services (ORDS) をインストールして設定する準備が整いました。APEX バージョン 5.0 以降では、ORDS バージョン 19.1~21 を使用します。ORDS 22 以降をインストールする方法については、「ORDS 22 以降のインストールと設定」を参照してください。

リスナーは別個のホスト (Amazon EC2 インスタンス、社内のオンプレミスサーバー、またはデスクトップコンピュータなど) にインストールします。このセクションの例では、ホストの名前が myapexhost.example.com であり、ホストが Linux を実行していると仮定します。

Oracle APEX で使用する ORDS 21 以前をインストールして設定するには
  1. Oracle REST data services に移動し、Readme を確認します。必要なバージョンの Java がインストールされていることを確認します。

  2. ORDS インストール用の新しいディレクトリを作成します。

    mkdir /home/apexuser/ORDS cd /home/apexuser/ORDS
  3. Oracle REST Data Services から、ファイル ords.version.number.zip をダウンロードします。

  4. ファイルを /home/apexuser/ORDS ディレクトリに解凍します。

  5. マルチテナントデータベースに ORDS をインストールする場合は、ファイル /home/apexuser/ORDS/params/ords_params.properties に次の行を追加します。

    pdb.disable.lockdown=false
  6. マスターユーザーに ORDS のインストールに必要な権限を付与します。

    Amazon RDS APEX オプションをインストールしたら、マスターユーザーに ORDS スキーマをインストールするために必要な権限を与えます。これを行うには、データベースに接続し、次のコマンドを実行します。MASTER_USER をマスターユーザーの (大文字で記述した) 名前に置き換えます。

    重要

    大文字と小文字を区別する識別子を使用してユーザーを作成した場合を除き、ユーザー名を入力する際には大文字を使用します。例えば、CREATE USER myuser または CREATE 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 ドキュメントの Introduction to Oracle REST Data Services を参照してください。

    • 設定データを保存する場所を入力します。

      /home/apexuser/ORDS」と入力します。これは ORDS 設定ファイルの場所です。

    • 使用するデータベース接続タイプを指定します。[1] ベーシック、[2] TNS、[3] カスタム URL に対応する番号を入力します [1]:

      目的の接続タイプを選択します。

    • データベースサーバーの名前を入力します [localhost]: DB_instance_endpoint

      デフォルト値を選択するか、適切な値を入力します。

    • データベースリスナーポートを入力します [1521]: DB_instance_port

      デフォルト値を選択するか、適切な値を入力します。

    • データベースサービス名を指定するには 1 を、データベース SID を指定するには 2 を入力してください [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 Gateway を使用する場合は 1 を入力し、このステップをスキップするには 2 を入力します。Oracle Application Express を使用している場合、または mod_plsql から移行する場合は、1 [1] を入力する必要があります。

      デフォルト値を選択します。

    • PL/SQL ゲートウェイデータベースのユーザー名として [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 のデータベースパスワード

      パスワードを入力し (必要な場合)、確認のためにもう一度入力します。

    • 有効にする機能に対応する番号を入力します。

      SQL Developer Web、REST Enabled SQL、および Database API 機能をすべて有効にするには、1 を入力します。

    • スタンドアロンモードでスタートする場合は 1 を、終了する場合は 2 を入力します [1]:

      1 と入力します。

    • APEX 静的リソースの場所を入力します。

      APEX インストールファイルを /home/apexuser に解凍した場合は、「/home/apexuser/apex/images」と入力します。それ以外の場合は、unzip_path/apex/images を入力します。unzip_path は、ファイルを解凍したディレクトリです。

    • HTTP を使用する場合は 1 を、HTTPS を使用する場合は 2 を入力します [1]:

      1 を入力する場合は、HTTP ポートを指定します。2 を入力する場合は、HTTPS ポートと SSL ホスト名を指定します。HTTPS オプションでは、証明書を提供する方法を指定するように求められます。

      • 自己署名証明書を使用するには、1 を入力します。

      • 独自の証明書を提供するには、2 を入力します。2 を入力する場合は、SSL 証明書のパス、およびその証明書のシークレットキーのパスを指定します。

  8. APEX admin ユーザーのパスワードを設定します。これを行うには、SQL*Plus を使用して DB インスタンスにマスターユーザーとして接続し、次のコマンドを実行します。

    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. ブラウザで APEX 管理ウィンドウに戻り、[Administration] を選択します。次に、[Application Express Internal Administration] を選択します。認証情報を求められたら、以下の情報を入力します。

    • User name - admin

    • Password - apxchpwd.sql スクリプトを使用して設定したパスワード。

    [Login] を選択し、その admin ユーザーの新しいパスワードを設定します。

これで、リスナーを使用する準備ができました。

ORDS 22 以降のインストールと設定

これで、Oracle APEX で使用する Oracle Rest Data Services (ORDS) をインストールして設定する準備が整いました。このセクションの例では、別個のホストの名前が myapexhost.example.com であり、ホストが Linux を実行していると仮定します。ORDS 22 の手順は、以前のリリースの手順とは異なります。

Oracle APEX で使用するための ORDS 22 以降をインストールして設定するには
  1. Oracle REST data services に移動し、ダウンロードする ORDS バージョンの Readme を確認します。必要なバージョンの Java がインストールされていることを確認します。

  2. ORDS インストール用の新しいディレクトリを作成します。

    mkdir /home/apexuser/ORDS cd /home/apexuser/ORDS
  3. Oracle REST Data Services から、ファイル ords.version.number.zip または ords-latest.zip をダウンロードします。

  4. ファイルを /home/apexuser/ORDS ディレクトリに解凍します。

  5. マスターユーザーに ORDS のインストールに必要な権限を付与します。

    Amazon RDS APEX オプションをインストールしたら、マスターユーザーに ORDS スキーマをインストールするために必要な権限を与えます。これを行うには、データベースにログインして、以下のコマンドを実行します。MASTER_USER をマスターユーザーの (大文字で記述した) 名前に置き換えます。

    重要

    大文字と小文字を区別する識別子を使用してユーザーを作成した場合を除き、ユーザー名を入力する際には大文字を使用します。例えば、CREATE USER myuser または CREATE 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) アーキテクチャを実行する DB インスタンスでは、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 ドキュメントの Introduction to 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 DB インスタンスで使用するデータベース名を入力します。

    • Provide database user name with administrator privileges

      RDS for Oracle DB インスタンスのマスターユーザー名を入力します。

    • Enter the database password for [username]:

      RDS for Oracle DB インスタンスのマスターパスワードを入力します。

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

      APEX インストールファイル (/home/apexuser/apex/images) へのパスを入力します。

  7. APEX admin ユーザーのパスワードを設定します。これを行うには、SQL*Plus を使用して DB インスタンスにマスターユーザーとして接続し、次のコマンドを実行します。

    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 をスタンドアロンモードで実行します。実稼働環境へのデプロイでは、Apache Tomcat や Oracle WebLogic Server など、サポートされている Java EE アプリケーションサーバーの使用を検討します。詳細については、Oracle Database ドキュメントの「Oracle REST Data Services のデプロイおよびモニター」を参照してください。

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

    ORDS が実行中でも 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 は CDB インスタンスでのみサポートされている ords_util.authorize_plsql_gateway プロシージャを使用します。非 CDB インスタンスでは、このプロシージャを wwv_flow_epg_include_modules.authorize パッケージに変更できます。ユースケースに応じてリクエスト検証関数を設定するためのベストプラクティスについては、Oracle Database のドキュメントと Oracle Support を参照してください。

  9. ブラウザで APEX 管理ウィンドウに戻り、[Administration] を選択します。次に、[Application Express Internal Administration] を選択します。認証情報を求められたら、以下の情報を入力します。

    • User name - admin

    • Password - apxchpwd.sql スクリプトを使用して設定したパスワード。

    [Login] を選択し、その admin ユーザーの新しいパスワードを設定します。

これで、リスナーを使用する準備ができました。