この記事は、 JPOUG Advent Calendar 2022 2日目の記事です。
1日目はwrcsus4さんの記事『2022年12月版 Oracle Database/OCI 厳選リンク集』でした。
<2022年>
Oracle Databaseは次期Long Term Releaseの23cが発表されました。
19c→23cの間隔は、10gR2:2005年→11gR2:2009年の間隔と同等です。
MicrosoftのClient OSでも、2024年のWindows12で3年毎のリリースに戻すという噂があります。
2010年代以前のリリース間隔に戻っていくのでしょうか。
F1ではOracle Red Bull Racingが大活躍でした。

<Enterprise Manager 12c>
少し前に少し古いEnterprise Manager 12cについて調べる機会がありました。
12.1.0.5のリリースは2015年。既にdownload出来なくなっていました。
マニュアルでは判らない、ちょっとした動きを確認したい。何とかならないか...
Oracle Software Delivery Cloudを漁ってみると、それらしきものがありました。
「DLP: Oracle VM VirtualBox for Oracle Enterprise Manager Cloud Control 12.1.0.5.0」 ※
どうやらVirtualBox用の仮想マシンの様です。
ドキュメント含む6つのzipをダウンロードしました。
ファイル連結する際は、type VBox*.ova > EM12cR5.ovaでは遅く、copyコマンドの方が高速でした。
copy /b VBox_EM12cR5_1.ova + VBox_EM12cR5_2.ova + VBox_EM12cR5_3.ova + VBox_EM12cR5_4.ova + VBox_EM12cR5_5.ova EM12cR5.ova
※ダウンロード注意点
「DLP: Oracle VM Template for Oracle Enterprise Manager Cloud Control 12.1.0.5.0」
似たような名前ですが、こちらはXen向けのTemplateでした。
<Hyper-V VM>
普段はHyper-Vを使用しているので、VirtualBoxの併用には躊躇しました。
確か、共存出来なかった様な... (※VirtualBox 6.0以前ではHyper-Vと共存出来ませんでした。)
対策として、VirtualBox用に新しい環境を用意することにしました。
VHDX bootの前準備として、Hyper-VでWindows 11のゲストOSを用意しました。
仮想マシンの設定では、下記を変更しました。
・TPMを有効化
・統合サービスを全有効化
・自動チェックポイントを解除

<VHDX boot>
出来上がったゲストOSのVHDXを使用して、VHDX bootを設定しました。
・bcdedit設定
VHDXを右クリックしてマウント
bcdedit /copy {current} /d "Windows 11 VirtualBox"
bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} detecthal Yes
bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} hypervisorlaunchtype Off
bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} device partition=<マウントドライブ>:
bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} osdevice partition=<マウントドライブ>:
・VHDX boot
・Windows Update
・ドライブレター変更
・電源オプション
バランス => 高パフォーマンス
powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
・プロセッサのスケジュール
プログラム => バックグラウンドサービス
・VitualBox、Extension Pack インストール
6.1.38使用 (※検証時の最新版)
<仮想アプライアンスのインポート>
仮想アプライアンスのインポートから、EM12cR5.ovaを選択してインポート。
ホストOSが認識しているNICに変更するだけで、EM12cR5が起動しました。
ゲストOSのOracle Linux 5.7にoracleでログインし、start_all.shを実行し、ブラウザからアクセス。

リポジトリDBが登録されていなかったので、ターゲット追加しました。
・DBSNMP有効化
sqlplus /nolog
conn / as sysdba
set pagesize 50000
select * from dba_users where username='DBSNMP';
--EXPIRED & LOCKED
alter user dbsnmp account unlock;
alter user dbsnmp identified by welcome1;
conn dbsnmp/welcome1
・ターゲット追加
ブラウザ右上のSetup => Add Target => Add Targets Manually

嗚呼、懐かしきEnterprise Manager 12c、懐かしきFlash。
以上、Enterprise Manager 12cの検証が完了しました。
<ミスアライメント>
一応動かす事は出来ましたが、とにかく遅い。特にディスクが遅い。
start_all.sh実行時、vmstatで確認すると、b(I/O待機)が2桁となる事もありました。

