[OCI] BaseDB の Oracle DB 19c を 23ai にバージョンアップする

# やったこと
Oracle Cloud (BaseDB)が、19cだったので、23aiにバージョンアップ。
オンプレ環境ではかなり大変な作業が、数クリックで完了！

# 前提
2025/2時点になります。
どのバージョンにバージョンアップできるかは時期によって異なると思います。
ただし、おおまかな実行方法はそんなに変わらないでしょう。


# バージョンアップ手順

19c環境で作ったBaseDBのバージョンを確認してみます。
バージョンは2か所に表示されています。
上部の「DBシステム・バージョン」は Grid Infrastructureのバージョンです。
おもにストレージ管理などに使用されています。

データベースは下部の「データベースのバージョン」のところに表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/38121394-af6c-4c34-a924-369020e2e1a8.png)

今回19cを選択して作成したBaseDBでは、Grid Infrastructureは19c(19.23)になっていました。
以前BaseDB12cを作成したときに、Grid Infrastructureが19cのこともあったので
いずれ23aiがデフォルトになることもあるかもしれません。

バージョンアップやパッチ適用は、DBシステムの方の「表示」リンクから進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/4ae83532-5bb7-4f76-9a32-5a819f057d07.png)


バージョンアップ・パッチ適用が可能な場合、この画面にパッチがリストされます。
DBシステムは、19.23から19.26または23.7.0.25.01にバージョンアップできそうです。
データベースは、19.23から19.26または23.5.0.24.07にバージョンアップできそうです。
19cの中でパッチ適用を行うか、23aiにバージョンアップするか、選択できる形ですね。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/5d943c7f-062d-4ac0-b811-7318ad78d251.png)


今回、データベースを19cから23aiにバージョンアップしたいため、
「データベース」欄にある「23.7.0.25.01」の横の点をクリックして、メニューを表示します。
「事前チェック」で事前確認を進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/3ed05abc-1842-4274-83ec-4048ca9c0f45.png)

ダイアログがでるため「事前チェックの実行」をおします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/1b55f14c-dde3-48a9-9846-65409632593a.png)

すると、DBシステム（Grid Infrastructure）のバージョンが19cのため、DBを23aiにできないというメッセージが表示されます。
DBを23aiにするためには、まずDBシステムをバージョンアップする必要がありそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/18155017-721a-4f63-ab61-7dbc51c95e30.png)

前の画面に戻り、DBシステム（Grid Infrastructure）のバージョンアップを進めていきます。
「Grid Infrastructureの更新」欄にある「Oracle DBシステム 23.7.0.25.01」の横の点をクリックして、メニューを表示します。
「事前チェック」で事前確認を進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/0748b29f-c67e-4675-a199-449cdcbaa8c6.png)

確認のダイアログがでるため、そのまま「事前チェックの実行」をおします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/46175bd7-9ede-453c-8a45-76d1cb983f7b.png)


画面の「状態」は「事前チェック中」となり、チェックが終わると「使用可能」に戻り、「最後に成功した事前チェック」に日時が入ります。
DBシステムの事前チェックは1分もかからず完了しました。

＜事前チェック中＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/8b0bcda3-14af-4349-9126-3bc9eaea2d1c.png)
＜チェック終了＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/72140824-d79a-48fc-a144-663bca88a5e9.png)


画面左上の「更新履歴」画面をみると、実行時間などの詳しい情報が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/29b4c9d8-6043-4f71-8146-06c334678a1c.png)


「更新」画面に戻り、事前チェックが完了したものの「適用」を行っていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/1b909e67-36f5-4d0b-8721-e7cb9deaf905.png)


確認ダイアログではDBシステム名を入力し、「DBシステムのアップグレード」をおしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/c9fb6b86-c8ec-431f-b291-ff06f8f91f3e.png)


画面の「状態」が「アップグレード中」となり、アップグレードが進んでいきます。
終わるまで少し待機しましょう。OCPUが4つの環境では20分ほどかかりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/ab4b4a9a-3174-45a9-af8a-fd6fa026f7a3.png)


結果の確認は「更新履歴」画面が分かりやすいと思います。
「状態」が「成功」になっていますね。実行時間の確認もできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/6db0a2c9-0080-4ea6-a73c-e2a44fc6eea7.png)


これでDBシステムが23aiになりましたので、続いてDBも23aiにしていきます。

「データベース」の事前チェックを行っていきます。
23aiの中で一番新しい 23.7.0.25.01 にしてみましょう。
ピリオドで区切られた下二桁はリリースされた年と月です。
この場合は25年1月のバージョンになります。
「事前チェック」をおして、進めていきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/7e53fda4-b425-4d31-b000-b4261d5dccf0.png)

