OracleAPEX開発 Zero To Hero 管理編②

# Zero To Hero
OracleAPEXの知識ゼロから現場で活かせるようなレベルを目指すコンセプトで解説していきたいと思います。今回は管理系の機能についてまとめました。

こちら前回紹介記事になります。

https://qiita.com/ShogoMatsumoto/items/928d771aaa049e932a04

# ユーザー追加
管理用のINTERNALワークスペースからの追加と、割り当てられたワークスペース内で作成が可能です。


管理用から追加の場合、まずINTERNALワークスペースにログインします。


「ワークスペースの管理」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/1591c27d-62ba-cfc4-abb1-0860673fcdf4.png)

「開発者とユーザーの管理」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/a9ca92b7-1efb-81bb-24cc-309fd512cf68.png)

「ユーザーの作成」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/972084d8-e7ae-8664-e58d-1bc359ae82ed.png)

入力内容の解説については割り当てられたワークスペースでユーザー作成する場合と一緒のため後述します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/8e6cdeb2-c68f-3498-4b4b-3ef61915ed1b.png)

割り当てられたワークスペース内で作成の場合、まず対象ワークスペースにログインします。
そして右上のユーザーアイコンをクリックし、「ユーザーとグループの管理」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/94e84bed-7568-ef5f-4c6d-9bb80384bccc.png)

「ユーザー作成」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/a7c54096-8103-f395-b91e-f8ffcb6bee79.png)

「ユーザー名」、「電子メール・アドレス」を入力していきます。

「名」、「姓」、「説明」、「デフォルトの日付書式」は任意項目となります。

「デフォルトの日付書式」とはユーザー用のデフォルトのOracle日付書式を指定します。この指定により、SQLワークショップ内のデフォルトの日付書式が制御されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/8c9943df-165c-756b-3e42-92405092862c.png)

「デフォルトのスキーマ」はワークスペース作成時に作成したスキーマを選択。
「アクセス可能なスキーマ(すべて可とする場合は空)」は指定が無ければ空欄にします。

・<strong>ワークスペース管理者ユーザー</strong>は全ての権限を持つユーザーで一部APIはこの権限を持たなければ実行できない場合もあります。

・<strong>開発者ユーザー</strong>には、それぞれ「アプリケーション・ビルダー・アクセス」、「SQLワークショップ・アクセス」、「チーム開発アクセス」にアクセス出来る権限を割り当てることが出来ます。

・<strong>エンドユーザー</strong>はワークスペース管理者、開発者ユーザー等全てを割りてないことで作成できます。主にアプリケーションのアクセスのみさせたいユーザーの権限として使用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/34d7f04c-454c-944f-ff2d-abbad9a4fb6f.png)

パスワードポリシーに準拠して入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/e2379658-c9ed-fd2e-5046-a0673773301a.png)

なおポリシーの設定はINTERNALワークスペースの「インスタンスの管理」、「セキュリティ」、「パスワード・ポリシー」から設定が可能となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/01582b8b-99cd-b1a4-7471-39a9089cf43c.png)

グループの設定は何もなければデフォルトの設定で行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/07d9eb18-de9e-ae0a-fd4a-ee318026ee92.png)

「ユーザーの作成」をクリックして作成は完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/28240c7d-6af6-868d-9e60-2e5898173f30.png)

<strong>エンドユーザー</strong>として作成した場合のアプリケーションへのログインと開発ワークスペースのログイン時の挙動は以下になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/2ca5dba9-1150-ea6f-bb3e-13beec506682.png)

ログインが成功していることが確認出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/06659007-e51a-5ea3-2fac-109f0695af50.png)

ワークスペースのログインを試みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/62bce7c7-2d46-6bb1-433a-144e6e44430a.png)

ログインが失敗したことが確認出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/7bd9ac83-d6aa-425b-6a67-45ae90f3f446.png)



# バッチ処理

自動化という機能で時間指定でPL/SQLを実行できる機能があります。試しに作成してみます。

まず対象のアプリケーションを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/82fe710a-89a5-6ad5-4678-ba02c9a345ba.png)

「共有コンポーネント」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/5820fc4b-08e1-a3cd-708b-30cc2730a4d5.png)

