Oracle REST Data Services
     に関するよくある質問

 

 



 


Oracle REST Data Services(ORDS)とは何ですか。

Oracle REST Data ServicesはJavaアプリケーションの一つで、SQLとデータベースのスキルを持つ開発者による、Oracle Database、Oracle Database 12c JSON Documentストア、およびOracle NoSQL Databaseを対象とするREST APIの開発を可能にします。アプリケーション開発者は、クライアント・ドライバのインストールや保守を行わずに、もっとも広く用いられているAPIテク ノロジーであるRESTを使用して他の外部サービスにアクセスするのと同じように、任意の言語環境からこれらAPIを使用することができます。詳細につい ては、
ブログ記事Why Use REST and ORDS To Transform Your Oracle Database into a RESTful API Serviceを参照してください。


Oracle REST Data Servicesはどのように始めたらよいですか。

Oracle Database Application Development VirtualBox Applianceをダウンロードします。この無料のリソースには、Hands-on Labに加え、すでにインストール、構成、実行されているOracle DatabaseおよびOracle REST Dataサービスも含まれています。このHands-on Labにより、個人のマシン上でOracle REST Data Servicesの演習を学ぶことができます。


Oracle REST Data Servicesのライセンスはどのようになっていますか。
Oracle REST Data Servicesは、Oracle Databaseのライセンスに含まれており、追加の費用もいりません。Oracle REST Data ServicesをWebLogicと使用する場合は、Weblogicのライセンス・ドキュメントの末尾に次の段落が追加されています。
"WebLogic Management Frameworkのライセンスには、Oracle WebLogic Server Standard Editionのライセンス(制限あり)が含まれます。Oracle WebLogic Server Standard Editionは、Oracle REST Data Servicesが使用するJavaサーブレットをホストするためだけに使用される場合があります。Javaサーブレットは、Oracle HTTP Server mod_plsqlの機能を置き換えるものです。"そのため、WebTierライセンスの中に、Oracle Rest Data Servicesが使用するJavaサーブレットをホスティングするための、WL SEのRULを所有していることになります。


Oracle REST Data ServicesはOracle Public Cloud上でどのように実行されますか。
Oracle REST Data Servicesは、Oracle Public Cloud上でもオンプレミスの場合と同じように実行されます。   Oracle Exadata Express Cloud Serviceのアカウントを作成し、Oracle REST Data Servicesを使用してREST対応アプリケーションの簡単なデモを構築する方法については、ブログ記事
QUICK DEMO >> A Great Use Case for REST on the Oracle Exadata Express Cloud Serviceを参照してください。

 

GETやPOSTのように、REST呼出しにおいてSQLハンドラおよびPL/SQLハンドラとの間でOracle REST Data Servicesはどのようにパラメータを渡しますか。
Oracle REST Data Servicesは、問合せ文字列やルート・パターンを表すURIやHTTPヘッダーにおいて、POSTやPUTのようなREST呼出しの本体内で、パラメータの双方向の受渡しを可能にします。詳細については、ブログ記事
ORDS Mechanisms for Passing Parametersを参照してください。:bodyバインド変数を使用して、REST呼出しの本体内でJSON、画像、その他のmimeタイプを渡す場合のヒントについては、Worked Example:Storing JSON in Your Relational Schemaを参照してください。


Oracle REST Data Servicesは、PL/SQLストアド・プロシージャを実行するRESTful Serviceを作成できますか。
作成できます。RESTful Serviceモジュールは、有効なSQLブロックおよびPL/SQLブロックを実行できます。ストアド・プロシージャを実行するエンドポイントを作成したい場合は、APIを手動で作成する必要があります。詳細については、ブログ記事
ORDS Mechanisms for Passing Parametersを参照してください。HTTPヘッダーの使用やその他のトピックについては、ブログ記事ORDS and PL/SQLを参照してください。

Oracle REST Data Servicesの今後のバージョンでは、POST経由でストアド・プロシージャをリモート実行する自動エンドポイントをサポートする予定です。


