Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle REST Data Services 19.1+19.2 新機能紹介

Oracle REST Data Services 19.1+19.2 新機能紹介

変更点 (19.1)
- Hyperlinkの生成
- Database Management REST APIの追加
- SYS AS SYSDBA以外のユーザーによるインストール
- PDBのみ。CDBへインストールする場合は、SYS AS SYSDBA必須。
- ハウスキーピング・ジョブの名称変更
-CLEAN_OLD_ORDS_SESSIONSがORDS_HOUSE_KEEPING_JOBへ変更。処理内容に変更はなし。
変更点 (19.2)
- ORDSをインストールするために使用するユーザーに、必要な権限を付与するスクリプトを提供。
- installer/ords_installer_privileges.sql
- ORDS Environment APIの追加
- https://docs.oracle.com/en/database/oracle/oracle-database/19/dbrst/api-environment.html
- オラクル・ホームを指定した、データベース・インスタンスの作成、削除、一覧など。
- ORDS.DROP_REST_FOR_OBJECT, ORDS_ADMIN.DROP_REST_FOR_OBJECTプロシージャーの追加
- ORDS.ENABLE_OBJECTを取り消す

Yuji Nakakoshi

August 08, 2019
Tweet

More Decks by Yuji Nakakoshi

Other Decks in Technology

