Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

53 views

Published on

Oracle APEXユーザー会 2019#2 での説明資料。

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

  1. 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イベント紹介
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ORDS Database APIの利用例 • レポートからフォームを開いて個別の情報を表示。 – オブジェクトの一覧をとるWebソース・モジュール – http://<ホスト名>:<ポート>/<ベース・パス>/<スキーマ・エイリアス/_/db-api/stable/database/objects/ 14
  15. 15. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 15 Webソース・モジュールの定義
  16. 16. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 16 レポート&フォームの作成 レポートとフォームの生成 – ここまでは特別な作業なし
  17. 17. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 17 レポート&フォームの作成 (2) 作成したWebソース・モ ジュールを指定する 一意に指定できる値を指定する。 2つより多くの値が必要な場合は、フォーム作成 後に修正する。 OWNERという名前の値は要注意。
  18. 18. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 落とし穴 (1) – データが見つからない レポートからフォームを 開けようとすると、 「ORA-1403: データが見 つかりません。」 で、エラーになる。 18
  19. 19. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 原因と解決方法 – データが見つからない • #OWNER#はつねにパーシング・ス キーマの名前で置き換えられる。 • そのため、パーシング・スキーマ 以外に存在するオブジェクトは必 ず見つからない。 • OWNERをWOWNERで置き換えら れるよう、カラムを追加する。 19 レポートのローカル後処理 で、「SQL問合わせ」を選び、 OWNER as WOWNER としてカラムを追加する。 リンク・ターゲットで設定 するOWNERとして渡す値 をWOWNERに変更する。 一意に指定する値が3つ 以上ある場合は、ここで 追加する。
  20. 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. 21. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Environment APIをWebソースとするデータ・プロファイル • 単一行を含むを「はい」にしないと、何行も重複して行が表示される。 Confidential – Oracle Internal/Restricted/Highly Restricted 21
  22. 22. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 22

×