2024年12月21日土曜日

Oracle Spatial Studioのコンテナ・イメージを作成する

Oracle Spatial Studioのコンテナ・イメージを作成してみました。

TL;DR


APEX向けの構成スクリプトのリポジトリに、Oracle Spatial Studioのコンテナを作るためのファイルを追加しました。
git clone https://github.com/ujnak/apex-podman-setup
cd apex-podman-setup/spatial
製品rpmを含むZIPファイルを以下のページよりダウンロードします。Oracle_Spatial_Studio_QSで始まる(QSはQuick Startの略)V*-01.zipという名前のファイルです。いくつかのバージョンがありますが、最新のバージョンを選ぶとよいでしょう。このファイルをディレクトリspatial/files以下に配置します。

JDK17のアーカイブを以下のページよりダウンロードします。DockerfileのJAVA_SHA256にファイルのチェックサムが記載されているため、JDK17.0.16でないとチェックサム・エラーが発生します。こちらはアーキテクチャに合わせてjdk-17.0.16_linux-x64_bin.tar.gzかjdk-17.0.16_linux-aarch64_bin.tar.gzのどちらかをディレクトリspatial/files以下に配置します。

https://www.oracle.com/java/technologies/downloads/#java17

以上で準備は完了です。コンテナ・イメージをビルドしてコンテナの作成と実行を行います。
podman build -t spatialstudio .
podman run -d --name spatialstudio -p 8090:8080 -p 4040:4040 spatialstudio

構築手順の紹介



Oracle社が提供しているOracle Linux 8とJava 17のDockerfileを元にしています。


Oracle Spatial Studioを動かすための修正を少々加えています。

イメージの作成には、macOSのpodmanを使いました。

適当なディクレトリを作成し、以下の4つのファイルを配置します。JavaについてはAMD64かARMでファイルが異なります。また、Javaは17限定です。Oracle Spatial StudioのZIPファイルはディレクトリfilesを作成し、その下に配置します。Oracle Spatial Studioは新しいバージョンでも、Dockerfileは変更せずにイメージが作れるはずです。
  • 上記のDockerfile
  • Oracle Spatial Studio Quick StartのZIPファイル(filesの下) - V1050194-01.zip(バージョンが上がるとファイル名が変わります)
  • Oracle JAVAのtar.gzファイル - jdk-17.0.16_linux-aarch64_bin.tar.gz
  • Spatial Studioのコンテナ向け起動スクリプトStart_Spatial_Studio.sh
JDK17のアーカイブについてはDockerfile内にチェックサムが記載されているため、17.0.16とは異なるバージョンのアーカイブを配置した場合は、DockerfileにJAVA_SHA256として記載されているチェックサムを置き換える必要があります。

以下のコマンドを実行して、localhost/spatialstudio:latestのコンテナ・イメージを作成します。

podman build -t spatialstudio .

% podman build -t spatialstudio .

[1/2] STEP 1/8: FROM oraclelinux:8 AS builder

[1/2] STEP 2/8: RUN dnf install -y tar unzip

Oracle Linux 8 BaseOS Latest (aarch64)          9.2 MB/s | 143 MB     00:15    

Oracle Linux 8 Application Stream (aarch64)     7.0 MB/s |  65 MB     00:09    

Last metadata expiration check: 0:00:10 ago on Fri Oct  3 01:23:59 2025.

Package tar-2:1.30-11.el8_10.aarch64 is already installed.

Dependencies resolved.

================================================================================

 Package    Architecture Version                   Repository              Size

================================================================================

Installing:

 unzip      aarch64      6.0-48.0.1.el8_10         ol8_baseos_latest      189 k


Transaction Summary

================================================================================

Install  1 Package


[中略]



++ basename /usr/java/jdk-17/bin/serialver

+ base=serialver

+ '[' '!' -e /usr/bin/serialver ']'

+ alternatives --install /usr/bin/serialver serialver /usr/java/jdk-17/bin/serialver 20000

--> 649f6cbaab94

[2/2] STEP 9/11: EXPOSE 8080 4040

--> 12a5c28d6288

[2/2] STEP 10/11: WORKDIR /opt/oracle/Oracle_Spatial_Studio

--> e8f1805cf6dd

[2/2] STEP 11/11: CMD ["sh", "-c", "/opt/oracle/Oracle_Spatial_Studio/Start_Spatial_Studio.sh"]

