LoginSignup
13
0

More than 1 year has passed since last update.

ORDS (Oracle REST Data Services) の Database Actions を使えるようにしてみる (ORDS 23.1)

Last updated at Posted at 2023-04-21

Oracle Database 23c の JSON Relational Duality とはなんぞや?ってことになり、体験するには、下記の記事が素晴らしい内容でした。ありがとうございます!

ただ、これを体験するために Oracle Rest Data Service (ORDS) なるものをインストールするのですが、ついでに、ORDS をもう少し遊べるように、ORDS のインストール部分にフォーカスした内容を書いてみました。

ORDS を CDB へインストールすることで、PDB Lifecycle Management (REST API で PDB の作成や操作が可能になる)機能なども利用できるようになるのですが、少し複雑になるため本記事では触れません。また、ORDS は、APEX と組み合わせて利用されたり、MongoDB API を提供してくれたりします。

色々と機能を持っており、Oracle Database 23c Free + APEX + ORDS の組み合わせで、また違う世界に触れることができるようになるので、チャレンジをお勧めしたいところではあります(若干、挫折中...)

と言うわけで、JSON Relational Duality の記事で勉強する過程で、ちょっと強めの権限を付与したユーザで Databas Actions も利用できるようにしておくと、色々と新しい発見があったり便利になるかと思います。

前提条件

前提は、OCI 上の Oracle Linux 8 が稼働する compute instance となりますが、それ以外でも構いません。とにかく、Oracle Database 23c Free が動作しており、port 1521, 8080 にアクセスできる環境であれば良いです。
本記事では、ORDS を 23c Free が動作する環境にインストールする内容となっていますが、ORDS 自体は、shell script と WAR (Web Archive Resources) ファイルなので、Java 11 以降を動かせる OS であれば、外部に出して稼働させることも可能ですので、ORDS と 23c Free を別々の環境で動作させることもできます。(macOS では、colima で docker image を動作させつつ、macOS 側で ORDS を稼働させるなどしています)

  • Database 23c Free のインストールが完了済みかつ起動していること
  • port 1521, 8080 への接続を許可していること
  • public IP を確認しておくこと
  • パスワードは、welcome1 を前提としています。(異なる場合は、読み替えて実行してください)

Oracle Linux 8 へのインストールは、下記の記事が参考になります。ありがとうございます:

ORDS のインストール

Database 23c Free のインストールが完了したら、ORDS を PDB (freepdb1) にインストールします。
※この手順は、検証目的となり standalone mode を前提としています。

compute instance にて、下記を実行していきます:

1. ORDS のインストール

compute instance で、下記を実行:

$ sudo su -
# dnf -y install ords
# dnf install jdk-17.x86_64

2. 続いて、PDB: freepdb1 へ ORDS をインストール

# ords --config /etc/ords/config install

🐱 マークが、入力を促される部分となります:

# ords --config /etc/ords/config install

    ORDS: Release 23.1 Production on Fri Apr 21 14:04:50 2023

    Copyright (c) 2010, 2023, Oracle.

    Configuration:
    /etc/ords/config/

    The configuration folder /etc/ords/config does not contain any configuration files.

    Oracle REST Data Services - Interactive Install

    Enter a number to select the type of installation
        [1] Install or upgrade ORDS in the database only
        [2] Create or update a database pool and install/upgrade ORDS in the database
        [3] Create or update a database pool only
🐱    Choose [2]: エンター

    Enter a number to select the database connection type to use
        [1] Basic (host name, port, service name)
        [2] TNS (TNS alias, TNS directory)
        [3] Custom database URL
🐱  Choose [1]: エンター

🐱  Enter the database host name [localhost]: エンター
🐱  Enter the database listen port [1521]: エンター
🐱  Enter the database service name [orcl]: freepdb1 (※PDB のサービス名)
    Provide database user name with administrator privileges.
