Oracle Database 23ai Free VirtualBox Appliance で Oracle DB 23ai環境 を 楽々構築

以前の記事の Oracle Database 23ai版 となります。

> Oracle Database 23c Free - Developer Release VirtualBox Appliance で Oracle DB 23c環境 を 楽々構築
> https://qiita.com/ora_gonsuke777/items/564471e460b2b58d8aa2

oracle.com からダウンロードできる VirtualBoxイメージ(ovaファイル) で Oracle Database 23ai環境をサクっと構築してみるやで。
彡(ﾟ)(ﾟ)

# 1. VirtualBox をインストール
まずは VirtualBox をダウンロードしてインストール、現時点(2025/1/31)の最新版は 7.1.6 となります。
Oracle VM VirtualBox Extension Pack も一緒に入れとくと良いです。

> Oracle VM VirtualBox
> https://www.oracle.com/virtualization/technologies/vm/downloads/virtualbox-downloads.html


# 2. Oracle Database 23ai Free - Developer Release VirtualBox Appliance の ovaイメージをダウンロード

下記ページから ovaイメージ を ダウンロードします。
6GB強あるのでダウンロードを開始したら少し待ちます彡(ﾟ)(ﾟ)

> Oracle Database 23ai Free VirtualBox Appliance
> https://www.oracle.com/database/technologies/databaseappdev-vm.html

ハッシュ値を確認、下記は Windows PowerShell でのSHA1ハッシュの確認例です。

```shell
certutil -hashfile C:\Users\AYSHIBAT\Downloads\Oracle_Database_23ai_Free_Developer.ova

SHA1 ハッシュ (対象 C:\Users\AYSHIBAT\Downloads\Oracle_Database_23ai_Free_Developer.ova):
2d22de4c92b8dcf414e8b62e29c70f2625a028ea
CertUtil: -hashfile コマンドは正常に完了しました。
```

# 3. ovaイメージのインポートと追加設定

ダウンロードしたovaイメージをVirtualboxにインポートします。基本完了ボタンをポチるだけ彡(ﾟ)(ﾟ)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/a9a6cee8-3eef-2f1f-3443-ef8265a49486.png)

インポート完了後すぐ起動しても良いのですがリソースを少し増やした方が良いです。仮想マシンにメモリを4GB、プロセッサーを4CPU割り当てます。もちろんホストマシンのリソースに余裕があればもっと割り当ててもよいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/fbe0193d-8c2d-a33c-a453-540ca1298764.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/f2f57abb-e875-ae61-0836-e55107400f56.png)

仮想マシンの OS からインターネットに接続したいケースもあるかもしれません。ホストオンリーアダプターを2つめのアダプターとしてアタッチすると OS からインターネットに接続できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/15b2a25b-0555-fe37-5683-acc3fa60374a.png)

アダプターをアタッチすると、例えば yum installコマンド でインターネット上のリポジトリにアクセスできます。

```python
[root@localhost ~]# yum install perl-HTML-Parser.x86_64
Oracle Linux 8 BaseOS Latest (x86_64)                                                                                                                       1.1 MB/s |  87 MB     01:17
Oracle Linux 8 Application Stream (x86_64)                                                                                                                  1.0 MB/s |  66 MB     01:06
Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (x86_64)                                                                                  3.0 MB/s |  54 MB     00:18
Last metadata expiration check: 0:00:16 ago on Tue 28 Jan 2025 03:19:28 PM UTC.
Dependencies resolved.
============================================================================================================================================================================================
 Package                                       Architecture                 Version                                                           Repository                               Size
============================================================================================================================================================================================
Installing:
 perl-HTML-Parser                              x86_64                       3.72-15.module+el8.3.0+7692+542c56f9                              ol8_appstream                           119 k
：
```

# 4. 仮想マシンの起動

インポートと設定が完了したら仮想マシンを起動します彡(ﾟ)(ﾟ)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/8fd9077b-1504-eaee-2004-377b9b122c4d.png)

