10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Oracle Cloud Infrastructure DatabaseでOSをアップデートする

Last updated at Posted at 2019-05-10
  • 2019/10/16 Oracle Linux 7対応の記述を増強。すべてのDBバージョンで新規作成はOracle Linux 7に統一
  • 2019/07/23 Oracle Database 19c(Oracle Linux 7)対応
  • 2019/05/31 東京リージョン対応

1. はじめに

Oracle Cloud Infrastructure Database(以降DBaaS)は、DBバージョンやインスタンス作成時期によって、デフォルトではyumリポジトリを利用できないことがある。

デフォルトで利用できないときは、マニュアルに記載の手順に従って設定する必要がある。

またデフォルトで使用できるときでも、DBaaS固有のYumアップデートの作法を理解することが好ましい。

本エントリでは、手順を説明すると共に、さらに掘り下げて解説する。

マニュアルの該当箇所
Updating a DB System - OS Updates
DBシステムの更新 - OSアップデート

1-1. TL;DR

  • ~~OCIのDBaaSは、デフォルト状態ではOSをアップデートできない。~~少なくともOracle Linux 7はデフォルトで利用できるようになった
  • マニュアルに設定方法の記述はあるけれど表面的なので、内部の仕組みを掘り下げる

1-2. 前提条件

  • Oracle Cloud Infrastructure Database(Oracle Linux 6.x, Oracle Linux 7.x)
  • DBaaSインスタンスがプライベートサブネットにあるときは、Service Gatewayが構成されているか、NAT Gateway経由でInternetにアクセスできること
  • DBaaSインスタンスがパブリックサブネットにあるときは、Service GatewayもしくはInternet Gatewayが構成されていること

2. yumリポジトリを利用できるように構成する

基本的にはマニュアルの手順に従って実施すること。ただし大きく違っている箇所があるときは、Oracle Cloudがアップデートされ、それに伴いマニュアルが更新されたと考えてほしい。

2-1. 現在のリポジトリを確認する

デフォルトのリポジトリ情報を確認する。repoファイルがないので有効になっているリポジトリが無い。

Oracle Linux 6

# yum repolist enabled
Loaded plugins: kernel-update-handler, security, ulninfo
repolist: 0

Oracle Linux 7

# yum repolist enabled
Loaded plugins: kernel-update-handler, ulninfo, versionlock
Excluding 240 updates due to versionlock (use "yum versionlock status" to show them)
repo id           repo name                                            status
ol7_UEKR4/x86_64  Latest Unbreakable Enterprise Kernel Release 4 for O     103+9
ol7_latest/x86_64 Oracle Linux 7Server Latest (x86_64)                 13207+733
repolist: 13310

2-2. Yum実行に必要なファイルを取得する

Yum実行に必要なrepoファイルversionlockファイルをObject Storageから取得する。

Oracle Linux 7では、デフォルトでYumが使えるように設定されている。そのためrepoファイルversionlockファイルを取得しなくてもYumを利用できる。

ただし、versionlockファイルは定期的に更新されるようだ。そのため再ダウンロードを推奨する。

2-2-1. Linuxのバージョンを確認する

Oracle Linux 6とOracle Linux 7では手順が異なる。そのため、使用しているバージョンを確認する。

$ cat /etc/oracle-release
Oracle Linux Server release 7.5

Oracle Linux 7だけの確認事項

以下のカーネルバージョンを使用しているときは/etc/fstabも修正する必要がある。詳しい手順はマニュアルの「To update an OL7 OS on a DB system host」を参照すること。

$ uname -r
4.1.12-124.27.1.el7uek.x86_64

2-2-2. 現在のリージョンを確認する

ファイルの取得先を確認するために、現在のリージョンを確認する。東京リージョンではap-tokyo-1、Phoenixではphxと表示される。

# curl -s http://169.254.169.254/opc/v1/instance/ |grep region
  "region" : "ap-tokyo-1",