「ワークフローと自動化」の「自動化」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/a7c510c4-ac40-350f-e85c-8510dcb8de99.png)

緑色の「作成」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/1ee2adde-54ce-6e3f-769c-c0e97a3ec333.png)

「名前」を入力し、「タイプ」をスケジュール済、「アクションの開始」を常時、「実行スケジュール」をカスタム、「頻度」を毎分、「間隔」を15に設定して緑色の「作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/7924f076-fc76-07f0-dbeb-12338480be25.png)

一番左下の鉛筆アイコンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/ebf9617f-3bc4-6f44-70fc-a571b052b87c.png)

サンプルコードとしてnullが入っています。
ここにバッチ処理で行いたい処理を実装します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/19149a6f-7a27-da48-127a-f47500720601.png)

緑色の「変更の保存」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/b8ab1420-0621-f2b5-f15d-1da69d5f6580.png)

これで自動化が作成出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/570c9bc1-6583-a7a6-4b17-2fc79e805ac1.png)

アクティブにする場合、以下から変更して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/cde1ec0f-4c91-781f-a558-e7a7b2a8d1c6.png)


```APEX_AUTOMATION.LOG_INFO```を使えばログ出力させることも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/5b1b290d-4412-9b55-f178-99a5061eb0c2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/a987d34a-5c62-3adb-6ccb-3909fb4b3245.png)


# メタデータ確認

APEXに関わるメタデータを閲覧する方法についてお伝えします。

まず対象のアプリケーションを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/3e749a35-d451-a8a3-37aa-ab6b2d434efc.png)

「ユーティリティ」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/465698cd-8447-5151-0eb3-670145a5c490.png)

「OracleAPEXビュー」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/8a7441bb-cefb-fce7-eadb-7d05891c0b3a.png)

するとワークスペース内のメタデータを閲覧することが出来るビューが確認出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/b2884f51-bc7e-27f9-97e1-44f37488cecb.png)

例としてユーザーロールをAPIで付け替えたい時等は以下ビューのデータを使用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/d4681cfd-06ec-b984-e5ab-664fee8928fb.png)

表示したい項目を右に入れて「実行」します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/3c43d73e-168c-1bfd-8637-1ae46435c9c9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/27a1c6de-4ee3-d238-198f-353caa06671f.png)



# バックアップ

バックアップ方法についてお伝えします。

まず対象のアプリケーションを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/6f6db8e9-c797-8d32-22c5-5b03aa81a7e3.png)

「ユーティリティ」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/7d27af31-3937-e267-0af1-c7f365636384.png)

「バックアップの管理」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/ee6f6f82-4388-a21e-1ffd-9f9d9df75ca7.png)

緑色の「バックアップの作成」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/c1251a3f-b3ca-c435-6781-26f433a5fe67.png)

作成されたバックアップはリストア、zip形式でダウンロードが可能となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/fa0a73f6-b1ba-c784-ef50-efbfb28f7eda.png)


# 監視

どのユーザーがログインしたかの履歴ログの確認方法についてお伝えします。

まず管理ワークスペースのINTERNALにログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/90a1838d-4a39-59f6-8e2c-808882c40a64.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/33ab2794-60e0-12de-83b2-206b438060b9.png)

「アクティビティのモニター」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/1bb7ca07-b337-acb5-4f14-dc6877b87dc0.png)

「アクティビティ・サマリー」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/2c30c1fe-0338-3680-2917-6da152450d19.png)

こちらで様々なログを確認することが出来ます。
試しに「ログイン試行回数」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/4b4b423d-c8eb-bc2a-d4e3-0b804013fc75.png)

ログインしようとしたアカウントの状態が確認出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/430e1126-ca60-bcce-9995-b734b58da043.png)


# コード一括確認

開発で実装したSQL,PL/SQL,JavaScriptのコードを確認する方法についてお伝えします。

まず対象のアプリケーションを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/c4c06874-83dd-f94a-eaff-6bed8eedf91f.png)

「ユーティリティ」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/6f1faf4f-c4c1-d755-941f-eae58ae89b12.png)

「埋込みコード」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/fe148848-89bb-d115-7a9e-dcf0471a5e6d.png)