VM起動後の /home/oracle/Desktop/Oracle Database 23ai Free.html にパスワード等の接続情報が記載されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/9a1dd33a-a789-b4c6-0d29-5acd84cd0e66.png)


# 5. 仮想マシンへのアクセス(ssh + sqlplus)

インポートされた仮想マシンにはNATのポートフォワード設定が下記のように設定されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/a69f2891-a441-a852-45f9-1307e78463b7.png)

sshのポートフォワードは 2223(HOST)→22(GUEST) に設定されているので、
ホストOSのターミナルソフトから「localhost:2223」でsshログインが可能です。

Teraterm で oracleユーザー で接続してみます。パスワードも oracle です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/6dd28e42-7291-fb92-8b87-6a67e34be13b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/710c95fe-48d6-91a8-eaa9-f14f3e9672e9.png)

SSH接続後に下記コマンドで sqlplus を起動して CDB に接続します。

```sql
export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
export PATH=${PATH}:${ORACLE_HOME}/bin
cat ${ORACLE_HOME}/network/admin/tnsnames.ora
sqlplus /nolog
CONNECT SYS/oracle@FREE AS SYSDBA
SET LINESIZE 170;
SET PAGESIZE 100;
SHOW CON_NAME;
SELECT BANNER, BANNER_FULL FROM V$VERSION;
```

実行結果は下記の通り。DBにログイン成功や！彡(^)(^)

```sql
[oracle@localhost ~]$ export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
[oracle@localhost ~]$ export PATH=${PATH}:${ORACLE_HOME}/bin
[oracle@localhost ~]$ cat ${ORACLE_HOME}/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

FREE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = FREE)
    )
  )

LISTENER_FREE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


FREEPDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = FREEPDB1)
    )
  )
[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Fri Jan 31 03:00:58 2025
Version 23.6.0.24.10

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

SQL> CONNECT SYS/oracle@FREE AS SYSDBA
Connected.
SQL> SET LINESIZE 170;
SQL> SET PAGESIZE 100;
SQL> SHOW CON_NAME;

CON_NAME
------------------------------
CDB$ROOT
SQL> SELECT BANNER, BANNER_FULL FROM V$VERSION;

BANNER
---------------------------------------------------------------------------------------------------------------------------------
BANNER_FULL
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.6.0.24.10


SQL>
```

# 6. 仮想マシンのPDBにホストOSのツール(SQL Developer)で接続

お次はホストOSの SQL Developer で仮想マシンのPDBにログインしてみます彡(ﾟ)(ﾟ)

仮想マシンのOracleリスナーのポートは 1521(HOST)→1521(GUEST) にフォワードされているので、
ホストOSのツール類から localhost:1521 でDB接続できます。

今回は Winodws(ホストOS) の SQL Developer で仮想マシンの PDB に接続してみます。

> ユーザー名：PDBADMIN 
> パスワード：oracle 
> ホスト名：localhost
> ポート：1521
> サービス名：FREEPDB1

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/65876a6b-2dfc-5259-95f6-875a805e23b1.png)

接続後、試しに V$VERSION を SELECT してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/75f53187-5323-8a40-6bc0-a786ce5b437f.png)

成功です。彡(^)(^)

# 7. 仮想マシンの ORDS(APEX) ADMIN環境にホストマシンのWebブラウザからアクセス(Oracle APEX, ORDS)

仮想マシンの8080ポート(HOST)は8080ポート(GUEST)にフォワードされていて、ホストマシンのブラウザから仮想マシンの ORDS(APEX) ADMIN環境にアクセスできます。下記は接続情報となります。

> URL…………http://localhost:8080/ords/apex
> Workspace…INTERNAL
> Username …ADMIN
> Password …oracle

接続画面のキャプチャは下記

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/29fc192c-53bf-484f-c71a-f29ef033bea3.png)

接続後のキャプチャはこちら、へーしゃ(ORACLE)の Redwood ってやつですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/690e27db-9ee9-00fa-0a9c-deafa9075efc.png)