原因は保存場所に物理4KセクターのHDDを使用していた為でした。
RHEL5系なので、ディスクがミスアライメントしていました。
パーティション開始位置が8=4096/512で割り切れません。
# fdisk -lu /dev/sda
Disk /dev/sda: 44.0 GB, 44023414784 bytes
255 heads, 63 sectors/track, 5352 cylinders, total 85983232 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 63 208844 104391 83 Linux
/dev/sda2 208845 85979879 42885517+ 8e Linux LVM
対策は保存場所をHDD=>SSDへ変更するだけです。
SSDが普及した昨今、ミスアライメント自体が既に不要な知識となっているかも知れません。
time ./start_all.sh の結果は、HDD=>SSD化で高速化しました。
| 比較内容 |
real |
user |
sys |
| HDD |
8m4.665s |
4m21.864s |
0m18.829s |
| SSD |
5m13.156s |
2m50.236s |
0m11.738s |
<VBoxGuestAdditions>
EM12cR5には4.2.12のVBoxGuestAdditionsが導入されていました。
そのままでも大きな問題はありませんが、今回はより新しいバージョンへ変更しました。
そのバージョン決定に一苦労。
ソフトと同じ6.1.38を導入すると、画面サイズが800x600固定となってしまいました。
しかし古い6.0.24では画面サイズの問題は発生しません。
インストール媒体を解凍し、file_VBoxGuestAdditions.isoのみを抜き出してバージョン別に確認。
結果、6.1.4までは画面サイズの問題は発生せず、6.1.6以降で800x600固定の問題が発生しました。
但し、6.1.4でも別の問題があり、ゲストOS=>ホストOSへのクリップボード共有が働きませんでした。
VBoxGuestAdditionsは無暗に変更しない方が良さそうです。
※その後にリリースされたVirtualBox 7.0のVBoxGuestAdditionsでは、画面サイズとクリップボード共有の問題は発生しませんでした。
time ./start_all.sh の結果は、あまり変わりませんでした。
| 比較内容 |
real |
user |
sys |
| VBoxGuestAdditions=4.2.12 |
5m13.156s |
2m50.236s |
0m11.738s |
| VBoxGuestAdditions=6.1.4 | 5m12.792s |
2m47.196s |
0m11.831s |
<Hyper-V同居準備>
どうやらVirtualBox 6.1ではHyper-Vと共存出来る様です。
bcdeditでhypervisorlaunchtype Autoへ変更後、準仮想化インターフェースを変更して動作確認しました。
EM12cR5で標準設定されている準仮想化インターフェース=LegacyではHDDの結果よりも遅くなりました。
更に、準仮想化インターフェース=LegacyでVBoxGuestAdditions=4.2.12のままでは、 hypervisorlaunchtype Offの頃より3倍近く遅くなりました。
準仮想化インターフェース=デフォルト(KVM準仮想化)、VBoxGuestAdditions=6.1.4を使用する事で、速度低下をかなり 抑えられました。
| 比較内容 |
real |
user |
sys |
| hypervisorlaunchtype Auto 準仮想化インターフェース=Legacy VBoxGuestAdditions=4.2.12 |
14m51.037s |
1m41.478s |
6m21.661s |
| hypervisorlaunchtype Auto 準仮想化インターフェース=Legacy VBoxGuestAdditions=6.1.4 |
9m37.603s | 1m1.576s | 4m7.659s |
| hypervisorlaunchtype Auto 準仮想化インターフェース=デフォルト VBoxGuestAdditions=6.1.4 |
5m9.303s |
1m32.745s |
1m44.535s |
<Hyper-V変換>
まず、vdi=>vhd変換しました。
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonehd <変換元>\EM12cR5-disk1.vdi <変換先>\EM12cR5-disk1.vhd --format vhd
次に、EM12cR5用の仮想マシンを作成しました。
・第一世代
・レガシネットワークアダプタ
・MACアドレス静的設定

Hyper-Vで仮想マシンを起動すると、Xの起動エラーが発生しました。
適当にYesとOKで進んでいくと、Xが再設定されて無事に起動しました。
ウィンドウをクリックしないと仮想マシンのマウス操作が出来ませんが、後は普通にEM12cR5が使えました。

Hyper-VでRHEL5系のLinuxを便利に使う為には、LISをインストールする必要があります。
https://www.microsoft.com/download/details.aspx?id=55106
Linux Integration Services v4.3 for Hyper-V and Azure
但し、Oracle Linux 5.7には一筋縄にはインストール出来ませんでした。
・RHEL互換カーネル起動
/etc/grub.conf default=0=>1
・インストール前後に/etc/oracle-releaseリネーム
mv /etc/oracle-release /etc/oracle-release.org
./install.sh
mv /etc/oracle-release.org /etc/oracle-release
LIS導入前後で比較した所、速度面も改善しました。
| 比較内容 |
real |
user |
sys |
| Hyper-V LIS導入前 |
5m40.721s |
2m16.142s |
0m16.715s |
| Hyper-V LIS導入後 | 3m44.756s |
1m59.287s |
0m9.867s |
<共演>
左側にHyper-V、右側にVirtualBoxでEM12cR5を同時起動してみました。

<まとめ>
・VirtualBox 6.1以降はHyper-Vと共存可能。
準仮想化インターフェース=デフォルト(KVM準仮想化)、VBoxGuestAdditions=6.1以降。
・VirtualBox=>Hyper-Vの仮想マシン変換は容易。
明日はasahideさんです。

