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

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

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

# バージョンアップ手順

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

データベースは下部の「データベースのバージョン」のところに表示されています。

今回12cを選択して作成したBaseDBですが、GridInfrastructureは19cになっていました。

バージョンアップやパッチ適用は、DBシステムの方の「表示」リンクから進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/84a80c08-5275-c454-42fc-46fee12e6830.png)


バージョンアップ・パッチ適用が可能な場合、この画面にパッチがリストされます。
DBシステムは、19.20から19.21にパッチ適用できそうです。
データベースは、12.2.0.1.230718から、12.2.0.1.231017への
パッチ適用か、19.18以降へのメジャーバージョンアップができそうです。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/a7e258b3-a4a5-6874-087c-07a9b5fe5b70.png)

今回、12.2.0.1.230718から19.20にバージョンアップしたいため、
パッチの横にある点をクリックして、メニューを表示します。
「事前チェック」で事前確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/789943c3-82ba-e2ab-bc57-d02f5c3a6360.png)

ダイアログがでるため「事前チェックの実行」をおします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/3ad05ba6-24ad-fc17-e457-5ae4e471c0e3.png)

画面は「アップグレード中」となりますが、実際にはアップグレードしているわけではなく
事前のチェック処理を行っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/35ebc3af-5e1d-862e-d965-de49590ea0a1.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/a1d90730-e738-d976-a918-2755ededce6a.png)

DBシステム（GridInfrastructure）にパッチを適用できることが表示されましたが
今回はDBのみメジャーバージョンするため、そのまま「アップグレード」ボタンをおします。
通常はDBシステムのバージョンアップ・パッチ適用から実施することをおすすめします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/16507ca4-dce7-cd16-e2ea-b470853f3d94.png)

アップグレード中になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/05de606b-6e62-0c6b-f9d1-22fd62792d44.png)

「更新履歴」タブでも確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/d43a6f97-dbb4-a060-1ac2-b6b71e0551a5.png)

2時間程度で完了しました。
BaseDBの場合、実行時間はOCPU数で結構かわります。
これは1OCPUの場合です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/84a1583e-0217-c4a3-bd40-8a3ad756a3f3.png)

# その後の確認

BaseDBにTeraTermで接続して、SQL*Plusで確認してみました。
接続先DBはたしかに19cになりましたが、クライアント(SQL*Plus)は12cが使われているようです。
BaseDBのバージョンはもとのもの(12c)はそのままで、別のディレクトリに19cをいれるアウトプレースアップグレードのようです。



```
[oracle@db12c ~]$ sqlplus / as sysdba

★SQL*Plusは12c
SQL*Plus: Release 12.2.0.1.0 Production on Mon Nov 27 14:10:12 2023

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

★接続先DBは19c
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

SQL> exit
```

ORACLE_HOMEを確認すると、両方のバージョンがあります。
環境変数(PATH)をみると、12cのパスが先にありました。
これは12cのものは削除した方が良いですね。
```

[oracle@db12c product]$ ls -la /u01/app/oracle/product/
total 16
drwxr-xr-x 4 root   root     4096 Nov 27 05:36 .
drwxr-xr-x 8 oracle oinstall 4096 Nov 27 06:13 ..
drwxr-xr-x 3 root   root     4096 Nov 27 03:52 12.2.0.1
drwxr-xr-x 4 root   root     4096 Nov 27 06:10 19.0.0.0
[oracle@db12c product]$

★環境変数(PATH)を確認
[oracle@db12c ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/u01/app/oracle/product/12.2.0.1/dbhome_1/bin:/u01/app/oracle/product/19.0.0.0/dbhome_2/bin:/home/oracle/.local/bin:/home/oracle/bin
[oracle@db12c ~]$

★環境変数PATHの設定先（.bashrc）
[oracle@db12c ~]$ cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
PATH=$PATH:/u01/app/oracle/product/12.2.0.1/dbhome_1/bin; export PATH
## WARNING!! Modifying this file can cause failures in API/CLI provided by Cloud Tooling!!
ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_2; export ORACLE_HOME
PATH=$PATH:/u01/app/oracle/product/19.0.0.0/dbhome_2/bin; export PATH
LD_LIBRARY_PATH=/u01/app/oracle/product/19.0.0.0/dbhome_2/lib; export LD_LIBRARY_PATH
ORACLE_UNQNAME=db12c_twf_nrt;export ORACLE_UNQNAME
ORACLE_SID=db12c; export ORACLE_SID
[oracle@db12c ~]$
```

これでバージョンアップは終了です。
かなり簡単に行えました。

事後対応として、オンプレのアウトプレースと同じような対応（ サーバ上のtnsnames.ora 修正など）は別途行いましょう