Oracle REST Data Servicesについて作成したRESTful APIはどのようにしてドキュメント化し、公開することができますか。
RESTful APIを公開する場合は、
OpenAPI Initiative標準(従来のSwagger)の使用をお勧めします。これは広く知られているAPIフレームワークで、Oracle Cloud PaaS API Catalog Cloud Serviceで使用されています。APIは、人およびコンピュータが簡単に利用できるよう公開できます。コード・スタブを、API呼出しを作成するほぼすべてのプログラミング言語で生成できる点は便利です。

Oracle REST Data Servicesの今後のバージョンでは、自動でSwaggerが統合される予定です。


URI https://<hostname><:port>/ordsを使用してOracle REST Data Servicesに対し初めてGETを実行すると、404 Not Foundエラー・メッセージが表示されるのはなぜですか。
こ れは想定内の動作で、エラーではありません。URI内でもOracle REST Data Servicesでリソースを定義し(例:https://<hostname><:port>/ords/< module>/<template>)、このリソースに対して行うリクエスト(例:GET)を処理するハンドラをOracle REST Data Servicesに作成してリソースを指定する必要があります。この点は、将来のリリースまたはOracle REST Data Servicesでは変更される可能性があります。


Oracle REST Data Servicesは、どのアプリケーション・サーバーと使用すればよいですか。
Oracle REST Data Servicesは、Oracle Weblogic Server(Oracle WLS)、Tomcat、GlassFish、Jetty(スタンドアロン・モード用に使用)の4種類のアプリケーション・サーバーでサポートされていま す。Oracle REST Data Servicesは、IBM Websphere Application ServerおよびMicrosoft Application Serverでは動作しません。スタンドアロン・モード(Jetty)はおもに、開発環境およびテスト環境での使用を意図しています。Jettyは本稼働 環境でもサポートされていますが、Jettyは組込みApplication Serverとして使用するためのものであり、基本、応用を問わず、多くの管理機能が備わっていないことをユーザーが理解しておく必要があります。たとえ ば、Oracle WLSやその他のアプリケーション・サーバーでサポートされているHAフェイルオーバー構成は、Jettyではサポートしていません。スタンドアロン・ モードでのOracle REST Data Servicesの実行に関する情報については、ブログ記事
How to add an NCSA style Access Log to ORDS Standaloneを参照してください。


実行しているOracle REST Data Servicesのバージョンをどのようにして確認できますか。
オンプレミス展開では、java -jar ords.war versionを使用してください。

ORDSメタデータ・カタログは、Oracle REST Data Servicesの当該インスタンスがサービスするデータベース内で問い合わせることができます(例:
    select 'ORDS is ' || version "Version of ORDS" from ords_metadata.ords_schema_version;


Oracle REST Data ServicesはRAC高速接続フェイルオーバーをサポートしていますか。
は い。Oracle REST Data ServicesはサポートするApplication Server環境(例:Oracle Weblogic Server、Tomcat、Glassfish、Jetty(スタンドアロン))すべてにおいてUCP(Universal Connection Pool)とともに動作し、UCPは高速接続フェイルオーバーをサポートしています。詳細については、ブログ記事
Does ORDS Support RAC Fast Connection Failoverを参照してください。


Oracle REST Data Servicesの実行速度が低下している場合、パフォーマンス・チューニングをどのように行いますか。
Oracle REST Data Servicesを本番環境で実行した場合やテスト・モードで負荷がかかっている場合に、データベース接続が少なすぎてパフォーマンスが上がらないという 問題に見舞われることがよくあります。Oracle REST Data ServicesはOracle Universal Connection Pool(Oracle UCP)を使用します。Oracle REST Data Servicesのデフォルトは、初期に作成される接続数が3、最大接続数が10となっており、アクティブな環境では十分なパフォーマンスが発揮されない 場合があります。接続数は、構成ファイル・パラメータであるjdbc.InitialLimitおよびjdbc.MaxLimitの値をより大きい値に設 定して増やすことができます。Oracle REST Data Services Installation, Configuration, and Development Guideの「
B.5 構成可能なパラメータの理解」を参照してください。


OAuth2セキュリティをOracle REST Data Servicesに実装する例はどこで確認できますか。
以下に効果的な実装例を4つ示します。

1) ドキュメントの"RESTfulサービスのスタート・ガイド"の章では、Oracle REST Data Servicesを使用したRESTful APIの設定の基本から、APIを保護するOAuth2セキュリティまでを取り上げます。

2) ドキュメントの"
RESTfulサービスへのセキュアなアクセスの構成" の章では、First Party Cookie-Based Authenticationおよびtwo-leggedとthree-legged両方のOAuth2セキュリティを含め、Oracle REST Data Servicesがサポートするさまざまなセキュリティ・オプションを構成する詳細な例を提供します。

