2021年2月19日金曜日

SQLclのapexコマンドによるアプリケーションの一括エクスポート

 以前にOracle APEXのアプリケーションのエスクポート・ファイルをコマンドラインから実行する(つまりアプリケーションとしてインポートする)方法について記事を書きました

インポートする元となるアプリケーションのエクスポートを行う方法ですが、以下3つがあるでしょう。

  • アプリケーション・ビルダーの画面から行う。
  • APIのAPEX_EXPORT.GET_APPLICATIONを呼び出す。
  • SQLclのapex exportコマンドを使用する。

本記事ではSQLclのapex exportを実行して、ワークスペース内にあるすべてのアプリケーションを一度にエクスポートする方法を紹介します。

最初にSQLclを準備します。以下のURLにアクセスし、ダウンロードします。

https://www.oracle.com/database/technologies/appdev/sqlcl.html

SQLclはJavaで作られているので、実行するコンピューターにJavaをインストールしておく必要があります。

Javaが入っていれば、ダウンロードしたzipファイルを展開しbin/sql(またはsql.exe)を実行するとSQLclが使えるようになります。

./sql


SQLcl: 金 2 19 14:47:10 2021のリリース20.4 Production


Copyright (c) 1982, 2021, Oracle.  All rights reserved.


ユーザー名 (''?) system

パスワード (**********?) ******

Last Successful login time: 金 2月  19 2021 14:47:18 +09:00


接続先:

Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production

Version 18.4.0.0.0



SQL> alter session set container = xepdb1;


Sessionが変更されました。


SQL> 

コマンドライン・ツールとしては、sqlplusと大差ない(より高機能)です。

そしてSQLclには、apexのためのコマンドが含まれています。? apexまたはhelp apexで利用可能なコマンドが一覧されます。

SQL> ? apex

使用可能なオプション:

list:        データベースにインストールされているアプリケーションをリストします。

log:         APEX_WORKSPACE_LOG_SUMMARYからAPEXアプリケーションの使用状況をレポートします。

export:      APEXアプリケーションまたはワークスペース(あるいはその両方)をエクスポートします。

SQL> 

apex listによって作成されているアプリケーションがリストされます。

SQL> apex list

       WORKSPACE_ID                     WORKSPACE    APPLICATION_ID                                    APPLICATION_NAME       BUILD_STATUS          LAST_UPDATED_ON 

___________________ _____________________________ _________________ ___________________________________________________ __________________ ________________________ 

10                  INTERNAL                      4411              Oracle APEX  System Messages and Native Types       Run and Develop    09-OCT-20                

10                  INTERNAL                      4155              Scheme Authentication Login                         Run and Develop    09-OCT-20                

12                  COM.ORACLE.CUST.REPOSITORY    8842              Universal Theme Sample Application                  Run and Develop    24-SEP-20                

10                  INTERNAL                      4000              Oracle APEX AppBuilder                              Run and Develop    19-JAN-21                

10                  INTERNAL                      4020              Oracle APEX - Create App Wizard                     Run and Develop    22-OCT-20                

10                  INTERNAL                      4350              Oracle APEX Workspace Administration                Run and Develop    19-JAN-21                

10                  INTERNAL                      4050              Oracle APEX Internal Administration                 Run and Develop    19-JAN-21                

10                  INTERNAL                      4550              Oracle APEX Login                                   Run and Develop    22-OCT-20                

10                  INTERNAL                      4600              Oracle APEX Issues                                  Run and Develop    22-OCT-20                

10                  INTERNAL                      4650              Oracle APEX Feedback                                Run and Develop    22-OCT-20                

10                  INTERNAL                      4700              Oracle APEX New Service Signup                      Run and Develop    09-OCT-20                

10                  INTERNAL                      4750              Oracle APEX Productivity and Sample Applications    Run and Develop    22-OCT-20                

10                  INTERNAL                      4500              Oracle APEX SQL Workshop                            Run and Develop    22-OCT-20                

10                  INTERNAL                      4300              Oracle APEX Data Workshop                           Run and Develop    22-OCT-20                

10                  INTERNAL                      4400              Oracle APEX Application Migration                   Run and Develop    19-JAN-21                

10                  INTERNAL                      4900              Oracle APEX Websheets                               Run and Develop    09-OCT-20                

10                  INTERNAL                      4850              Oracle APEX RESTful Services                        Run and Develop    22-OCT-20                

2728471333018836    APEXDEV                       101               Employees                                           Run and Develop    09-FEB-21                

2728471333018836    APEXDEV                       104               Sample Trees                                        Run and Develop    09-FEB-21                

2728471333018836    APEXDEV                       103               Tasks                                               Run and Develop    09-FEB-21                

2728471333018836    APEXDEV                       102               Material APEX - Demo                                Run and Develop    27-SEP-18                

2728471333018836    APEXDEV                       100               PL/SQL Gateway                                      Run and Develop    09-FEB-21                