PhoenixのURIは、phxではなくus-phoenix-1であることに注意する。

ヒント
Phoenixのように「指定するリージョン名」と「curlの結果」に違いがあると戸惑う。Object StorageのRESTエンドポイントは、以下のマニュアルで確認できるので、うまくいかないときは確認すること。

API Reference and Endpoints
上記ページで[Object Storage and Archive Storage]-[Swift API (for use with Oracle RMAN)]を展開

2-2-3. repoファイルを取得する

URLの一部を自身のリージョンに変更してrepoファイルを取得する。

Oracle Linux 6(東京リージョン)

# wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/oci_dbaas_ol6repo -O /tmp/oci_dbaas_ol6repo

Oracle Linux 7(東京リージョン)

# wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/oci_dbaas_ol7repo -O /tmp/oci_dbaas_ol7repo

2-2-4. versionlockファイルを取得する

同様の手順でversionlockファイルをダウンロードする。versionlockの仕組みはあとで使用する。

Oracle Linux 6(東京リージョン)

# wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/versionlock_ol6.list -O /tmp/versionlock.list.ol6

Oracle Linux 7(東京リージョン)

# wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/versionlock_ol7.list -O /tmp/versionlock.list

2-3. ダウンロードしたファイルのdiffを確認する

この作業は省略してよいが、参考までにデフォルトでインストールされているファイルと、ダウンロードしたファイルを比較してみよう。なお本文ではOracle Linux 7を使用している。

2-3-1. repoファイルを比較する

diff -uNr /etc/yum.repos.d/public-yum-ol7.repo /tmp/oci_dbaas_ol7repo

今回実行したときは、すべてdiffになった。異なる点は、参照しているYumリポジトリのサーバーの違いである。

★デフォルトのファイル
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/latest/$basearch/
★新しくダウンロードしたファイル
baseurl=http://yum-nrt.oracle.com/repo/OracleLinux/OL7/latest/$basearch/

2-3-2. versionlockファイルを比較する

diffを取ると、ダウンロードしたほうが新しい内容になっている。

diff -uNr /etc/yum/pluginconf.d/versionlock.list /tmp/versionlock.list
一部を抜粋
-0:kernel-uek-4.1.12-124.27.1.el7uek.*
+0:kernel-uek-4.1.12-124.29.3.1.el7uek.* ★こちらの方がバージョンが新しい

また作成時期の違うOracle Database 19c(Oracle Linux 7)同士を比較すると違う結果になった。このことから次のことがわかる。

  • repoファイルやversionlockファイルは定期的に更新される
  • Yumを実行するときは、これらのファイルを更新してから実行した方がよい(とくにversionlockファイル)

2-4. ダウンロードしたrepoファイルの中身を確認する

repoファイルを見ると、すべてenabled=1になっている。

# cat /tmp/oci_dbaas_ol7repo
--- ここから下がファイルの中身 ---
[ol7_UEKR4]
name=Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux $releasever ($basearch)
baseurl=http://yum-nrt.oracle.com/repo/OracleLinux/OL7/UEKR4/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1★

[ol7_UEKR4_archive]
name=Unbreakable Enterprise Kernel Release 4 for Oracle Linux $releasever ($basearch) - Archive
baseurl=http://yum-nrt.oracle.com/repo/OracleLinux/OL7/UEKR4/archive/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1★