3)ドキュメントの"
開発チュートリアル: イメージ・ギャラリの作成"の章では、OAuth2セキュリティの設定を含め、ピクチャ・イメージの格納と取得のためのより複雑なアプリケーション設定例を紹介します。

4)
ORDS Hands-On Labでは、OAuth2セキュリティの設定手順をラボ形式で説明します。


ORDS PL/SQL APIを使用したRESTful APIの作成例はどこにありますか。
ドキュメントの「
ORDS PL/SQLパッケージのリファレンスの章で例をいくつか紹介しているほか、ブログ記事のCreate an ORDS RESTful Service Using PL/SQLでは、ORDS PL/SQL APIを使用したRESTfulサービスの作成に必要な手順を始めから終わりまでわかりやすく紹介しています。さらに、Inserting Nested JSON Objects Into Relational Tables Using ORDSおよびGenerating Nested JSON From Relational Data with ORDSというブログ記事では、ORDS PL/SQL APIを使用したユースケースに関するRESTfulサービスの設定例を紹介しています。


Oracle REST Data ServicesはDateデータ型をどのように扱いますか。Oracle Databaseは、Dateデータ型をサポートしていますが、JSONはサポートしていません。
Oracle REST Data Servicesは、文字列に含まれる日付のencodingにおいて、ISO 8601(より正確にはRFC3339)標準を使用しています。一般に日付の形式は、dd-mmm-yyyy(例:15-Jan-2017)です。 Oracle REST Data Servicesは、Oracle Databaseに対して値を挿入または値を更新する際、この形式のJSON文字列を自動的にOracle Dateデータ型に変換します。Oracle REST Data Servicesは、JSON文字列に変換する際、Oracle Dateデータ型をこの文字列形式に自動的に変換します。時刻とタイムゾーンの取扱いを含め、詳細については、ブログ記事
Working with Dates Using ORDSを参照してください。


ネストした配列を含むJSONオブジェクトは、どのようにしてOracle Databaseの複数の階層表に挿入できますか。

Oracle Database 12cで利用可能なjson_tableに似たSQL/JSON機能を使用することをお勧めします。詳細な手順については、ブログ記事
Inserting Nested JSON Objects Into Relational Tables with ORDSを参照してください。


Oracleデータベースの複数の階層テーブルから、ネストしたJSONオブジェクトをどのようにして生成できますか。たとえば、購入注文と購入注文品目表から、購入注文品目のネストした配列を含むJSON購入注文をどのようにして生成できますか。

Oracle Database 12c Release 2で利用可能なjson_objectおよびjson_arrayaggに似たSQL/JSON機能を使用することをお勧めします。詳細については、ブログ記事
Generating Nested JSON From Relational Data With ORDSを参照してください。


JSON Objectの配列を返すGETが正しく処理されるよう、どのようにしたらページ番号付けを無効にできますか。

モジュール内、または個々のテンプレート定義内で、ページ番号付けをゼロに設定します。


RESTおよびOracle REST Data Servicesを使用し、リレーショナル表の列にどのようにしてJSONを格納したり、列からJSONを取得したりできますか。
JSONを格納するには、PUT呼出しまたはPOST呼出しの本体に含まれるJSONを使用して、列を更新する必要があります。JSONを取得、または再びGETするには、リソース・メディア・タイプを使用します。具体例については、ブログ記事Worked Example:Storing JSON in Your Relational SchemaおよびWorking with RESTful Services, BLOBs, and Media Typesを参照してください。


Oracle REST Data Servicesに関する他の技術的な質問の答えはどこで得られますか。
こちらからアクセスできるForum for ORDS, SODA, and JSON in the Databaseをご覧ください。






FAQ