# 8. 仮想マシンの SQL Developer Web にホストマシンのWebブラウザからアクセス

仮想マシンには SQL Developer Web というツールがセットアップされていて、
ホストマシンのブラウザから接続可能です。下記は接続情報となります。

> URL………http://localhost:8080/ords/sql-developer
> ユーザー名……HR
> パスワード……oracle

接続画面キャプチャはこちら

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/e18c97df-ea97-6ecd-3df7-1fd7341321c3.png)

接続後のキャプチャはこちら、なんか色々できそう？(こなみ
彡(ﾟ)(ﾟ)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/9464f9ec-13c4-4d6c-3a28-a0f146cbc7e4.png)

# 9. OS認証で CDB$ROOT にSYSユーザーでログイン

CDB$ROOT に OS認証 でログインする方法ですが、該当環境のoracleユーザーには
環境変数TWO_TASKがセットされているので、これを解除して ORACLE_SID を指定してログインして下さい。

```sql
export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
export PATH=${PATH}:${ORACLE_HOME}/bin
export ORACLE_SID=FREE
unset TWO_TASK
sqlplus /nolog
CONNECT / AS SYSDBA
SET LINESIZE 170;
SET PAGESIZE 100;
SHOW CON_NAME;
SELECT BANNER, BANNER_FULL FROM V$VERSION;
```

下記の通り OS認証 でログインできます。

```sql
[oracle@localhost ~]$ export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
[oracle@localhost ~]$ export PATH=${PATH}:${ORACLE_HOME}/bin
[oracle@localhost ~]$ export ORACLE_SID=FREE
[oracle@localhost ~]$ unset TWO_TASK
[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Fri Jan 31 03:10:00 2025
Version 23.6.0.24.10

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

SQL> CONNECT / AS SYSDBA
SET LINESIZE 170;
Connected.
SQL> SQL> SET PAGESIZE 100;
SQL> SHOW CON_NAME;

CON_NAME
------------------------------
CDB$ROOT
SQL> SELECT BANNER, BANNER_FULL FROM V$VERSION;

BANNER
---------------------------------------------------------------------------------------------------------------------------------
BANNER_FULL
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.6.0.24.10
```

# 10. SQLcl で CDB に接続(ssh + SQLcl)

最近のバージョンには SQLcl というユーティリティが同梱されています。ヒストリ対応など sqlplus の進化版？的な位置付けです。
その SQLcl で CDB に接続してみます。仮想マシンに oracleユーザー で SSH接続した後に下記コマンドを実行して下さい。

```sql
sql /nolog
CONNECT system/oracle@localhost:1521/free
SHOW CON_NAME;
SELECT * FROM V$VERSION;
```

結果は以下の通り、SQLcl で CDB に接続できました。
彡(^)(^)

```sql
[oracle@localhost ~]$ sql /nolog


SQLcl: Release 24.3 Production on Fri Jan 31 03:14:43 2025

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

SQL> CONNECT system/oracle@localhost:1521/free
Connected.
SQL> SHOW CON_NAME;
CON_NAME
------------------------------
CDB$ROOT
SQL> SELECT * FROM V$VERSION;

BANNER                                                                             BANNER_FULL                                                                                             BANNER_LEGACY                                                                         CON_ID
__________________________________________________________________________________ _______________________________________________________________________________________________________ __________________________________________________________________________________ _________
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free    Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.6.0.24.10    Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free            0

SQL>
```

# 11. ライセンス(使用許諾) および 利用可能な機能について

ライセンス(使用許諾) および 利用可能な機能 は下記マニュアルを参照して下さい。

> Oracle Database Database Licensing Information User Manual 23ai
> 1 Licensing Information
> https://docs.oracle.com/en/database/oracle/oracle-database/23/dblic/Licensing-Information.html#GUID-B6113390-9586-46D7-9008-DCC9EDA45AB4

# 12. まとめ

Oracle Database 23ai環境が簡単に構築できました。皆さんどんどん活用して下さいね。
彡(^)(^)