Transcript

  1. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Confidential – Oracle Internal/Restricted/Highly Restricted Oracle REST Data Services 19.1+19.2 新機能紹介 日本オラクル株式会社 2019年8月8日 APEX UG Meetup 2019#2 - 海外のAPEXイベント紹介 1
  2. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Oracle REST Data Services 19.1+19.2 新機能紹介 Installation, Configuration, and Development Guide Changes in Oracle REST Data Services Release 19.2 https://docs.oracle.com/en/database/oracle/oracle-rest-data- services/19.2/aelig/changes-this-release-oracle-rest-data-services-installation- configuration-and-development-guide.html Confidential – Oracle Internal/Restricted/Highly Restricted 2
  3. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 変更点 (19.1) • Hyperlinkの生成 • Database Management REST APIの追加 • SYS AS SYSDBA以外のユーザーによるインストール – PDBのみ。CDBへインストールする場合は、SYS AS SYSDBA必須。 • ハウスキーピング・ジョブの名称変更 – CLEAN_OLD_ORDS_SESSIONSがORDS_HOUSE_KEEPING_JOBへ変更。処理内容に変 更はなし。 3
  4. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 変更点 (19.2) • ORDSをインストールするために使用するユーザーに、必要な権限を付与 するスクリプトを提供。 – installer/ords_installer_privileges.sql • ORDS Environment APIの追加 – https://docs.oracle.com/en/database/oracle/oracle-database/19/dbrst/api- environment.html – オラクル・ホームを指定した、データベース・インスタンスの作成、削除、一覧など。 • ORDS.DROP_REST_FOR_OBJECT, ORDS_ADMIN.DROP_REST_FOR_OBJECT プロシージャーの追加 – ORDS.ENABLE_OBJECTを取り消す Confidential – Oracle Internal/Restricted/Highly Restricted 4
  5. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Hyperlinkの生成 (1) • 主キーに対応するハイパーリンクを生成するエイリアス "$.id" 5 JSON出力 { "id": 7369, "employee_name": "SMITH", "links": [ { "rel": "self", "href": "http://localhost:8080/ords/xepdb1/tcweb/hr/testid/7369" } ], } select empno "$.id", empno id, ename employee_name from emp order by empno, ename;
  6. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Hyperlinkの生成 (2) • 任意のハイパーリンクを生成するエイリアス "$<名前>" 6 JSON出力 { "id": 7369, "employee_name": "SMITH", "links": [ { "rel": "related", "href": "http://localhost:8080/ords/xepdb1/tcweb/hr/testrelated/7902" } ], } select empno id, ename employee_name, mgr "$related" from emp order by empno, ename;
  7. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | ハイパーリンクのパス修正 (1) select empno id, mgr "$related" from emp order by empno; http://localhost:8080/ords/xepdb1/tcweb/hr/mgr/7902 標準は、REST APIのエントリ・ポイントがそのまま使用される。 select empno id, 'http://oracle.com/restapi/manager/' || mgr "$related" from emp order by empno; http://oracle.com/restapi/manager/7902 プロトコルから始まると、URL全てが置き換わる。 7
  8. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | ハイパーリンクのパス修正 (2) select empno id, '/manager/' || mgr "$related" from emp order by empno; http://localhost:8080/manager/7902 / (スラッシュ)から始まる場合は、パスがすべて置き換わる。 select empno id, '^/manager/' || mgr "$related" from emp order by empno; http://localhost:8080/ords/xepdb1/tcweb/manager/7902 ^ (キャレット)から始まる場合は、ベース・パスから置き換わる。 8
  9. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | NULLの扱い • NULLの場合はURLが生成されない。 • 単純な文字列連結でパス修正を行うと、値がNULLのときにNULLに ならない。 • 以下のように、NULLのときにはパス修正しない処理が必要。 9 CASE WHEN MGR IS NOT NULL THEN ’^/MANAGER/’ || MGR ELSE NULL END
  10. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | ORDS Database API • すべてのRESTエンドポイント – https://docs.oracle.com/en/database/oracle/oracle-database/19/dbrst/rest- endpoints.html • Data Dictionary • Environment (19.2) • Fleet Patching and Provisioning • General • Performance • Pluggable Database Lifecycle Management 10
  11. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | APEXでAPIを呼び出してみた 11 https://github.com/ujnak/apexapps/blob/master/exports/dbapi.sql
  12. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Database API使用にあたって • Database APIの有効化 – defaults.xmlに以下、エントリを追加する。 – java -jar ords.war set-property database.api.enabled true – <entry key="database.api.enabled">true</entry> • 使用するユーザーの登録 – ORDSにSQL Administratorロールを持ったユーザーを登録する。 • java –jar ords.war <ユーザー名> ”SQL Administrator” – スキーマはORDSが有効、DBAロールの付与が必要。 • マニュアルにはPDB_DBAロールとあるが、DBAロールも必要。 – Environment APIはSystem Administratorロールを持ったユーザーを登録する。 • java –jar ords.war <ユーザー名> ”System Administrator” 12
  13. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 以下の設定は検証できず • データベースのユーザ名/パスワードを用いた認証 – java -jar ords.war set-property jdbc.auth.enabled true – <entry key="jdbc.auth.enabled">true</entry> • デフォルト・アドミニストレーターを用いた認証 – CREATE USER C##_DBAPI_DEFAULT_ADMIN IDENTIFIED BY <PASSWORD> CONTAINER = ALL; – GRANT DBA TO C##_DBAPI_DEFAULT_ADMIN CONTAINER = ALL; – echo db.adminUser=C##_DBAPI_DEFAULT_ADMIN > pdbAdmin.properties – echo db.adminUser.password=<PASSWORD> >> pdbAdmin.properties – java -jar ords.war set-properties --conf apex_pu pdbAdmin.properties rm pdbAdmin.properties • Pluggable Database Lifecycle Management API全般 13
  14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | ORDS Database APIの利用例 • レポートからフォームを開いて個別の情報を表示。 – オブジェクトの一覧をとるWebソース・モジュール – http://<ホスト名>:<ポート>/<ベース・パス>/<スキーマ・エイリアス/_/db-api/stable/database/objects/ 14
  15. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 15 Webソース・モジュールの定義
  16. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 16 レポート&フォームの作成 レポートとフォームの生成 – ここまでは特別な作業なし
  17. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 17 レポート&フォームの作成 (2) 作成したWebソース・モ ジュールを指定する 一意に指定できる値を指定する。 2つより多くの値が必要な場合は、フォーム作成 後に修正する。 OWNERという名前の値は要注意。
  18. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 落とし穴 (1) – データが見つからない レポートからフォームを 開けようとすると、 「ORA-1403: データが見 つかりません。」 で、エラーになる。 18
  19. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 原因と解決方法 – データが見つからない • #OWNER#はつねにパーシング・ス キーマの名前で置き換えられる。 • そのため、パーシング・スキーマ 以外に存在するオブジェクトは必 ず見つからない。 • OWNERをWOWNERで置き換えら れるよう、カラムを追加する。 19 レポートのローカル後処理 で、「SQL問合わせ」を選び、 OWNER as WOWNER としてカラムを追加する。 リンク・ターゲットで設定 するOWNERとして渡す値 をWOWNERに変更する。 一意に指定する値が3つ 以上ある場合は、ここで 追加する。
  20. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | フォームのオープン • 例えば、Objectを例にとると – Get all database objects “/database/objects/” というAPIがある。 – Get a specific objects “/database/objects/{owner},{object_name}”というAPIがある。 • レポートからフォームへの呼び出し時に、以下のようなフィルタ条件が渡さ れ、同じWebソース・モジュールの検索条件となる。 – {"$and":[{"$and":[{"owner":{"$eq":"SYS"}},{"object_name":{"$eq":"IND$"}}]}]} • レポートからフォームへの呼び出し時に、 “/database/objects/{owner},{object_name}”を呼び出すようには、できな かった。 • 検索条件はほとんどのAPIが持っているので、そのまま使うのが良い。 20
  21. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Environment APIをWebソースとするデータ・プロファイル • 単一行を含むを「はい」にしないと、何行も重複して行が表示される。 Confidential – Oracle Internal/Restricted/Highly Restricted 21
  22. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Confidential – Oracle Internal/Restricted/Highly Restricted 22