フィルターを使用してコードを確認することが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/5d07e24a-9173-2bd2-dd51-856e973667cc.png)


# 権限

権限について認証スキームと認可スキームというものが存在します。
認証スキーマはOracleAPEXにログインする時に認証をどのように行うか設定を行う。
認可スキーマはページ、リージョン、リージョン、アイテム、動的アクション、プロセス、ブランチ、計算等に対して表示、実行する権限を持っているかどうかの設定を行えるものです。

まず認証スキーマから確認します。
対象のアプリケーションを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/662718f9-26fc-638d-f2bf-a8c427457396.png)

「共有コンポーネント」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/a09f21fc-9eff-93a6-8cc0-70546e7442c8.png)

「セキュリティ」、「認証スキーマ」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/9b456650-e92c-04a1-5cf3-e538623232a0.png)

デフォルトではOracleAPEX上のワースクペース内でユーザーが存在する場合、ログイン出来るように設定されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/cfdf893b-56f2-5805-bf6c-2997ef706be1.png)

他に選択できるオプションは以下となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/fa7d5f94-af68-cf56-4426-abdcd808f98a.png)

詳細は以下ドキュメントを参考下さい。

https://docs.oracle.com/en/database/oracle/apex/23.1/htmdb/preconfigured-authentication-schemes.html#GUID-CD382D4A-AC00-4185-B37F-9A5BC9417A7B

次に認可スキーマを確認します。

認可スキーマで使用されるサンプルロールの作成を行います。
ページ作成時に以下を選択すると管理ページと三つのデフォルトロールが作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/87299019-55f6-2e60-7f12-8d9ad4f98794.png)

「セキュリティ」、「認可スキーマ」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/bd229492-2e20-882a-76b5-951f96937541.png)

以下のように認可スキーマが作成されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/9a8b6f46-ba72-0ba3-3434-8e3a069a2829.png)

「Reader Rights」を試しにクリックして実装内容を確認します。
中身はAPIでユーザーが何かしらのロールを持っているかどうかをTrue,Falseで返す処理となっています。
これでTrueが返されれば認可の処理が通ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/98975a74-41b9-4af1-3773-62338a9c4d88.png)

他のオプションとして以下があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/25f7ef1c-414e-15db-ffbc-39df94127ed6.png)

詳細は以下ドキュメントを参考下さい。

https://docs.oracle.com/en/database/oracle/apex/23.1/htmdb/creating-and-editing-authorization-scheme.html#GUID-439E713B-7238-48D6-BE5A-A6D38137F694

先程作成した認可スキーマは権限を確認する仕組みとなっています。
その仕組みを使ってユーザーにロールを割り当てることで権限操作が可能です。

「セキュリティ」、「アプリケーション・アクセス制御」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/6f529ada-25c3-6753-30cc-6d4149d94502.png)

ここでユーザーに対してロールを割り当て、設定した認可スキーマでロールを持つか権限を確認してアプリケーション上で処理を実行させるかの設定が行えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/b2b77401-802a-d4c5-3c5a-f5ac64956076.png)



# アップグレード管理

基本的にOCIのAutonomousDBに付属するAPEXのアップグレードは自動で行われ止めることは出来ません。そのためAPEXの環境をクラウド上のVMを使用して構築すればアップグレードは任意のタイミングで行うことが可能になります。


まず概要図として以下の図になります。

APEXはOracle REST Data ServiceというWebサーバーを経由してOracle Databaseにアクセスする仕組みとなっています。クラウド上のVMに環境を立てる場合、JettyまたはTomcatがインストールパッケージに含まれているため選択できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/52fb6205-5122-3b46-89ca-3cc89996f672.png)

一般的なアーキとして以下の図を作成しました。
VM(ORDS)を複数増やして冗長化することも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/7add29c4-3042-46e0-ebd0-7ebe89239345.png)

具体的なインストールに関するドキュメントは以下になります。

https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/23.4/ordig/installing-and-configuring-oracle-rest-data-services.html#GUID-B6661F35-3EE3-4CB3-9379-40D0B8E24635

こちらで記事の内容は以上となります。
見て頂きありがとうございました。