[2/2] COMMIT spatialstudio

--> 9bfce20cb6e7

Successfully tagged localhost/spatialstudio:latest

9bfce20cb6e7b241bd1e72c4bca929c409c7ed5e87298b94be18a690527816ef

%


作成されたコンテナ・イメージからコンテナを作成して、Oracle Spatial Studioにアクセスします。私の環境ではポート番号8080が使用されているため8090にマップしています。ただし、Oracle Spatial StudioはHTTPSで動作するため、アクセス先は4040番ポートです

podman run -d --name spatialstudio -p 8090:8080 -p 4040:4040 spatialstudio

% podman run -d --name spatialstudio -p 8090:8080 -p 4040:4040 spatialstudio

42eddba20281a7c9701840934feb1f0d521cbd14faec636dbe4b36891d0d1925

%


ブラウザより以下のURLにアクセスします。自己署名証明書を使っているため、HTTPSの接続時に警告が表示されます。



Oracle Spatial Studioのデフォルトのユーザー設定なので、admin/welcome1で接続できます。リポジトリの接続設定から始めることができます。


今回の記事は以上になります。

完

東京都のオープンデータの避難場所(SHPファイル)をOracle APEXのマップに表示する

こちらの記事で作成したOracle Spatial Studioを使って、東京都がオープンデータとして公開している避難場所のShapefileをOracle Databaseに読み込み、最終的にOracle APEXのアプリケーションのマップに表示します。

以下の記事を読んで、Stockholmでできるなら東京でもできるのでは?と思ったのがきっかけです。

Mapping Stockholm: From Shapefiles to APEX Maps

以下のAPEXアプリケーションを作ります。


元のブログ記事の手順を追うつもりでしたが、MapBuilderがMac上ではうまく動きませんでした。MapBuilderの代わりにOracle Spatial Studioの環境を作成し、それを使ってShapefileをデータベースにインポートすることにしました。

東京都のオープンデータカタログサイトより避難場所(SHPファイル)をダウンロードします。


避難場所のShapefileはhinan02_01.zipというファイル名でダウンロードされます。

ZIPファイルを解凍します。01_第9回避難場所と02_第9回地区割当の2セットのShapefileが含まれています。今回は01_第9回避難場所をデータベースに読み込みます。


Oracle Spatial Studioに接続します。ユーザーadminでサインインします。


ShapfileはOracle APEXのワークスペースで扱えるように、ワークスペースのスキーマにロードします。そのため、APEXのワークスペース・スキーマへの接続を作成します。

左のメニューから接続を選択し、接続の作成をクリックします。


接続タイプを選択します。今回はローカルのコンテナとして動作しているOracle Database 23ai Freeを接続先にするため、Oracle Databaseを選択します。

次へ進みます。


接続先にAPEXのワークスペース・スキーマを指定します。Oracle Database 23ai Freeで構築したAPEX環境には、ワークスペースとしてAPEXDEV、ワークスペース・スキーマとしてWKSP_APEXDEVを作成しています。

接続のNameはワークスペース名に合わせてAPEXDEVとしました。ConnectionにServiceを選択しService/SIDにOracle Database 23ai Freeでデフォルトで作成されるPDBのFREEPDB1を指定します。Userにワークスペース・スキーマ名のWKSP_APEXDEV、Passwordにワークスペース・スキーマのパスワードを指定します。podmanのコンテナでOracle Spatial Studioを実行している場合は、接続先のデータベースのHostはhost.containers.internal、Portは1521になります。

APEXのワークペース・スキーマにはパスワードが割り当たっていないことがあります。外部からのワークスペース・スキーマへの接続を許可する場合は、alter user ... identified byコマンドを実行し、スキーマにパスワードを割り当てておく必要があります。

以上でOKをクリックします。


接続が作成されます。


Shapefileのロードを行います。

データセットを開き、データセットの作成をクリックします。


ドロワーが開きます。

ローカル・ファイルを選択し、アップロードするファイルとして、第9回避難場所.prj、第9回避難場所.shp、第9回避難場所.dbf、第9回避難場所.shxを選択します。

以上で作成をクリックします。


データセットのアップロード中にエラーが発生しましたと表示されます。


Oracle Spatial Studioのサーバーのログを見ると、例外が上がっています。内容からは、どうも日本語ファイル名が扱えていないようです。


