Oracle Database 23c Free - Developer Release VirtualBox Appliance で Oracle DB 23c環境 を 楽々構築

(※2025年1月31日追記)23ai版の記事を作成したので下記を参照して下さい。

https://qiita.com/ora_gonsuke777/items/a53b04da983998e16c06

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

> OTN の VirtualBoxイメージ で Oracle DB 19c環境 を 楽々構築
> https://qiita.com/ora_gonsuke777/items/b41f37637e59319796b4

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

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

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


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

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

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

ハッシュ値を確認、下記は WindowsコマンドプロンプトでのMD5ハッシュの確認例です。

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

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

# 3. ovaイメージのインポート

ダウンロードしたovaイメージをVirtualboxにインポートします。基本ポチポチするだけ彡(ﾟ)(ﾟ)
![DB23c_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/38f17491-6e9e-cd72-2091-19f4cb02c308.png)

![DB23c_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/88b00a08-da08-fdda-c9ce-33fcc0f50b22.png)

# 4. 仮想マシンの起動

インポートが成功したら、仮想マシンを起動します。起動するだけ彡(ﾟ)(ﾟ)
![DB23c_003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/debb41be-35ca-98e9-95a7-b62321a769d9.png)

![DB23c_004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/357f974c-42e2-f23e-3b01-f490c44bddfd.png)

VM起動後のREADME.txtにパスワード等の接続情報が記載されています。

![DB23c_006b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/a5db0fc0-9b3f-a7f6-9ded-d9b1fa952642.png)

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

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

![DB23c_005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/29e428a8-838d-35a0-72a4-a2ea3578cda7.png)

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

Teraterm で oracleユーザー で接続してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/02e4ca59-5fa7-4855-7cc2-0092eed3cdfb.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/aa548e63-6d0d-3862-6457-534afb2fa2aa.png)

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

```sql
export ORACLE_HOME=/opt/oracle/product/23c/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/23c/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/23c/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 - Developer-Release on Tue Apr 4 14:14:17 2023
Version 23.2.0.0.0

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

SQL> Connected.
SQL> SQL> SQL>
CON_NAME
------------------------------
CDB$ROOT
SQL>
BANNER
--------------------------------------------------------------------------------
BANNER_FULL
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0


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

![DB23c_007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/ce2c3fbd-43e9-2502-a312-6afaded7c982.png)

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

![DB23c_008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/f0645820-e96c-e22f-ee81-2578e25e4dcb.png)

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

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

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

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

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

![DB23c_009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/de1c9d55-2c7f-424b-7788-233d34d49a19.png)

接続後のキャプチャはこちら、イメージが大分変わりましたね……。

![DB23c_010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/5e6a9426-6f3a-c251-9738-5753b82f9c7c.png)

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

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

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

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

![DB23c_011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/08efe550-a8d1-7c89-74e4-651f803ad33c.png)

接続後のキャプチャはこちら、OCIっぽい見た目ですね……・。

![DB23c_012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/64c301c7-67cb-35ba-be6a-ff927d02d6ee.png)

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

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

```sql
export ORACLE_HOME=/opt/oracle/product/23c/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 admin]$ export ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree
[oracle@localhost admin]$ export PATH=${PATH}:${ORACLE_HOME}/bin
[oracle@localhost admin]$ export ORACLE_SID=FREE
[oracle@localhost admin]$ unset TWO_TASK
[oracle@localhost admin]$ sqlplus /nolog

SQL*Plus: Release 23.0.0.0.0 - Developer-Release on Tue Apr 4 14:35:41 2023
Version 23.2.0.0.0

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

SQL> Connected.
SQL> SQL> SQL>
CON_NAME
------------------------------
CDB$ROOT
SQL>
BANNER
--------------------------------------------------------------------------------
BANNER_FULL
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0


SQL>
```

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

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

```sql
sql /nolog
CONNECT SYS/oracle@localhost:1521/FREE AS SYSDBA
SHOW CON_NAME;
SELECT * FROM V$VERSION;
```

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

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


SQLcl: Release 23.1 Production on Tue Apr 04 15:09:48 2023

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

SQL> CONNECT SYS/oracle@localhost:1521/FREE AS SYSDBA
Connected.
SQL> SHOW CON_NAME;
CON_NAME
------------------------------
CDB$ROOT
SQL> SELECT * FROM V$VERSION;

BANNER                                                              BANNER_FULL                                                                            BANNER_LEGACY                                                          CON_ID
___________________________________________________________________ ______________________________________________________________________________________ ___________________________________________________________________ _________
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release    Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0    Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release            0

SQL>
```

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

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

> Oracle Database Database Licensing Information User Manual 23c
> 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 23c環境が簡単に構築できました。皆さんどんどん活用して下さいね。
彡(^)(^)