🐱      Enter the administrator username: sys (SYSDBA 権限を利用します)
🐱  Enter the database password for SYS AS SYSDBA: パスワード (※welcome1)
    Connecting to database user: SYS AS SYSDBA url: jdbc:oracle:thin:@//localhost:1521/freepdb1

    Retrieving information.
    Enter the default tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [SYSAUX]: エンター
    Enter the temporary tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [TEMP]: エンター
    Enter a number to select additional feature(s) to enable:
        [1] Database Actions  (Enables all features)
        [2] REST Enabled SQL and Database API
        [3] REST Enabled SQL
        [4] Database API
        [5] None
🐱  Choose [1]: エンター

    Enter a number to configure and start ORDS in standalone mode
        [1] Configure and start ORDS in standalone mode
        [2] Skip

🐱  Choose [1]: エンター
    Enter a number to select the protocol
        [1] HTTP
        [2] HTTPS
🐱  Choose [1]: エンター
🐱  Enter the HTTP port [8080]: エンター
    The setting named: db.connectionType was set to: basic in configuration: default
    The setting named: db.hostname was set to: localhost in configuration: default
    The setting named: db.port was set to: 1521 in configuration: default
    The setting named: db.servicename was set to: freepdb1 in configuration: default
    The setting named: db.username was set to: ORDS_PUBLIC_USER in configuration: default
    The setting named: db.password was set to: ****** in configuration: default
    The setting named: feature.sdw was set to: true in configuration: default
    The global setting named: database.api.enabled was set to: true
    The setting named: restEnabledSql.active was set to: true in configuration: default
    The setting named: security.requestValidationFunction was set to: ords_util.authorize_plsql_gateway in configuration: default
    The global setting named: standalone.http.port was set to: 8080
    The global setting named: standalone.context.path was set to: /ords
    The global setting named: standalone.doc.root was set to: /etc/ords/config/global/doc_root
    2023-04-21T14:05:46.508Z INFO        Installing Oracle REST Data Services version 23.1.0.r0861423 in FREEPDB1
    ------------------------------------------------------------
    Date       : 21 Apr 2023 14:05:46
    Release    : Oracle REST Data Services 23.1.0.r0861423
    Type       : ORDS Install
    Database   : Oracle Database 23c Free,  
    DB Version : 23.2.0.0.0
    ------------------------------------------------------------
    Container Name: FREEPDB1
    Executing scripts for core
    ------------------------------------------------------------

    :
    :
    2023-04-21T14:06:08.276Z INFO        Oracle REST Data Services initialized
    Oracle REST Data Services version : 23.1.0.r0861423
    Oracle REST Data Services server info: jetty/10.0.12
    Oracle REST Data Services java info: Java HotSpot(TM) 64-Bit Server VM 17.0.5+9-LTS-191

ORDS は、このまま起動している状態となります。ここで、一度、Ctrl+C で終了させます

3. ORDS を起動

ORDS を background で起動しておきます:

# /etc/init.d/ords start
INFO: Starting Oracle REST Data Services...

INFO: Oracle REST Data Services started with PID 122545
INFO: Obtaining the port binding information...
INFO: Oracle REST Data Services is bounded to ports 8080

ブラウザから、 http://<public_IP>:8080/ords/sql-developer にアクセスすると、なんかそれっぽいものが出てくるかと思います。

image.png

これが、Database Actions (SQL Developer Web と呼ばれていたもの)への入り口となります。
が、このままでは誰もログインできないので、次のステップでは、ORDS を利用できるユーザを設定したり作成したりして行きます。

pdbadmin に権限を付与して Database Actions を利用可能にする

ORDS のインストールが完了したら、Database Actions へログイン可能なユーザを作成します。
新規ユーザを作成することもできますが、本記事では、pdbadmin ユーザを利用することにします。
※ 本記事は、検証を目的としているため、pdbadmin を利用しています。実際の運用ではセキュリティを考慮する必要がありますので、ご注意ください

  • pdbadmin に権限を付与し、ORDS の Database Actions を利用できるようにする

1. SYSDBA で pdb へ接続:

# sudo su - oracle
$ sqlplus sys/welcome1@localhost:1521/freepdb1 as sysdba