Spatial Studioの起動スクリプト内のjavaコマンドに引数として-Dfile.encoding=UTF8が付いているし、Spatial Studio自体では日本語を扱えているので、ファイル名の方に何か問題がありそうです。

英数字だけのファイル名に変更します。

mv 第9回避難場所.dbf dai9kaihinanbasyo.dbf
mv 第9回避難場所.prj dai9kaihinanbasyo.prj
mv 第9回避難場所.shp dai9kaihinanbasyo.shp
mv 第9回避難場所.shx dai9kaihinanbasyo.shx

01_第9回避難場所 % mv 第9回避難場所.dbf dai9kaihinanbasyo.dbf

01_第9回避難場所 % mv 第9回避難場所.prj dai9kaihinanbasyo.prj

01_第9回避難場所 % mv 第9回避難場所.shp dai9kaihinanbasyo.shp

01_第9回避難場所 % mv 第9回避難場所.shx dai9kaihinanbasyo.shx 


再度、データセットの作成を行います。アップロードするファイルは、上記の名前を変更したファイルです。


フィールド名の日本語を正しく認識できていません。このまま送信すると、データセットの作成に失敗します。


データの文字セットは正しく認識できていることから、設定で直せる問題とは思えません。

dbfファイルのバックアップを取得し、バイナリエディタでフィールド名を直接編集することにしました。dbfファイルのフォーマットについては、色々とネットの情報を参考にしています。

cp dai9kaihinanbasyo.dbf dai9kaihinanbasyo.dbf.bak


最初の10バイトはC0に変更します。

43300000 00000000 0000

次の10バイトはC1に変更します。

43310000 00000000 0000


修正したファイルをアップロード対象に含めて、データセットの作成を行います。

フィールド名がC0、C1として認識されるようになりました。

接続にアップロードに先ほど作成したAPEXDEVを選択します。表名はTOKYO_HINANBASHO、データセット名はTOKYO_HINANとします。

送信をクリックします。


データセットTOKYO_HINANが作成されます。警告が表示されているので、右の3点メニューからプロパティを開き、警告の内容を確認します。


データセットのプロパティの列タブを開きます。

列C0は一意の数値を保持しています。そのため、キーとして使用をオンに変更し、キーの検証をクリックします。

キーが有効であることが確認できたら、適用をクリックしてプロパティの画面を閉じます。


警告がとれたことを確認して、データセットTOKYO_HINANからプロジェクトを作成します。


データセットTOKYO_HINANが追加済みのプロジェクトが作成され、アクティブ・プロジェクトになります。プロジェクト名はUntitledですが、保存されているデータセットを確認するだけの作業なので、そのままにします。

データセットにあるTOKYO_HIKANを地図にドラッグ&ドロップします。


地図上に避難場所のShapefileに含まれていたポリゴンが表示されます。


以上でOracle Spatial Studioを使った、Shapefileのデータベースへのインポートは完了です。

Oracle APEXの作業に移ります。

Shapefileをロードしたスキーマがパーシング・スキーマに設定されているAPEXのワークスペースにサインインし、アプケーション作成ウィザードを起動します。

作成するアプリケーションの名前は東京都避難場所とします。

ページの追加をクリックします。


マップを選択します。


追加するページの名前は避難場所とします。表にTOKYO_HINANBASHOを選択します。ポリゴンを選択し、ジオメトリ列はGEOM、ツールチップ列にC1を選択します。

以上でページの追加をクリックします。


作成されるアプリケーションにページ避難場所が追加されました。

アプリケーションの作成をクリックします。


アプリケーションが作成されました。アプリケーションを実行して、マップの表示を確認します。


APEXのマップ上に東京都の避難場所が表示されていることが確認できます。


今回の記事は以上になります。

Oracle APEXのアプリケーション作成の参考になれば幸いです。

完

2024年12月20日金曜日

Oracle Spatial Studioをローカルの環境にインストールする

Oracle Spatial Studioを使う必要があったので手元のPCにインストールしてみました。インストールしたマシンはMシリーズのMacbookですが、podmanでコンテナを実行してインストールしているので、ホストの種類が異なっていてもそれほど手順は変わらないでしょう。

Oracle Spatial Studioのインストールは、概ね以下のドキュメントの記載に従って実施します。

Oracle Spatial Studio Release 24.2 - Guide
2. Administering Oracle Spatial Studio
https://docs.oracle.com/en/database/oracle/spatial-studio/24.2/spstu/administering-oracle-spatial-studio.html