SQL> 

こうして見ると、普段、アプリケーションを開発するときに使用しているアプリケーション・ビルダーやその他の機能自体がAPEXで作られたアプリケーションであることがよくわかります。

一番左にワークスペースIDが表示されています。apex exportコマンドに-instanceオプションと-workspaceid ワークスペースIDをつけて実行することで、指定したワークスペースに含まれるすべてのアプリケーションがSQLファイルとしてエクスポートされます。

SQL> apex export -instance -workspaceid 2728471333018836

Exporting Application 100:'PL/SQL Gateway' 

Exporting Application 101:'Employees' 

Exporting Application 102:'Material APEX - Demo' 

Exporting Application 103:'Tasks' 

Exporting Application 104:'Sample Trees' 

Exporting Application 8842:'Universal Theme Sample Application' 

SQL> 

実際に作成されたファイルを確認します。

SQL> !

ls *.sql

f100.sql  f101.sql  f102.sql  f103.sql  f104.sql  f8842.sql

$ 

apex exportのみで実行すると、使用可能なオプションが一覧されます。画面から設定できる内容は一通り指定可能です。

SQL> apex export

使用可能なオプション:

-applicationid:        エクスポートされるアプリケーションのID

-workspaceid:          エクスポートされるすべてのアプリケーションまたはエクスポートされるワークスペースのワークスペースID

-instance:             すべてのアプリケーションをエクスポートします

-expWorkspace:         -workspaceidで識別されるワークスペース、または-workspaceidが指定されていない場合はすべてのワークスペースをエクスポートします

-expMinimal:           ワークスペース定義、ユーザーおよびグループのみをエクスポートします

-expFiles:             -workspaceidで識別されるすべてのワークスペース・ファイルをエクスポートします

-skipExportDate:       アプリケーション・エクスポート・ファイルからエクスポート日付を除外します

-expPubReports:        ユーザーが保存したすべてのパブリック対話型レポートをエクスポートします

-expSavedReports:      ユーザーが保存したすべての対話型レポートをエクスポートします

-expIRNotif:           すべての対話型レポート通知をエクスポートします

-expTranslations:      変換リポジトリから、変換マッピングとすべてのテキストをエクスポートします

-expFeedback:          すべてのワークスペースのチーム開発フィードバック、または-workspaceidで識別されるチーム開発フィードバックをエクスポートします

-expTeamdevdata:       すべてのワークスペースのチーム開発データ、または-workspaceidで識別されるチーム開発データをエクスポートします

-deploymentSystem:     エクスポートされるフィードバックのデプロイメント・システム

-expFeedbackSince:     YYYYMMDDという書式の日付以降のチーム開発フィードバックをエクスポートします

-expOriginalIds:       アプリケーションのインポート時のIDが、エクスポートにそのまま表示されます

-expNoSubscriptions:   サブスクライブされたコンポーネントへの参照はエクスポートされません

-expComments:          開発者コメントをエクスポートします

-expSupportingObjects: はい(Y)、いいえ(N)またはインストール(I)を渡して、デフォルトをオーバーライドします

-expACLAssignments:    ACLユーザー・ロール割当てをエクスポートします

-dir:                  指定されたディレクトリ(-dir some/sub/directoryなど)にあるすべてのファイルを保存します

-list:                 アプリケーションのワークスペースまたはコンポーネントにある変更されたすべてのアプリケーションをリストします

-changesSince:         日付パラメータ(yyyy-mm-dd)が必要です。-listの値を指定された日付以降の変更に制限します

-changesBy:            文字列パラメータが必要です。-listの値を指定されたユーザーによる変更に制限します

-expComponents:        アプリケーション・コンポーネントをエクスポートします。残りのパラメータはすべて、TYPE:IDという形式にする必要があります

-debug:                デバッグ出力を印刷します

-nochecksum:            コンテンツが変更されていない場合でも、既存のファイルを上書きします

-split:                アプリケーションを複数のファイルに分割します


その他にもアプリケーションを指定して、指定した日付以降に変更されたコンポーネントの一覧を表示したり、

SQL> apex export -applicationid 100 -list -changesSince 2021-02-09

2021-02-09 10:11 BREADCRUMB:2833396906901945             Breadcrumb

2021-02-09 10:11 BREADCRUMB_ENTRY:3130962713923428       Breadcrumb: 動的コンテンツ (2)

2021-02-09 10:11 LIST:2833809654901965                   デスクトップ・ナビゲーション・メニュー

2021-02-09 10:16 PAGE:2                                  2. 動的コンテンツ

Date             ID                                      Name

---------------- --------------------------------------- -----------------------

SQL> 


特定のコンポーネントのみエクスポートすることもできます。

SQL> apex export -applicationid 100 -expComponents SHORTCUT:2976483336902675

Exporting Application 100

SQL> 


以上、SQLclのapex関連コマンドの紹介でした。