- 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のときは、ダウンロードしたファイルに差し替えるか、文字列置換したほうがよいだろう。
- 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ファイルを配置する
- 次のコマンドを実行して、何も表示されないときは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-versionlock
やman 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