最初にOracle Spatial StudioのZIPファイルをダウンロードします。


Oracle Spatial Studioをダウンロードするには、Oracleプロファイルを作成する必要があります。Oracleプロファイルの作成については、公式の案内を参照してください。

有効なOracleプロファイルでサインインすると、Oracle Spatial Studioのダウンロード画面が表示されます。ファイルをダウンロードするにはライセンス条項を確認した後、I reviewed and accept the Oracle License Agreementにチェックを入れる必要があります。

今回の作業で使用するのはSpatial Studio QS 24.2.0.0.0.2 for (GENERIC (All Platforms))です(QSはQuick Startの略でWebサーバーとしてJettyがバンドルされています)。Oracle_Spatial_StudioQS_24.2.0.0.0.2.zipのリンクをクリックしてダウンロードします。より新しいバージョンのSpatial Studioがある場合は、そちらを使用します。

リンクをクリックするとHTTPのエラーが返されることがあるようです。そのような場合はDownloadをクリックして、Oracle Download Managerを利用することもできます。


適当なディレクトリを作成し、そのディレクトリ以下にダウンロードしたOracle_Spatial_StudioQS_24.2.0.0.0.2.zipを配置します。

Oracle Spatial Studioは、Oracle Container Registryに登録されているsqlclのコンテナ・イメージから作成したコンテナに実装します。sqlclはJavaアプリケーションなので、Oracle Spatial Studioのインストール要件であるJavaが含まれています。

podmanの以下のコマンドを実行し、コンテナsstudioを作成します。Spatial StudioのHTTPの待ち受けポートの番号は8080ですが、私の環境では使用済みなので8090を使うように指定しています。sqlclのコンテナ・イメージは作成直後にsqlclが実行されるように構成されているため、exitコマンドを渡してsqlclを終了しています。

カレント・ディレクトリを/opt/oracle/sql_scriptsにマップしているため、Oracle_Spatial_StudioQS_24.2.0.0.0.2.zipはコンテナ内の/opt/oracle/sql_scripts以下よりアクセスできます。

echo "exit" | podman run --name sstudio -i -p 8090:8090 -v `pwd`:/opt/oracle/sql_scripts container-registry.oracle.com/database/sqlcl:latest

% echo "exit" | podman run --name sstudio -i -p 8090:8090 -v `pwd`:/opt/oracle/sql_scripts container-registry.oracle.com/database/sqlcl:latest



SQLcl: Release 24.3 Production on Fri Dec 20 02:43:07 2024


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


% 


sqlclが終了するとコンテナは停止するため、上記のコマンドで作成したコンテナsstudioは停止されています。

コンテナsstudioを起動します。

podman start sstudio

% podman start sstudio

sstudio

%


コンテナsstudioの起動を確認します。

podman ps

% podman ps | grep sstudio

c0eeb2a66a0b  container-registry.oracle.com/database/sqlcl:latest  /nolog                5 minutes ago  Up 3 minutes         0.0.0.0:8090->8090/tcp                                                  sstudio

% 


コンテナsstudioに接続します。

podman exec -it sstudio bash

% podman exec -it sstudio bash

[root@c0eeb2a66a0b sql_scripts]# 


これからSpatial StudioのZIPファイルを展開しますが、unzipがインストールされていません。

unzipをインストールします。

dnf -y install unzip

[root@c0eeb2a66a0b sql_scripts]# dnf -y install unzip

Oracle Linux 8 BaseOS Latest (aarch64)                                36 MB/s | 122 MB     00:03    

Oracle Linux 8 Application Stream (aarch64)                           32 MB/s |  58 MB     00:01    A

Last metadata expiration check: 0:00:06 ago on Fri Dec 20 02:50:17 2024.

Dependencies resolved.

=====================================================================================================

 Package          Architecture       Version                      Repository                    Size

=====================================================================================================

Installing:

 unzip            aarch64            6.0-47.0.1.el8_10            ol8_baseos_latest            189 k


Transaction Summary

=====================================================================================================

Install  1 Package


Total download size: 189 k

Installed size: 474 k

Downloading Packages:

unzip-6.0-47.0.1.el8_10.aarch64.rpm                                  1.5 MB/s | 189 kB     00:00    

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

