Oracle Enterprise Manager 24aiが出たのでインストールしてみた

2024年末に[OEM 24aiがリリース](https://blogs.oracle.com/observability/post/oracle-enterprise-manager-24)されました。
新機能として GenAI Assistant が挙げられており、生成AIとベクトル検索を用いて、自然言語で監視対象DBの負荷状況を確認できるそうです。
動作イメージは下記動画をご参照ください。
https://www.youtube.com/watch?v=ZW5E1kZ6izw&t=1063s
この GenAI Assistant を試したくてOEM 24aiをインストールしてみたのですが、実機やドキュメントを見ても、該当機能が見つかりませんでした。。
もしかしたら現行最新の 24.1 ではなく、次の 24.2 以降で搭載予定なのかもしれません。
という訳で、今回は一先ずOEM 24.1をインストールしたときの流れをメモとして残したいと思います。。

## 環境

OCI上にComputeを使って構築しました。
DB構築の手間を省くため、以下マーケットプレイスのイメージを使いました。
https://cloudmarketplace.oracle.com/marketplace/ja_JP/listing/47726045

## OEMインストール

以下からOEM 24ai本体をダウンロードします。
https://edelivery.oracle.com/

以降は `oracle` ユーザで作業します。
インストール先ディレクトリを作成します。

```bash
$ mkdir -p /u01/app/oracle/middleware
$ mkdir -p /u01/app/oracle/agent
``` 

サイレント・インストールを行うため、レスポンスファイルを作成します。
レスポンスファイル作成に必要な環境変数をセットします。

```bash
ORACLE_BASE=/u01/app/oracle
UNIX_GROUP_NAME=oinstall
ORA_INVENTORY=/u01/app/oraInventory
MW_HOME=${ORACLE_BASE}/middleware
ORACLE_HOSTNAME=${HOSTNAME}
AGENT_BASE=${ORACLE_BASE}/agent
WLS_USERNAME=weblogic
WLS_PASSWORD=Welcome1
GC_INST=${ORACLE_BASE}/gc_inst
SOFTWARE_LIBRARY=${ORACLE_BASE}/swlib
DATABASE_HOSTNAME=localhost
LISTENER_PORT=1521
PDB_NAME=orclpdb
SYS_PASSWORD=Ora_DB4U
AGENT_PASSWORD=${WLS_PASSWORD}
ORACLE_SID=ORCL
DATA_DIR=/u01/app/oracle/oradata
OMS_HOME=${MW_HOME}
SYSMAN_PASSWORD=${WLS_PASSWORD}
SOFTWARE_DIR=/u01/software
```

レスポンスファイルを作成します。

```bash
cat > /tmp/install.rsp <<EOF
RESPONSEFILE_VERSION=2.2.1.0.0
UNIX_GROUP_NAME=${UNIX_GROUP_NAME}
INVENTORY_LOCATION=${ORA_INVENTORY}
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
INSTALL_UPDATES_SELECTION=skip
ORACLE_MIDDLEWARE_HOME_LOCATION=${MW_HOME}
ORACLE_HOSTNAME=${ORACLE_HOSTNAME}
AGENT_BASE_DIR=${AGENT_BASE}
WLS_ADMIN_SERVER_USERNAME=${WLS_USERNAME}
WLS_ADMIN_SERVER_PASSWORD=${WLS_PASSWORD}
WLS_ADMIN_SERVER_CONFIRM_PASSWORD=${WLS_PASSWORD}
NODE_MANAGER_PASSWORD=${WLS_PASSWORD}
NODE_MANAGER_CONFIRM_PASSWORD=${WLS_PASSWORD}
ORACLE_INSTANCE_HOME_LOCATION=${GC_INST}
CONFIGURE_ORACLE_SOFTWARE_LIBRARY=true
SOFTWARE_LIBRARY_LOCATION=${SOFTWARE_LIBRARY}
DATABASE_HOSTNAME=${DATABASE_HOSTNAME}
LISTENER_PORT=${LISTENER_PORT}
SERVICENAME_OR_SID=${PDB_NAME}
SYS_PASSWORD=${SYS_PASSWORD}
SYSMAN_PASSWORD=${SYSMAN_PASSWORD}
SYSMAN_CONFIRM_PASSWORD=${SYSMAN_PASSWORD}
DEPLOYMENT_SIZE=SMALL
AGENT_REGISTRATION_PASSWORD=${AGENT_PASSWORD}
AGENT_REGISTRATION_CONFIRM_PASSWORD=${AGENT_PASSWORD}
PLUGIN_SELECTION={}
b_upgrade=false
EM_INSTALL_TYPE=NOSEED
CONFIGURATION_TYPE=LATER
CONFIGURE_SHARED_LOCATION_BIP=false
MANAGEMENT_TABLESPACE_LOCATION=${DATA_DIR}/${ORACLE_SID^^}/${PDB_NAME}/mgmt.dbf
CONFIGURATION_DATA_TABLESPACE_LOCATION=${DATA_DIR}/${ORACLE_SID^^}/${PDB_NAME}/mgmt_ecm_depot1.dbf
JVM_DIAGNOSTICS_TABLESPACE_LOCATION=${DATA_DIR}/${ORACLE_SID^^}/${PDB_NAME}/mgmt_deepdive.dbf
EOF
```

OEM 24aiをインストールします。

```bash
$ unset CLASSPATH
$ ${SOFTWARE_DIR}/em24100_linux64.bin -silent -responseFile /tmp/install.rsp
```

`root` に切替てrootスクリプトを実行します。

```bash
sh ${MW_HOME}/oms_home/allroot.sh
```

## リポジトリDBを構成

リポジトリDBの構成もサイレント形式で行います。
そのため、まずはレスポンスファイルを作成します。

```bash
cat > /tmp/config.rsp <<EOF
RESPONSEFILE_VERSION=2.2.1.0.0
UNIX_GROUP_NAME=${UNIX_GROUP_NAME}
INVENTORY_LOCATION=${ORA_INVENTORY}
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
INSTALL_UPDATES_SELECTION=skip
ORACLE_MIDDLEWARE_HOME_LOCATION=${MW_HOME}
ORACLE_HOSTNAME=${ORACLE_HOSTNAME}
AGENT_BASE_DIR=${AGENT_BASE}
WLS_ADMIN_SERVER_USERNAME=${WLS_USERNAME}
WLS_ADMIN_SERVER_PASSWORD=${WLS_PASSWORD}
WLS_ADMIN_SERVER_CONFIRM_PASSWORD=${WLS_PASSWORD}
NODE_MANAGER_PASSWORD=${WLS_PASSWORD}
NODE_MANAGER_CONFIRM_PASSWORD=${WLS_PASSWORD}
ORACLE_INSTANCE_HOME_LOCATION=${GC_INST}
CONFIGURE_ORACLE_SOFTWARE_LIBRARY=true
SOFTWARE_LIBRARY_LOCATION=${SOFTWARE_LIBRARY}
DATABASE_HOSTNAME=${DATABASE_HOSTNAME}
LISTENER_PORT=${LISTENER_PORT}
SERVICENAME_OR_SID=${PDB_NAME}
SYS_PASSWORD=${SYS_PASSWORD}
SYSMAN_PASSWORD=${SYSMAN_PASSWORD}
SYSMAN_CONFIRM_PASSWORD=${SYSMAN_PASSWORD}
DEPLOYMENT_SIZE=SMALL
AGENT_REGISTRATION_PASSWORD=${AGENT_PASSWORD}
AGENT_REGISTRATION_CONFIRM_PASSWORD=${AGENT_PASSWORD}
PLUGIN_SELECTION={}
b_upgrade=false
EM_INSTALL_TYPE=NOSEED
CONFIGURATION_TYPE=ADVANCED
CONFIGURE_SHARED_LOCATION_BIP=false
MANAGEMENT_TABLESPACE_LOCATION=${DATA_DIR}/${ORACLE_SID^^}/${PDB_NAME}/mgmt.dbf
CONFIGURATION_DATA_TABLESPACE_LOCATION=${DATA_DIR}/${ORACLE_SID^^}/${PDB_NAME}/mgmt_ecm_depot1.dbf
JVM_DIAGNOSTICS_TABLESPACE_LOCATION=${DATA_DIR}/${ORACLE_SID^^}/${PDB_NAME}/mgmt_deepdive.dbf
EOF
```

リポジトリDB構成のスクリプトを実行します。
こちらは完了までに結構な時間を要します。

```bash
$ unset CLASSPATH
$ ${MW_HOME}/oms_home/sysman/install/ConfigureGC.sh -silent -responseFile /tmp/config.rsp
```

これでOEM 24aiのインストールが完了しました。
あとは接続できるようにファイアウォールを設定します。
OEMは7803ポートで待ち受けていますが、以下設定により443ポートからポートフォワーディングするようにします。

```bash
sudo su -
firewall-cmd --add-service=https
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=7803
firewall-cmd --runtime-to-permanent
firewall-cmd --reload
firewall-cmd --list-all
```

OCIセキュリティ・リストに対しても、443ポートで接続できるように設定します。
これで以下URLからアクセスできるようになります。
https://your_public_ip/em

![WS000013.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/96bba6bd-4314-0595-33f4-92da86517aa1.jpeg)

## 主な画面

残りはおまけですが、一応DBのターゲット追加や基本的な監視画面を載せておきます。
ぱっと見は13.5までと変わりないようです。

### DBのターゲット追加

リポジトリDBだけですが、ターゲット追加してみます。
サイドメニューから「ターゲットの手動追加」を選択。

![WS000000.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/358352de-7848-2e30-dc03-a3608eb82368.jpeg)

｢ガイド付きプロセスを使用した追加」を選択。

![WS000001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/c0ba2961-f7ee-6580-1a17-b8987e77de13.jpeg)

｢Oracle Database...」を選択して追加。

![WS000002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/6b2bb44e-0332-164c-3e3f-5a398a529510.jpeg)

｢ホストまたはクラスタの指定」でリポジトリDBを選択。

![WS000003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/9883ea51-9981-794e-85e4-529cd0ca4845.jpeg)

![WS000004.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/b2856caa-46cf-9e2c-d824-ad102dcae918.jpeg)

![WS000005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/2e82fda7-7cf5-14de-6736-e819610362b3.jpeg)

検出結果の画面で「コンテナ・データベース」「リスナー」にチェック。

![WS000006.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/0ab9b0f6-1b40-52d6-5ab4-d713af61c548.jpeg)

｢モニタリング資格証明」に `dbsnmp` ユーザの情報を入力して「接続テスト」を実施。

:::note warn
事前に `dbsnmp` ユーザに対して以下設定を行う必要があります。

```sql
SQL> GRANT CREATE PROCEDURE TO dbsnmp;
SQL> GRANT SELECT ANY DICTIONARY, SELECT_CATALOG_ROLE TO dbsnmp;
SQL> GRANT ALTER SYSTEM TO dbsnmp;
SQL> GRANT ADVISOR TO dbsnmp;
SQL> GRANT EXECUTE ON DBMS_WORKLOAD_REPOSITORY TO dbsnmp;

SQL> ALTER USER dbsnmp ACCOUNT UNLOCK;
SQL> ALTER USER dbsnmp IDENTIFIED BY "your password";
```
:::

![WS000007.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/f5d2a800-e736-fc93-9b76-29136aefe38b.jpeg)

サマリを確認して「保存」を選択。

![WS000008.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/71a317d8-f867-5dd2-9831-4ec80aaf3bac.jpeg)

![WS000009.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/361d8e67-48be-bdfe-8ffb-64655bf86a2a.jpeg)

### 監視画面

DB監視画面のトップ。

![WS000010.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/9fbff0c2-536c-166c-9e0d-3aa207c18efa.jpeg)

｢パフォーマンス・ハブ」の表示。

![WS000011.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/a5a70256-791c-3ba4-6aa6-d43735f1cf2a.jpeg)

![WS000012.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33182/6c960614-2aaf-797e-78dc-8a43b88753b0.jpeg)

以上になります。
また GenAI Assistant 機能が使えるようになったタイミングで記事にしたいと思います。