確認ダイアログでは「事前チェックの実行」をおしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/70dec9a9-fccd-4235-aba0-1c46cf78ca2d.png)

データベースのTOP画面では「アップグレード中」と表示されていますが実際は事前チェックをしているだけです。安心してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/56835239-5f0c-47d9-a965-514fcc6c4433.png)

DBシステムの時と同じように「更新履歴」から事前チェックの進捗を確認してみます。
「状態」が「成功」になっていたら終了です。
実行時間も確認できます。この例では6分ほどかかっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/e8aed201-d187-44cb-bb83-744374b0012d.png)

DBシステムのところの「表示」リンクで「更新履歴」をみると結果が確認できます。
更新履歴画面は左上のリンクからとべます。
事前チェックが成功したようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/814b2e64-7ef8-b2d1-be04-6f25930e4425.png)


「更新」をおして、前の画面に戻ります。
事前チェックが完了したものを「アップグレード」していきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/2b24029b-b42f-4fda-8d40-6a518105153e.png)


確認ダイアログでは、一時的にデータベースが停止するという警告が表示されます。
アップグレード時ではデータベースが停止されるため、注意してください。
停止しても問題なければ「アップグレード」を進めていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/eb7e7577-d03f-4236-a617-93d51ffa0bd9.png)


「更新履歴」画面では進捗が確認できます。
アップグレードが終了するまで待機しましょう。
今回の環境では、1時間10分かかりました。けっこう時間がかかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/f25428a6-d571-4354-857a-8e820bc8f60e.png)


「状態」が「成功」になったら完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/17a36ad3-f7d4-42e3-aae0-4b8c5846cbba.png)


「更新」画面に戻ると、アップグレード可能なリストがなくなりました。
最新バージョンになったことがわかりますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/053cd875-aa6e-44fb-9338-0e6d959ec758.png)


# その後の確認

BaseDBにTeraTermで接続して、SQL*Plus等確認してみました。
もとのもの(19c)はそのままで、別のディレクトリに23aiをいれるアウトプレースアップグレードのようです。
SSHで接続していくつか確認していきましょう。

SQL*Plusを使用すると、23aiになっていることがわかります。接続先もしっかり23aiですね。
```
[oracle@dbu ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Sun Feb 23 07:58:49 2025
Version 23.7.0.25.01

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


Connected to:
Oracle Database 23ai Standard Edition 2 Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.7.0.25.01

SQL>
```

インストールディレクトリを確認すると、両方のバージョンがあります。
アウトプレースアップグレードで、23aiがインストールされたことが分かります。
```
★インストールディレクトリを確認
[oracle@dbu product]$ cd
/u01/app/oracle/product
[oracle@dbu product]$ ls
19.0.0.0  23.0.0.0
```



環境変数ORACLE_HOMEは新しい方に変わっています。
```
[oracle@dbu dbs]$ cd $ORACLE_HOME
/u01/app/oracle/product/23.0.0.0/dbhome_2
```


アウトプレースアップグレードということで、tnsnames.oraなど関連ファイルがどうなるのか気になりました。
新しいディレクトリにインストールされたため、ファイルは引き継がれないかと思いましたが、tnsnames.oraはコピーされているようです。
ファイルの最初に19cの時のコメントが残っていますが、ファイルは23aiのディレクトリにコピーされたものです。
```
[oracle@dbu dbhome_2]$ cd /u01/app/oracle/product/23.0.0.0/dbhome_2/network/admin/
[oracle@dbu admin]$ ls -la
total 24
drwxr-xr-x  3 oracle oinstall 4096 Feb 23 00:59 .
drwxr-xr-x 11 oracle oinstall 4096 Jan 16 15:57 ..
drwxr-xr-x  2 oracle oinstall 4096 Jan 16 15:56 samples
-rw-r--r--  1 oracle oinstall 1866 May 19  2021 shrept.lst
-rw-r--r--  1 oracle oinstall  670 Feb 22 14:33 sqlnet.ora
-rw-r-----  1 oracle oinstall  670 Feb 22 22:28 tnsnames.ora
[oracle@dbu admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DBU_PW6_NRT =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbu)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBU******.oraclevcn.com)
    )
  )

LISTENER_DBU =
  (ADDRESS = (PROTOCOL = TCP)(HOST = dbu)(PORT = 1521))


DBU_PW6_NRT2 =　★19c環境にこれを追記してあったが、23ai環境にも定義された
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbu)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBU******.oraclevcn.com)
    )
  )
```


これでバージョンアップは終了です。
かなり簡単に行えました。
オンプレと比べてクラウド環境での簡単さはすごいですね。