Total                                                                1.4 MB/s | 189 kB     00:00     

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction

  Preparing        :                                                                             1/1 

  Installing       : unzip-6.0-47.0.1.el8_10.aarch64                                             1/1 

  Running scriptlet: unzip-6.0-47.0.1.el8_10.aarch64                                             1/1 

  Verifying        : unzip-6.0-47.0.1.el8_10.aarch64                                             1/1 


Installed:

  unzip-6.0-47.0.1.el8_10.aarch64                                                                    


Complete!

[root@c0eeb2a66a0b sql_scripts]#  


このコンテナではユーザーoracleは作成されています。ユーザーoracleに切り替え、Oracle Spatial StudioのZIPファイルを解凍します。

su - oracle
unzip /opt/oracle/sql_scripts/Oracle_Spatial_StudioQS_24.2.0.0.0.2.zip

[root@c0eeb2a66a0b sql_scripts]# su - oracle

[oracle@c0eeb2a66a0b ~]$ unzip /opt/oracle/sql_scripts/Oracle_Spatial_StudioQS_24.2.0.0.0.2.zip 

Archive:  /opt/oracle/sql_scripts/Oracle_Spatial_StudioQS_24.2.0.0.0.2.zip

   creating: Oracle_Spatial_Studio/

   creating: Oracle_Spatial_Studio/conf/

  inflating: Oracle_Spatial_Studio/conf/keystore  

  inflating: Oracle_Spatial_Studio/conf/jetty-realm.properties  

  inflating: Oracle_Spatial_Studio/conf/server.json  

  inflating: Oracle_Spatial_Studio/start.sh  

  inflating: Oracle_Spatial_Studio/stop.sh  


[中略]


  inflating: Oracle_Spatial_Studio/moduser.sh  

  inflating: Oracle_Spatial_Studio/README.txt  

  inflating: Oracle_Spatial_Studio/moduser.bat  

  inflating: Oracle_Spatial_Studio/restart.bat  

  inflating: Oracle_Spatial_Studio/start.bat  

  inflating: Oracle_Spatial_Studio/stop.bat  

[oracle@c0eeb2a66a0b ~]$ 


作成されたディレクトリOracle_Spatial_Studioに移り、conf/server.jsonを修正します。HTTPでの待ち受けの許可とポート番号を変更します。

cd Oracle_Spatial_Studio/
vi conf/server.json

[oracle@c0eeb2a66a0b ~]$ cd Oracle_Spatial_Studio/

[oracle@c0eeb2a66a0b Oracle_Spatial_Studio]$ vi conf/server.json 


