やったこと
Oracle Cloud (BaseDB)が、12cだったので、19cにバージョンアップ。
オンプレ環境ではかなり大変な作業が、数クリックで完了!
前提
2023/11時点になります。
どのバージョンにできるかは時期によって異なると思います。
ただし、おおまかな実行方法はそんなに変わらないでしょう。
バージョンアップ手順
12c環境で作ったBaseDBを確認します。
バージョンは2か所に表示されています。
上部の「DBシステム・バージョン」は Grid Infrastructureのバージョンです。
おもにストレージ管理などに使用されています。
データベースは下部の「データベースのバージョン」のところに表示されています。
今回12cを選択して作成したBaseDBですが、GridInfrastructureは19cになっていました。
バージョンアップやパッチ適用は、DBシステムの方の「表示」リンクから進みます。
バージョンアップ・パッチ適用が可能な場合、この画面にパッチがリストされます。
DBシステムは、19.20から19.21にパッチ適用できそうです。
データベースは、12.2.0.1.230718から、12.2.0.1.231017への
パッチ適用か、19.18以降へのメジャーバージョンアップができそうです。
今回、12.2.0.1.230718から19.20にバージョンアップしたいため、
パッチの横にある点をクリックして、メニューを表示します。
「事前チェック」で事前確認します。
画面は「アップグレード中」となりますが、実際にはアップグレードしているわけではなく
事前のチェック処理を行っています。
DBシステムのところの「表示」リンクで
「更新履歴」をみると結果が確認できます。
更新履歴画面は左上のリンクからとべます。
事前チェックが成功したようです。
左上のリンクから「更新」を選択し
「アップグレード」を選んで実行します。
DBシステム(GridInfrastructure)にパッチを適用できることが表示されましたが
今回はDBのみメジャーバージョンするため、そのまま「アップグレード」ボタンをおします。
通常はDBシステムのバージョンアップ・パッチ適用から実施することをおすすめします。
2時間程度で完了しました。
BaseDBの場合、実行時間はOCPU数で結構かわります。
これは1OCPUの場合です。
その後の確認
BaseDBにTeraTermで接続して、SQLPlusで確認してみました。
接続先DBはたしかに19cになりましたが、クライアント(SQLPlus)は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 修正など)は別途行いましょう