Oracle RAC One NodeはEnterprise Editionでのみ構築が可能なDB構成なのでお金もかかってなかなか触れる機会が無いんじゃないかと思います。
なので今回はRAC One Nodeの機能の一つ、ライブマイグレーションを試してみた際の動きをまとめてみました。
##概要
ライブマイグレーションとは、DBインスタンスの停止なくインスタンスを実行するノードを変更することができます。
簡単な動きを説明すると、以下のような流れになります。
■ライブマイグレーション実行前
node1 インスタンス実行中
node2 インスタンス停止中
↓↓↓
■ライブマイグレーション実行直後
node1 インスタンス実行中
node2 インスタンス実行中
↓↓↓
■ライブマイグレーション完了後
node1 インスタンス停止中
node2 インスタンス実行中
便利な機能ですが注意点が一つあって、SIDが変更されてしまうので、
アプリケーションでSIDを固定して接続を行っている場合は影響が発生するので気をつけてください。
##環境
#####DNSサーバ
OS:Oracle Linux 6.5
SW:dnsmasq 2.48
NW:
eth0 192.168.56.254
ホスト名:dns.oracle12c.jp
#####Oracle DB稼働系
OS:Oracle Linux 6.5
SW:Oracle 12.1.0.2 Enterprise Edition
Grid 12.1.0.2
NW:
eth0 192.168.56.101/24
eth1 192.168.100.101/24
eth2 192.168.200.101/24
ホスト名:olnxdb001.oracle12c.jp
#####Oracle DB待機系
OS:Oracle Linux 6.5
SW:Oracle 12.1.0.2 Enterprise Edition
Grid 12.1.0.2
NW:
eth0 192.168.56.102/24
eth1 192.168.100.102/24
eth2 192.168.200.102/24
ホスト名:olnxdb002.oracle12c.jp
##実行結果
gridユーザでクラスターのリソースを確認する。(稼働系待機系どちらでもOK)
[grid@olnxdb001 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.ASMNET2LSNR_ASM.lsnr
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.DATA.dg
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.FRA.dg
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.LISTENER.lsnr
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.net1.network
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.ons
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE olnxdb002 STABLE
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE olnxdb001 STABLE
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE olnxdb001 STABLE
ora.MGMTLSNR
1 ONLINE ONLINE olnxdb001 169.254.91.197 192.1
68.100.101 192.168.2
00.101,STABLE
ora.asm
1 ONLINE ONLINE olnxdb001 Started,STABLE
2 ONLINE ONLINE olnxdb002 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE olnxdb001 STABLE
ora.mgmtdb
1 ONLINE ONLINE olnxdb001 Open,STABLE
ora.oc4j
1 ONLINE ONLINE olnxdb001 STABLE
ora.olnxdb001.vip
1 ONLINE ONLINE olnxdb001 STABLE
ora.olnxdb002.vip
1 ONLINE ONLINE olnxdb002 STABLE
ora.orcl.db ※olnxdb001でインスタンスが起動しています。
1 ONLINE ONLINE olnxdb001 Open,STABLE
ora.orcl.orcl.oracle12c.jp.svc
1 ONLINE ONLINE olnxdb001 STABLE
ora.scan1.vip
1 ONLINE ONLINE olnxdb002 STABLE
ora.scan2.vip
1 ONLINE ONLINE olnxdb001 STABLE
ora.scan3.vip
1 ONLINE ONLINE olnxdb001 STABLE
--------------------------------------------------------------------------------
[grid@olnxdb001 ~]$
インスタンスの稼働を確認(稼働系待機系どちらでもOK)
[oracle@olnxdb001 ~]$ srvctl status database -db orcl
インスタンスorcl_1はノードolnxdb001で実行中です。
オンライン再配置: INACTIVE
[oracle@olnxdb001 ~]$
じゃあ待機系にライブマイグレーションしてみましょう!!
srvctlコマンドでorclインスタンスをolnxdb002へフェイルオーバーします。
[oracle@olnxdb001 ~]$ srvctl relocate database -db orcl -node olnxdb002
インスタンスが旧待機系で実行されていること。
また、ライブマイグレーションを行うとインスタンス名(SID)が_2に変わることに注意です。
[oracle@olnxdb001 ~]$ srvctl status database -db orcl
インスタンスorcl_2はノードolnxdb002で実行中です。
オンライン再配置: INACTIVE
[oracle@olnxdb001 ~]$
リソース名「ora.orcl.db」がolnxdb002になっています。
[grid@olnxdb001 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.ASMNET2LSNR_ASM.lsnr
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.DATA.dg
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.FRA.dg
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.LISTENER.lsnr
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.net1.network
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
ora.ons
ONLINE ONLINE olnxdb001 STABLE
ONLINE ONLINE olnxdb002 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE olnxdb002 STABLE
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE olnxdb001 STABLE
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE olnxdb001 STABLE
ora.MGMTLSNR
1 ONLINE ONLINE olnxdb001 169.254.91.197 192.1
68.100.101 192.168.2
00.101,STABLE
ora.asm
1 ONLINE ONLINE olnxdb001 Started,STABLE
2 ONLINE ONLINE olnxdb002 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE olnxdb001 STABLE
ora.mgmtdb
1 ONLINE ONLINE olnxdb001 Open,STABLE
ora.oc4j
1 ONLINE ONLINE olnxdb001 STABLE
ora.olnxdb001.vip
1 ONLINE ONLINE olnxdb001 STABLE
ora.olnxdb002.vip
1 ONLINE ONLINE olnxdb002 STABLE
ora.orcl.db
2 ONLINE ONLINE olnxdb002 Open,STABLE
ora.orcl.orcl.oracle12c.jp.svc
1 ONLINE ONLINE olnxdb002 STABLE
ora.scan1.vip
1 ONLINE ONLINE olnxdb002 STABLE
ora.scan2.vip
1 ONLINE ONLINE olnxdb001 STABLE
ora.scan3.vip
1 ONLINE ONLINE olnxdb001 STABLE
--------------------------------------------------------------------------------
[grid@olnxdb001 ~]$
DBインスタンスに接続してみます。
[oracle@olnxdb002 ~]$ export ORACLE_SID=orcl_2
[oracle@olnxdb002 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on 金 10月 16 12:58:42 2020
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
に接続されました。
SQL>
##まとめ
計画的なDBメンテナンスとかを行う際にはぜひ利用いただきたい機能ですね。
今回はインスタンスが1つしか実行されていないので次は2〜3インスタンスくらい上げて試してみたいなとか思ってます。
また、障害を想定したフェイルオーバーの動きも確認してみたいので、実行結果が出ればまたまとめたいと思います。
以上です!