[ol7_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://yum-nrt.oracle.com/repo/OracleLinux/OL7/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1★

もしenabled=0になっていたときは、次のコマンドで一括変更できる。

yum-config-manager --enable "*"

2-4-1. repoファイルに書かれているホスト

repoファイル(/etc/yum.repos.d/*.repo)でYumリポジトリのホスト名を確認すると、サービスやリージョンによって異なることがわかる。リージョンごとのリポジトリ参照が推奨だがyum.oracle.comを参照していることもある。そのときは修正しよう。

サービス ホスト名
Compute(Tokyo) yum-tokyo.oracle.com
DBaaS(Tokyo) ダウンロード yum-nrt.oracle.com
DBaaS(Tokyo) Oracle Linux 7デフォルト yum.oracle.com
Compute(Phoenix) yum-phx.oracle.com
DBaaS(Phoenix) ダウンロード yum-phx.oracle.com
DBaaS(Phoenix) Oracle Linux 7デフォルト yum.oracle.com

ヒント
ComputeにおけるYumリポジトリのホスト名はyum$ociregion.oracle.comのように変数で定義されている。変数の実体は/etc/yum/vars/ociregionに定義してあり、各リージョンのYumリポジトリを参照している。

2-4-2. yum.oracle.comとyum-nrt.oracle.comの違い

nslookupで調べると、yum-tokyoとyum-nrtは同じサーバーなのに対し、yum.oracle.comとは異なるサーバーである。

また前者は、OCI以外からアクセスできないようにホワイトリスト制御しているのに対し、yum.oracle.comはどこからでもアクセスできる。

# nslookup yum-nrt.oracle.com ★1
Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
yum-nrt.oracle.com      canonical name = yum-ap-tokyo-1.oracle.com.
Name:   yum-ap-tokyo-1.oracle.com
Address: 192.29.36.128

# nslookup yum-tokyo.oracle.com ★2は1と同じホストを指している
Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
yum-tokyo.oracle.com    canonical name = yum-ap-tokyo-1.oracle.com.
Name:   yum-ap-tokyo-1.oracle.com
Address: 192.29.36.128 

# nslookup yum.oracle.com ★こちらはまったく違うサーバ。AkamaiのCDNを利用している
Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
yum.oracle.com  canonical name = public-yum.oracle.com.edgekey.net.
public-yum.oracle.com.edgekey.net       canonical name = e10877.g.akamaiedge.net.
Name:   e10877.g.akamaiedge.net
Address: 104.85.241.187

下記のKnown Issuesでも触れているように、yum.oracle.comはOCIのService Gateway経由ではアクセスできない。Internet GatewayもしくはNAT Gatewayでアクセスする必要がある。

逆にyum-nrt.oracle.comやyum-phx.oracle.comなどのリージョンごとのリポジトリは、Service Gateway経由でもアクセスできる。

2-5. repoファイルを配置する

repoファイルを/etc/yum.repos.d/にコピーして利用できるようにする。Oracle Linux 7は、デフォルトで/etc/yum.repos.d/public-yum-ol7.repoが配置されている。

Oracle Linux 6

# cp /tmp/oci_dbaas_ol6repo /etc/yum.repos.d/ol6.repo

Oracle Linux 7

Oracle Linux 7では、デフォルトでrepoファイルが存在する。このまま利用できるが、参照先がyum.oracle.comのときは、ダウンロードしたファイルに差し替えるか、文字列置換したほうがよいだろう。

  1. repoファイルがあるか確認する。
# ls -l /etc/yum.repos.d/*repo
-rw-r--r-- 1 root root 10237  4月 10  2018 /etc/yum.repos.d/public-yum-ol7.repo

2.repoファイルをバックアップする。

# mv /etc/yum.repos.d/public-yum-ol7.repo  /etc/yum.repos.d/public-yum-ol7.repo.org

3.repoファイルをコピーする。

# cp /tmp/oci_dbaas_ol7repo /etc/yum.repos.d/ol7.repo

ヒント:sedで参照先サーバーを変更する

ダウンロードしたファイルを使う場合には不要だが、以下のsedコマンドでリージョンごとのYumリポジトリを参照するように変更できる。

sed -i -e "s/yum.oracle/yum-tokyo.oracle/" /etc/yum.repos.d/public-yum-ol7.repo

2-6. versionlockファイルを配置する

  1. 次のコマンドを実行して、何も表示されないときはversionlockをインストールする。
# インストールされているか確認する。表示されたときはインストールされている。
rpm -q yum-plugin-versionlock

# 何も表示されないときだけインストールする。
yum install yum-plugin-versionlock -y

2.versionlockファイルをバックアップし、ダウンロードしたものと置換する。

cp /etc/yum/pluginconf.d/versionlock.list /etc/yum/pluginconf.d/versionlock.list-`date +%Y%m%d`
cp /tmp/versionlock.list /etc/yum/pluginconf.d/versionlock.list

2-7. Yumリポジトリにアクセスできることを確認する

リポジトリに正常にアクセスできることを確認する。初回はリポジトリ情報を取得するので少し時間がかかる。もしenabled=1になっていて表示できないときは、ネットワークの設定に問題がある。

# yum repolist enabled
Loaded plugins: ulninfo, versionlock
Excluding 302 updates due to versionlock (use "yum versionlock status" to show them)
repo id           repo name                                            status
ol7_UEKR4/x86_64  Latest Unbreakable Enterprise Kernel Release 4 for O     103+9
ol7_latest/x86_64 Oracle Linux 7Server Latest (x86_64)                 15445+851
repolist: 15548

ここまで終わればyum updateを実行して問題ない。次のセクションではversionlockファイルを調べてみる。

3. Hacking versionlock

Yumの設定が終わり、一通り使えるようになったので内部動作を調べてみる。

3-1. versionlockファイルを調べる

versionlockはアップデートするパッケージのバージョンを制限する機能である。詳細は以下のページや man yum-versionlockman yum-versionlock.confを見るとして、ここではダウンロードしたファイルの中身を確認する。

How to restrict yum to install or upgrade a package to a fixed specific package version?

529行もあるので重要な部分を確認する。

# wc -l /etc/yum/pluginconf.d/versionlock.list
529 /etc/yum/pluginconf.d/versionlock.list

カーネル(kernel-uek)のエントリを確認する。

# grep -3 kernel-uek /etc/yum/pluginconf.d/versionlock.list
0:zookeeper-3.4.9-1.*
0:yum-plugin-security-1.1.30-17.0.1.el6_5.*
0:linux-firmware-20171128-56.git17e62881.0.2.el6.*
0:kernel-uek-firmware-4.1.12-124.24.5.el6uek.*
0:kernel-uek-4.1.12-124.24.5.el6uek.*
0:initscripts-9.03.53-1.0.3.el6_8.2.*
0:dcs-cli-18.3.3.0.0_LINUX.X64_190311-1.*
0:jre1.8-1.8.0_201-fcs.*

このコマンドでも同じものを表示できる。

# yum versionlock list | grep -3 kernel-uek

versionlockファイルの書式は以下のようになっている。EPOCHはRPMの新旧バージョンを比較する番号で、デフォルトは0である。0のときはバージョン番号やリリース番号でパッケージを比較する。しかしEPOCHが指定されているときにはEPOCHを使って比較する。

EPOCH:NAME-VERSION-RELEASE.ARCH

カーネル行を見てみよう。これはUEKの4.1.12-124.24.5まで利用できることを表す。

0:kernel-uek-4.1.12-124.24.5.el6uek.*

3-2. versionlock使用時のYumの動作を調べる

設定が終わり、一通りを理解できたところで、versionlockがどのように作用するのか確認する。

現在のカーネルを確認すると4.1.12-124.20.3になっている。したがってversionlockファイルに書かれている4.1.12-124.24.5までアップデートできる。

# uname -r
4.1.12-124.20.3.el6uek.x86_64

インストールされているカーネルを調べると、Computeと異なりUEKだけである。

# rpm -qa | grep kernel | sort
dracut-kernel-004-411.0.1.el6.noarch
kernel-headers-2.6.32-754.3.5.el6.x86_64
kernel-transition-2.6.32-0.0.0.3.el6.x86_64
kernel-uek-4.1.12-124.20.3.el6uek.x86_64
kernel-uek-firmware-4.1.12-124.20.3.el6uek.noarch

アップデート可能なパッケージを確認するとkernel-uekも含まれ、さらにバージョンもversionlockファイルに書かれた4.1.12-124.24.5になっている。

# yum check-update
Loaded plugins: kernel-update-handler, security, ulninfo, versionlock

iscsi-initiator-utils.x86_64      6.2.0.873-27.0.7.el6_9       ol6_latest
kernel-uek.x86_64                 4.1.12-124.24.5.el6uek       ol6_UEKR4_archive★この行
kernel-uek-firmware.noarch        4.1.12-124.24.5.el6uek       ol6_UEKR4_archive
ntp.x86_64                        4.2.6p5-15.0.1.el6_10        ol6_latest
ntpdate.x86_64                    4.2.6p5-15.0.1.el6_10        ol6_latest

リボジトリの最新は、どのバージョンまでリリースされているか確認する。ところがlist availableではversionlockの影響を受けてインストールできないものは表示されない。

# yum list available kernel-uek-4.1.12
Loaded plugins: kernel-update-handler, security, ulninfo, versionlock
Available Packages
kernel-uek.x86_64            4.1.12-124.24.5.el6uek            ol6_UEKR4_archive

yum updateinfoを使うと、リポジトリ上の最新は4.1.12-124.26.10であることがわかる。つまり最新は4.1.12-124.26.10であるが、PaaSとして検証済みなのは4.1.12-124.24.5までと推測できる。

# yum updateinfo list available | grep kernel-uek-4.1.12
ELSA-2018-4261 Important/Sec. kernel-uek-4.1.12-124.20.7.el6uek.x86_64
ELSA-2018-4265 Important/Sec. kernel-uek-4.1.12-124.21.1.el6uek.x86_64
ELBA-2018-4278 bugfix         kernel-uek-4.1.12-124.22.1.el6uek.x86_64
ELBA-2018-4281 bugfix         kernel-uek-4.1.12-124.22.2.el6uek.x86_64
ELSA-2018-4288 Important/Sec. kernel-uek-4.1.12-124.22.4.el6uek.x86_64
ELSA-2018-4299 Important/Sec. kernel-uek-4.1.12-124.23.1.el6uek.x86_64
ELSA-2018-4307 Important/Sec. kernel-uek-4.1.12-124.23.2.el6uek.x86_64
ELBA-2019-4314 bugfix         kernel-uek-4.1.12-124.23.4.el6uek.x86_64
ELSA-2019-4315 Important/Sec. kernel-uek-4.1.12-124.24.1.el6uek.x86_64
ELSA-2019-4510 Important/Sec. kernel-uek-4.1.12-124.24.3.el6uek.x86_64
ELSA-2019-4528 Important/Sec. kernel-uek-4.1.12-124.24.5.el6uek.x86_64
ELSA-2019-4531 Important/Sec. kernel-uek-4.1.12-124.25.1.el6uek.x86_64
ELSA-2019-4575 Important/Sec. kernel-uek-4.1.12-124.26.1.el6uek.x86_64
ELBA-2019-4587 bugfix         kernel-uek-4.1.12-124.26.3.el6uek.x86_64
ELSA-2019-4594 Important/Sec. kernel-uek-4.1.12-124.26.5.el6uek.x86_64
ELSA-2019-4596 Important/Sec. kernel-uek-4.1.12-124.26.7.el6uek.x86_64
ELSA-2019-4619 Important/Sec. kernel-uek-4.1.12-124.26.10.el6uek.x86_64★これ

versionlockファイルは定期的に更新されるようだ。なるべく新しいパッケージを使いたいならば、yum updateの際にversionlockファイルも新しく取得した方がよいだろう。

4. パッケージをアップデートする

いよいよ実際にパッケージをアップデートする。どの方法がよいのか考えてみたい。

4-1. パッケージのアップデート方法

パッケージをアップデートする方法は、以下の2つの選択肢がある。できるだけ安定度を求めるならば、最小限の後者が推奨である。ただし安定を求めて、なるべく変更を少なくしたほうがいいかというと、ときには例外があると思うのだが。

  • アップデート可能なパッケージをアップデートする
# yum update
  • 重要度が高いセキュリティフィックスが適用されているパッケージをアップデートする
# yum update-minimal --security 

先ほどcheck-updateで5つアップデートできることがわかったので、最少のパッケージだけをインストールしてみよう。するとntp関連だけがアップデートされることがわかる。

# yum update-minimal --security
Loaded plugins: kernel-update-handler, security, ulninfo, versionlock
No package matched to upgrade: kernel-uek-0:4.1.12-124.26.10.el6uek
No package matched to upgrade: kernel-uek-firmware-0:4.1.12-124.26.10.el6uek
Resolving Dependencies
--> Running transaction check
---> Package ntp.x86_64 0:4.2.6p5-12.0.1.el6_9.2 will be updated
---> Package ntp.x86_64 0:4.2.6p5-15.0.1.el6_10 will be an update
---> Package ntpdate.x86_64 0:4.2.6p5-12.0.1.el6_9.2 will be updated
---> Package ntpdate.x86_64 0:4.2.6p5-15.0.1.el6_10 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package       Arch         Version                      Repository        Size
================================================================================
Updating:
 ntp           x86_64       4.2.6p5-15.0.1.el6_10        ol6_latest       600 k
 ntpdate       x86_64       4.2.6p5-15.0.1.el6_10        ol6_latest        78 k

Transaction Summary
================================================================================
Upgrade       2 Package(s)

Total download size: 678 k

とはいえ2019年5月ころの変更情報でiscsi関連のパッケージを更新せよ的なリリースがあったような気がする。となるとiscsi-initiator-utilsも更新した方がいいことになる。このあたりは個別で調べろと言うことか。

と思い、--securityを付けないで実行すると、見事iscsi-initiator-utilsがインストール候補になった。

# yum update-minimal
Loaded plugins: kernel-update-handler, security, ulninfo, versionlock
No package matched to upgrade: kernel-uek-0:4.1.12-124.20.7.el6uek
No package matched to upgrade: kernel-uek-firmware-0:4.1.12-124.20.7.el6uek
Resolving Dependencies
--> Running transaction check
---> Package iscsi-initiator-utils.x86_64 0:6.2.0.873-27.0.3.el6_9 will be updated
---> Package iscsi-initiator-utils.x86_64 0:6.2.0.873-27.0.7.el6_9 will be an update
---> Package ntp.x86_64 0:4.2.6p5-12.0.1.el6_9.2 will be updated
---> Package ntp.x86_64 0:4.2.6p5-15.0.1.el6_10 will be an update
---> Package ntpdate.x86_64 0:4.2.6p5-12.0.1.el6_9.2 will be updated
---> Package ntpdate.x86_64 0:4.2.6p5-15.0.1.el6_10 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                 Arch     Version                    Repository    Size
================================================================================
Updating:
 iscsi-initiator-utils   x86_64   6.2.0.873-27.0.7.el6_9     ol6_latest   739 k
 ntp                     x86_64   4.2.6p5-15.0.1.el6_10      ol6_latest   600 k
 ntpdate                 x86_64   4.2.6p5-15.0.1.el6_10      ol6_latest    78 k

Transaction Summary
================================================================================
Upgrade       3 Package(s)
  • 通常はyum updateを実行する
  • 変更差分を少なくしたいときはyum update-minimalを実行する

4-2. ローリングアップデート

アップデートしたカーネルを有効にするにはOSを再起動する必要がある。2ノードRAC環境はローリングアップデートに対応しているので、システムを停止しないでカーネルをアップデートできる。

ただしOSを再起動する前に、該当ノードのClusterwareを完全に停止する必要がある。

5. その他

5-1. Ksplice対応は?

KspliceとはOracle Linuxが提供するライブ・パッチング・システムで、RHELのkpatchに類似する機能である。Kspliceを使用すると、再起動すること無くカーネルアップデートなどを実現できる。

  • オンプレミスの場合、Oracle Linux Premier Supportを契約し、必要な設定をすれば利用できる
  • Oracle Cloud Infrastructure Computeの場合、Oracle Linuxを選択したときに限り、デフォルトでKspliceを利用できる
  • Oracle Cloud Infrastrucutre Databaseの場合、作成時期によってはKspliceを利用できる

Kspliceを利用できるかは以下のコマンドで確認できる。次のようにaccesskeyが表示されればKspliceを利用できる。

# grep accesskey /etc/uptrack/uptrack.conf
accesskey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(実際には英数文字列)

5-2. PaaSはRHCK非対応

PaaSではUEKからRHCKへの変更をサポートしていない。そのため勝手にRHCKに変更しないこと。OCI-Cのときはexclude設定が入ってたので変更できなかったが、今回さわったイメージでは強引にインストールできてしまった。

6. まとめ

基本

  • DBaaSのOSをアップデートするには、原則として事前の設定作業が必要
  • 同一DBバージョンでも、インスタンス作成時期によってOracle Linux 6とOracle Linux 7のときがある。2019/10現在、すべての新規作成インスタンスはOracle Linux 7に統一
  • versionlockによって、インストール/アップデートできるパッケージのバージョンを制限している
  • アップデートしたカーネルを有効にするには、OSを再起動する必要がある(Ksplice非使用時)

応用

  • versionlockファイルは定期的に更新されるので、パッケージアップデートの際には、先に更新することを検討する
  • DBaaSはUEKカーネルだけをサポートしているのでRHCKに変更しない
  • yum update-minimalを指定すると、アップデート差分を最少にできる
  • RAC環境はローリングアップデートに対応している
  • Kspliceはインスタンスの作成時期・種類によって使用できる

9. コピペ用まとめバージョン

東京リージョン用なので、他のリージョンでは適宜修正すること。

Oracle Linux 6

# repoファイルダウンロード
wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/oci_dbaas_ol6repo -O /tmp/oci_dbaas_ol6repo

# verionlockファイルダウンロード
wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/versionlock.list -O /tmp/versionlock.list

# repoファイルをコピー
cp /tmp/oci_dbaas_ol6repo /etc/yum.repos.d/ol6.repo

# Yumリポジトリの動作確認
yum repolist enabled

# versionlockをインストール
yum install yum-plugin-versionlock -y

# versionlockの設定ファイルを更新
cp /etc/yum/pluginconf.d/versionlock.list /etc/yum/pluginconf.d/versionlock.list-`date +%Y%m%d`
cp /tmp/versionlock.list /etc/yum/pluginconf.d/versionlock.list

Oracle Linux 7

# repoファイルダウンロード
wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/oci_dbaas_ol7repo -O /tmp/oci_dbaas_ol7repo

# verionlockファイルダウンロード
wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/versionlock_ol7.list -O /tmp/versionlock.list

# repoファイルをコピー
mv /etc/yum.repos.d/public-yum-ol7.repo  /etc/yum.repos.d/public-yum-ol7.repo.org
cp /tmp/oci_dbaas_ol7repo /etc/yum.repos.d/ol7.repo

# Yumリポジトリの動作確認
yum repolist enabled

# versionlockの設定ファイルを更新
cp /etc/yum/pluginconf.d/versionlock.list /etc/yum/pluginconf.d/versionlock.list-`date +%Y%m%d`
cp /tmp/versionlock.list /etc/yum/pluginconf.d/versionlock.list
10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?