server.jsonの以下の部分を変更しています。HTTPSでアクセスすることは無いので、httpsEnabledはfalseに変えています。

    "serverConfig": {

        "host": "0.0.0.0",

        "httpPort": 8090,

        "httpsEnabled": false,

        "httpEnabled": true,

        "httpsPort": 4040,


ユーザーadminのパスワードを変更します。jetty-util-<バージョン>.jarに含まれるorg.eclipse.jetty.util.security.Passwordを呼び出し、暗号化されたパスワードを出力します。

java -cp servletContainer/jetty-util-9.4.51.v20230217.jar org.eclipse.jetty.util.security.Password admin <パスワード>

CRYPT:として出力された行をコピーします。

[oracle@c0eeb2a66a0b Oracle_Spatial_Studio]$ java -cp servletContainer/jetty-util-9.4.51.v20230217.jar org.eclipse.jetty.util.security.Password admin ********

2024-12-20 03:00:29.577:INFO::main: Logging initialized @41ms to org.eclipse.jetty.util.log.StdErrLog

Studio3344

OBF:******************************

MD5:******************************

CRYPT:***********

[oracle@c0eeb2a66a0b Oracle_Spatial_Studio]$ 


conf/jetty-realm.propertiesを開き、adminのパスワードのCRYPT:で始まる部分を、上の作業でコピーしたパスワードで置き換えます。

vi conf/jetty-realm.properties

admin: CRYPT:***********,valid-user,SGTech_SystemAdmin

daustin: CRYPT:**********,valid-user

bruce: CRYPT:**********,valid-user


必要であれば、daustinおよびbruceのパスワードも変更しておきます。

以上の変更を行い、一旦サーバーを起動します。

sh start.sh

[oracle@c0eeb2a66a0b Oracle_Spatial_Studio]$ sh start.sh 

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

2024-12-20 03:06:25.375:INFO::main: Logging initialized @406ms to org.eclipse.jetty.util.log.StdErrLog

2024-12-20 03:06:25.438:INFO:oejs.Server:main: jetty-9.4.51.v20230217; built: 2023-02-17T08:19:37.309Z; git: b45c405e4544384de066f814ed42ae3dceacdd49; jvm 17.0.10+11-LTS-240

2024-12-20 03:06:25.447:INFO:oejs.AbstractConnector:main: Started ServerConnector@3e598df9{HTTP/1.1, (http/1.1)}{0.0.0.0:8090}

2024-12-20 03:06:25.447:INFO:oejs.Server:main: Started @479ms

2024-12-20 03:06:25.987:INFO:oag.JettyConfigurerImpl:main: Configuring /spatialstudio with realm 'myrealm', /home/oracle/Oracle_Spatial_Studio/conf/jetty-realm.properties

2024-12-20 03:06:26.569 WARN  [bootstrap] [main] o.sgtech.util.localization.Messages - DIFFERENT-LOCALE-FOUND: ResourceBundle 'oracle.sgtech.util.messages.UtilMessages' could not be found for Locale 'en-US', but was found for 'und'. Proceeding with found bundle.


[中略]


INFO: Sync Manager timer is started at Fri Dec 20 03:06:30 UTC 2024

Dec 20, 2024 3:06:35 AM oracle.maps.suggest.repo.Repository <init>

INFO: Creating repository with LOCAL index.

Dec 20, 2024 3:06:35 AM oracle.maps.suggest.cache.MatchCacheService invalidateCache

INFO: Cleaning cache matches...

Dec 20, 2024 3:06:35 AM oracle.maps.suggest.repo.IndexSyncManager finalizeIndexing

INFO: New index is ready for oraclemaps_pub

Dec 20, 2024 3:06:35 AM oracle.maps.suggest.repo.IndexSyncManager run

INFO: Indexing folder does not contain any JSON map layer: /home/oracle/.sgtech/catalogs/oraclemaps_pub/50



初回起動時に/home/oracle/.sgtech以下に構成ファイルが作成されます。このファイルを変更したいので、一旦サーバーを停止します。

CTRL+Cを入力します。

INFO: Indexing folder does not contain any JSON map layer: /home/oracle/.sgtech/catalogs/oraclemaps_pub/50

^C[oracle@c0eeb2a66a0b Oracle_Spatial_Studio]$ 


$HOME/.sgtech以下のsgtech_config.jsonを開き、"https_only"の指定をfalseに変更します。

vi $HOME/.sgtech/sgtech_config.json

{

  "version": "24.1.0",

  "_comments": [

    "Product Configuration for Oracle Spatial Studio.",

    "Top level properties are: ",

    " - work_dir: the runtime working folder of the Studio app; empty to use same folder as this configuration file.",

    " - https_only:  if set to 'true', then Studio will only allow HTTPS access",

    " - master_seed: the randomly generated seed used by Studio for security purposes",

    " - metadata_schema: defines details of the Studio's own metadata schema in a 12.2+ Oracle database instance.",

    " - upload: defines settings related to dataset uploads",

    " - logging: application-wide logging settings",

    " - jobs: application-wide settings related to internal job queuing"

  ],


  "work_dir": "",


  "https_only": false,


  "master_seed": "FLebPfdY17eo0B6KZ5O8mInVTTfEHsou",


  "metadata_schema":{

 


サーバーを再度起動します。

sh start.sh

[oracle@c0eeb2a66a0b Oracle_Spatial_Studio]$ sh start.sh

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

2024-12-20 03:14:08.056:INFO::main: Logging initialized @416ms to org.eclipse.jetty.util.log.StdErrLog

2024-12-20 03:14:08.118:INFO:oejs.Server:main: jetty-9.4.51.v20230217; built: 2023-02-17T08:19:37.309Z; git: b45c405e4544384de066f814ed42ae3dceacdd49; jvm 17.0.10+11-LTS-240

2024-12-20 03:14:08.127:INFO:oejs.AbstractConnector:main: Started ServerConnector@3e598df9{HTTP/1.1, (http/1.1)}{0.0.0.0:8090}

2024-12-20 03:14:08.127:INFO:oejs.Server:main: Started @488ms

2024-12-20 03:14:08.189:INFO:oag.JettyConfigurerImpl:main: Configuring /spatialstudio with realm 'myrealm', /home/oracle/Oracle_Spatial_Studio/conf/jetty-realm.properties

2024-12-20 03:14:08.806 WARN  [bootstrap] [main] o.sgtech.util.localization.Messages - DIFFERENT-LOCALE-FOUND: ResourceBundle 'oracle.sgtech.util.messages.UtilMessages' could not be found for Locale 'en-US', but was found for 'und'. Proceeding with found bundle.

2024-12-20 03:14:08.807 INFO  [bootstrap] [main] o.sgtech.util.localization.Messages - BUNDLE-REGISTRATION-SUCCEEDED: ResourceBundle 'oracle.sgtech.util.messages.UtilMessages' with Locale 'und' was regi


[中略]


Dec 20, 2024 3:14:17 AM oracle.maps.suggest.repo.Repository <init>

INFO: Creating repository with LOCAL index.

Dec 20, 2024 3:14:17 AM oracle.maps.suggest.cache.MatchCacheService invalidateCache

INFO: Cleaning cache matches...

Dec 20, 2024 3:14:17 AM oracle.maps.suggest.repo.IndexSyncManager finalizeIndexing

INFO: New index is ready for oraclemaps_pub

Dec 20, 2024 3:14:17 AM oracle.maps.suggest.repo.IndexSyncManager run

INFO: Indexing folder does not contain any JSON map layer: /home/oracle/.sgtech/catalogs/oraclemaps_pub/97



ブラウザより以下のURLにアクセスします。ポート番号は、デフォルトから変更していなければ8080です。


ユーザーadminで接続すると、初回接続時はメタデータを保存するデータベースへの接続情報の設定を求められます。


今回、Spatial Studioのメタデータは、Spatial Studioと同様にコンテナとして実行されているOracle Database 23ai Freeのデータベースに保存します。

標準的な手順でOracle Database 23ai Freeのコンテナを作成していると、PDBとしてFREEPDB1が作成され、ホストのポート番号1521より接続できるように構成されています。

Spatial Studioのメタデータを保存するスキーマを作成します。Oracle Database 23ai Freeのコンテナはapex-dbとして作成済みであることを前提とします。

Oracle Database 23ai Freeが動作しているコンテナapex-dbに接続します。

podman exec -it apex-db bash

% podman exec -it apex-db bash

bash-4.4$ 


SQLPlusでデータベースに接続し、操作対象のPDBをFREEPDB1とします。

sqlplus / as sysdba
alter session set container = freepdb1;

bash-4.4$ sqlplus / as sysdba


SQL*Plus: Release 23.0.0.0.0 - Production on Fri Dec 20 03:25:01 2024

Version 23.5.0.24.07


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



Connected to:

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

Version 23.5.0.24.07


SQL> alter session set container = freepdb1;


Session altered.


SQL> 


Spatial Studioのメタデータを保存するスキーマSPATIAL_STUDIOを作成します。

create user spatial_studio identified by [パスワード];

SQL> create user spatial_studio identified by *********;


User created.


SQL> 


必要なロールを割り当てます。

grant connect, create procedure, create sequence, create session, create synonym, create table, create trigger, create type, create view to SPATIAL_STUDIO;
grant execute on sdo_util to spatial_studio;
grant execute on sdo_geom to spatial_studio;

SQL> grant connect, create procedure, create sequence, create session, create synonym, create table, create trigger, create type, create view to SPATIAL_STUDIO; 


Grant succeeded.


SQL> 


表領域USERSへの書き込みを無制限にします。Oracle Database 23ai Freeで作成したユーザーのデフォルト表領域はUSERSです。

alter user spatial_studio quota unlimited on users;

SQL> alter user spatial_studio quota unlimited on users;


User altered.


SQL> 


以上でSpatial Studioのメタデータを保持するスキーマが準備できました。

ユーザーadminでOracle Spatial Studioにサインインします。

Choose metadata connection typeとしてOracle Databaseを選択します。

Nextへ進みます。


Specify metadata schema detailsが表示されます。

ConnectionはService、Service/SIDはfreepdb1、Userは先ほど作成したSPATIAL_STUDIO、Passwordにはユーザー作成時に設定したパスワードを指定します。Hostは、Spatial Studioから見るとデータベースはコンテナ外のホストで動作しているため、host.containers.internal、Portは1521とします。

以上でOKをクリックします。


Oracle Spatial Studioの画面が開きます。


以上で、Oracle Spatial Studioの基本的な構成は完了しました。

完