2. pdbadmin へ権限を付与するため、下記の sql を実行:

GRANT DBA TO pdbadmin CONTAINER=CURRENT;
GRANT inherit privileges on user pdbadmin to ORDS_METADATA;

3. pdbadmin に切り替えて接続し、REST enabled にするための SQL を実行:

$ sqlplus pdbadmin/welcome1@localhost:1521/freepdb1

pdbadmin を REST enabled にするために投入する PL/SQL:

BEGIN

    ORDS.ENABLE_SCHEMA(p_enabled => TRUE,
                       p_schema => 'pdbadmin',
                       p_url_mapping_type => 'BASE_PATH',
                       p_url_mapping_pattern => 'pdbadmin',
                       p_auto_rest_auth => FALSE);

    commit;

END;
/

5. ブラウザから、Database Actions へ接続

ブラウザから、 http://<public_IP>:8080/ords/sql-developer にアクセスします。

6. pdbadmin ユーザでログインします

Username: pdbadmin
Password: welcome1

ここまでが、ORDS の基本的なインストール手順となります。
pdbadmin で利用できる Database Actions では、ユーザ作成や権限割り当て、REST 有効化などのアクションが可能な DATABSE USERS が利用できるようになります。

image.png

JSON Relational Duality を触ってみるユーザを作成

そろそろ下記の記事に合流したいので、記事にあわせ JRD と言う名前のユーザを作成します:

1. SYSDBA で PDB: freepdb1 へ接続

sqlplus sys/welcome1@localhost:1521/freepdb1 as sysdba

2. JRD ユーザの作成

ユーザを作成するために、下記の SQL を実行:

-- USER SQL
CREATE USER JRD IDENTIFIED BY welcome1;

-- ADD ROLES
GRANT CONNECT TO JRD;
GRANT CTXAPP TO JRD;
GRANT RESOURCE TO JRD;
ALTER USER JRD DEFAULT ROLE CONNECT,CTXAPP,RESOURCE;

-- QUOTA
ALTER USER JRD QUOTA UNLIMITED ON USERS;

3. 作成した JRD ユーザでの接続確認と Role の確認をします:

$ sqlplus jrd/welcome1@localhost:1521/freepdb1

SQL> select role from session_roles; 

ROLE
--------------------------------------------------------------------------------
CONNECT
RESOURCE
SODA_APP
CTXAPP
  1. 続けて、下記の PL/SQL を実行し、JRD ユーザを REST enabled にします:
-- ENABLE REST
BEGIN
    ORDS.ENABLE_SCHEMA(
        p_enabled => TRUE,
        p_schema => 'JRD',
        p_url_mapping_type => 'BASE_PATH',
        p_url_mapping_pattern => 'jrd',
        p_auto_rest_auth=> TRUE
    );
    commit;
END;
/

sqlplus でやっていますが、Database Actions に pdbadmin で login し、DATABASE USERS メニューから実行することも可能です。

5. ブラウザから、Database Actions へ接続

ブラウザから、 http://<public_IP>:8080/ords/sql-developer にアクセスします。

6. JRD ユーザでログインします

    Username: JRD
    Password: welcome1

image.png

以上で、Database Actions が利用できる環境を整えました。
Database Actions の SQL (monaco を利用した code editor) で、SQL を投入してみたり、JSON Relational Duality View の作成後に、REST メニューをみてみたりすると Auto Rest 項目が増えていたりと、少しだけ学習が楽しくなるかと思います。

image.png

image.png

image.png

image.png

ORDS は、Oracle Database に興味深い機能を追加してくれるソフトウェアとなり、Cloud サービスではなく、単体のソフトウェアとして実装されているものとなるほか、対応する Database も 11g R2 以降 (Database のバージョンにより利用できる機能が異なる)で利用可能です。
ORDS 23.1 の Database Actions には、MLE JS (Oracle Database Multilingual Engine) が追加されており、GraalVM を用意することで、Oracle Database 上で JavaScript の実行もできようです。

参考までに、ORDS の構成などに関する推奨項目などは、下記に掲載されています:

13
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
0