BaseDBを19cから23aiにアップグレードしてみましたの画像

はじめに

こんにちは。Oracle Cloud Infrastructure検証チームです。
2025年1月度のサービス・アップデートにより、Oracle Base Database Service (BaseDB) において、Oracle DatabaseおよびGrid Infrastructureのバージョンを23aiにアップグレード (メジャーバージョンアップ) できるようになりました。
そこで、今回はBaseDBで、19cから23aiへのアップグレードを検証してみました。

なお、本記事は2部構成となっており、こちらは前編としてアップグレードの概要説明~Grid Infrastructureアップグレードについて記載しています。

23aiに関する過去記事はこちら

 

Oracle Database 23aiへのアップグレードについて

前提条件

Oracle Database 23aiへのアップグレードでは、下記のソフトウェア・バージョン要件があります。

  • Oracle Database 23aiに直接アップグレード可能なバージョンは、19cまたは21cのみ。
    それ以前のバージョンであれば、一度19cにアップグレードしておく必要があります。(※1)
  • Oracle Database 23aiを利用するには、Grid Infrastructure 23aiが必要となります。
  • OSはOracle Linux 8を使用していること。

また、上記は23ai特有の要件ですが、DBシステムのOracle Databaseアップグレードとして下記も前提条件となります。

  • データベースがARCHIVELOGモードであること。
  • データベースのフラッシュバック機能が有効であること。

※1 オンプレミス環境(11g)からOracle Cloud Infrastructure(19c)への移行検証記事も是非ご覧くださいませ。

注意事項

  • アップグレード実行前に事前チェックを実施し、問題なくアップグレード可能かどうか確認しましょう。[Oracle推奨]
  • アップグレードより前に、データベースのバックアップを作成し、新規DBシステムで新バージョンをテストしておきましょう。[Oracle推奨]
  • Oracle Database・Grid Infrastructureのアップグレード中は、ダウンタイムが発生します。(RAC構成も含む)
  • 自動バックアップ中は、アップグレード操作を実行できません。
  • アップグレードに失敗した場合、Enterprise Edition以上であればロールバックが可能です。
    ロールバックを実行すると、データベースはアップグレード前の状態にリセットされ、アップグレード中およびアップグレード後に加えられたデータベースへの変更はすべて失われます。
  • アップグレード後は、アップグレード前に作成した自動バックアップを使用して、データベースを以前の状態に戻すことができなくなります
    バックアップなしで運用するリスクを回避するため、アップグレード完了後には一度、自動バックアップまたは手動でのバックアップ作成をおすすめします。
  • dbcliユーティリティを使用してアップグレードを実行することは、基本的にはできません。
  • Data Guard構成の場合、先にスタンバイ環境からアップグレードする必要があります。

検証

検証環境作成・構成確認

まずは検証用BaseDBを用意し、設定値を確認します。
今回の構成は下記の通りです。

DBシステム
  • ストレージ管理ソフトウェア:Oracle Grid Infrastructure
  • Oracle Databaseソフトウェア・バージョン:Enterprise Edition
    アップグレード失敗時に備えて、ロールバック可能なEEを選択しています。
  • DBシステム・バージョン19.26.0.0.0
    Grid Infrastructureバージョンを指します

DBシステムの画像
データベースを19cで作成したところ、GIも19cとなっていました。

データベース
  • データベースのバージョン19.26.0.0.0
    データベースの画像
その他
  • OS:Oracle Linux 8.8
    [root@test-basedb ~]# cat /etc/oracle-release 
    Oracle Linux Server release 8.8
  • ユーザー環境変数 (.bashrc)
    • grid
      [grid@test-basedb ~]$ cat .bashrc
      # .bashrc
      
      
      # Source global definitions
      if [ -f /etc/bashrc ]; then
      . /etc/bashrc
      fi
      
      
      # User specific environment
      if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
      then
          PATH="$HOME/.local/bin:$HOME/bin:$PATH"
      fi
      export PATH
      
      
      # Uncomment the following line if you don't like systemctl's auto-paging feature:
      # export SYSTEMD_PAGER=
      
      
      # User specific aliases and functions
      ORACLE_HOME=/u01/app/19.0.0.0/grid; export ORACLE_HOME
      PATH=$PATH:/u01/app/19.0.0.0/grid/bin; export PATH 
      LD_LIBRARY_PATH=/u01/app/19.0.0.0/grid/lib; export LD_LIBRARY_PATH 
      ORACLE_SID=+ASM1; export ORACLE_SID 
      ## WARNING!! Modifying this file can cause failures in API/CLI provided by Cloud Tooling!!
    • oracle
      [oracle@test-basedb ~]$ cat .bashrc
      # .bashrc
      
      # Source global definitions
      if [ -f /etc/bashrc ]; then
      . /etc/bashrc
      fi
      
      # User specific environment
      if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
      then
      PATH="$HOME/.local/bin:$HOME/bin:$PATH"
      fi
      export PATH
      
      # Uncomment the following line if you don't like systemctl's auto-paging feature:
      # export SYSTEMD_PAGER=
      
      # User specific aliases and functions
      ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1; export ORACLE_HOME
      PATH=$PATH:/u01/app/oracle/product/19.0.0.0/dbhome_1/bin; export PATH 
      LD_LIBRARY_PATH=/u01/app/oracle/product/19.0.0.0/dbhome_1/lib; export LD_LIBRARY_PATH 
      ORACLE_UNQNAME=CDB_TEST;export ORACLE_UNQNAME
      ORACLE_SID=CDB; export ORACLE_SID 
      ## WARNING!! Modifying this file can cause failures in API/CLI provided by Cloud Tooling!!
  • SQL*Plusバージョン:19.26.0.0.0
    [oracle@test-basedb ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Tue Mar 25 10:44:19 2025
    Version 19.26.0.0.0
    
    Copyright (c) 1982, 2024, Oracle. All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.26.0.0.0
    
    SQL>

Grid Infrastructureアップグレード

Oracle Database 23aiへのアップグレードにはGrid Infrastructure 23aiが必要なため、GIバージョンをアップグレードします。

事前チェック

まずは事前チェックを実施します。
[DBシステムの詳細] ページのバージョン情報「アップグレード使用可能」にバージョン23ai (23.x.x.x.x) が表示されていることを確認し、 [表示] リンクを押下します。

事前チェックの画像

[更新] ページに遷移しました。
使用可能なOS・Grid Infrastructure・Oracle Databaseのパッチおよびアップグレードが表示されています。

Grid Infrastructureの更新」のリスト内に、使用可能なバージョン23aiのGIアップグレードがあることを確認し、右部のミートボールメニューを開いて [事前チェックの実行] を押下します。
今回は、検証時点で最新の23.7.0.25.01を選択しています。

DBシステム更新の画像

[事前チェックの実行] を押下します。

事前チェックの確認の画像

選択したGIアップグレードの状態が「事前チェック中」に変化しました。

Grid Infrastructureの画像

DBシステムの状態が「アップグレード中」となっていますが、実際には事前チェック処理を実行しているだけなので問題ありません。
データベースおよびノードの状態も「更新中」に変化します。

DBシステムの画像

 

2分ほどで事前チェックが完了しました。
先ほどの [更新] ページを確認すると、状態が「使用可能」に戻り、事前チェックの終了時刻が表示されています。

Grid Infrastructureの画像

[更新] ページの左部メニューから [更新履歴] を押下すると、事前チェックの結果を確認できます。

更新履歴の画像

GIアップグレード

問題なくアップグレード可能なことが確認できたため、Grid Infrastructureのアップグレードを実行します。
[更新] ページから、事前チェックを実施したGIアップグレードのミートボールメニューを開いて [適用] を押下します。

Grid Infrastructureの画像

DBシステム名を入力し、 [DBシステムのアップグレード] を押下します。

Grid Infrastructureの画像

選択したGIアップグレードの状態が「アップグレード中」に変化しました。

Grid Infrastructureの画像

再びDBシステムの状態が「アップグレード中」となっています。
データベースおよびノードの状態も「更新中」に変化します。

DBシステムの状態の画像

 

35分ほどでGIアップグレードが完了しました。
[更新] ページを確認すると、「Grid Infrastructureの更新」のリストから、アップグレード後のバージョン以前のアイテムがなくなっています。

Grid Infrastructureの更新の画像

[更新履歴] ページを確認すると、 アップグレードの結果を確認できます。

更新履歴の画像

以上で、Grid Infrastructure 23aiへのアップグレードは完了です。

GIアップグレード後確認
[DBシステムの詳細] ページの「DBシステム・バージョン」(Grid Infrastructureバージョン) が23.7.0.25.01に変化しました。

GIアップグレード後確認の画像

また、gridユーザーの.bashrcに、23aiの環境変数が追加されています。

[grid@test-basedb ~]$ cat .bashrc
# .bashrc


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


# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
then
    PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH


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


# User specific aliases and functions
ORACLE_HOME=/u01/app/19.0.0.0/grid; export ORACLE_HOME
PATH=$PATH:/u01/app/19.0.0.0/grid/bin; export PATH 
LD_LIBRARY_PATH=/u01/app/19.0.0.0/grid/lib; export LD_LIBRARY_PATH 
ORACLE_SID=+ASM1; export ORACLE_SID 
## WARNING!! Modifying this file can cause failures in API/CLI provided by Cloud Tooling!!
ORACLE_HOME=/u01/app/23.0.0.0/grid; export ORACLE_HOME
PATH=$PATH:/u01/app/23.0.0.0/grid/bin; export PATH 
LD_LIBRARY_PATH=/u01/app/23.0.0.0/grid/lib; export LD_LIBRARY_PATH 

envコマンドで表示される環境変数は23aiのものに置き換わっていました。

[grid@test-basedb ~]$ env | grep ORA
ORACLE_SID=+ASM1
ORACLE_HOME=/u01/app/23.0.0.0/grid

[grid@test-basedb ~]$ env | grep PATH
LD_LIBRARY_PATH=/u01/app/23.0.0.0/grid/lib
PATH=/home/grid/.local/bin:/home/grid/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/u01/app/19.0.0.0/grid/bin:/u01/app/23.0.0.0/grid/bin

後編へ

長くなってしまったため、記事を2分割しております。

続きとなるOracle Databaseアップグレードについては、後編をご覧ください。
BaseDBを19cから23aiにアップグレードしてみました (2/2) Oracle Databaseアップグレード

投稿者プロフィール

技術チーム
技術チーム
DBひとりでできるもんを盛り上げるべく、技術チームが立ち上がり早8年。ひとりでできるもんと言いつつ、技術者が読んでプッとなるような、極めてピンポイントでマニアックな技術ネタを執筆しています!
最新技術情報や資格情報をチェックしたいアナタ!毎日遊びに来てください。きっとお役に立てます。