やりたいこと
Oracle Linux 7.8 / Oracle Database 19c (RAC)
RAC環境からRAC One Nodeに変換する方法。
行う機会は少ないかと思いますが、RACをRAC One Nodeにしたり、その逆は意外に簡単です。
どちらかというとRAC One Nodeを、RACにすることの方が多いかもしれませんね。
手順
作業の流れ
- インスタンス2の停止
- インスタンス2の削除
- サービスの作成
- DBタイプの変換(RACからRACOneNodeへ)
■ 現在のDBタイプを確認する
srvctl config database -db <DB名>
16行目のTypeが表示される行に、「RAC」または「RACOneNode」とDBのタイプが表示されます
[oracle@node1 ~]$ srvctl config database -db racdb
Database unique name: racdb
Database name: racdb
Oracle home: /oracle/db/product/19.0.0/db
Oracle user: oracle
Spfile: +DATA/RACDB/PARAMETERFILE/spfile.273.1142946957
Password file: +DATA/RACDB/PASSWORD/pwdracdb.258.1142945401
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services: racone
Type: RAC ★Typeの行に、RAC または RACOneNode とDBのタイプが表示される
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: oper
Database instances: racdb1
Configured nodes: node1
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
■ 現在のクラスタウェアリソース状況を確認
crsctl stat res -t
(oracleユーザで実施する場合は、フルパスで実行)
2つのインスタンスからなるRACデータベースであることを確認します。
これを1つのインスタンスからなるRACOneNodeに変換していきます。
[oracle@node1 ~]$ /oracle/product/19.0.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
~ 省略 ~
ora.racdb.db
1 ONLINE ONLINE node1 Open,HOME=/oracle/db
/product/19.0.0/db,S
TABLE
2 ONLINE ONLINE node2 Open,HOME=/oracle/db
/product/19.0.0/db,S
TABLE
ora.scan1.vip
1 ONLINE ONLINE node2 STABLE
ora.scan2.vip
1 ONLINE ONLINE node2 STABLE
ora.scan3.vip
1 ONLINE ONLINE node2 STABLE
--------------------------------------------------------------------------------
■ インスタンス2の停止
srvctl stop instance -db <DB名> -instance <インスタンス名>
[oracle@node1 ~]$ srvctl stop instance -db racdb -instance racdb2
[oracle@node1 ~]$
[oracle@node1 ~]$ /oracle/product/19.0.0/grid/bin/crsctl stat res -t
~ 省略 ~
ora.racdb.db
1 ONLINE ONLINE node1 Open,HOME=/oracle/db
/product/19.0.0/db,S
TABLE
2 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
ora.scan1.vip
1 ONLINE ONLINE node2 STABLE
ora.scan2.vip
1 ONLINE ONLINE node2 STABLE
ora.scan3.vip
1 ONLINE ONLINE node2 STABLE
--------------------------------------------------------------------------------
[oracle@node1 ~]$
■ インスタンス2の削除(RACからインスタンス2を削除して、インスタンス1のみにする)
srvctl remove instance -db <DB名> -instance <インスタンス名>
⇒確認が求められるため、プロンプトで y を入力
[oracle@node1 ~]$ srvctl remove instance -db racdb -instance racdb2
Remove instance from the database racdb? (y/[n]) y
[oracle@node1 ~]$ /oracle/product/19.0.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
~ 省略 ~
ora.racdb.db
1 ONLINE ONLINE node1 Open,HOME=/oracle/db
/product/19.0.0/db,S
TABLE
ora.scan1.vip
1 ONLINE ONLINE node2 STABLE
ora.scan2.vip
1 ONLINE ONLINE node2 STABLE
ora.scan3.vip
1 ONLINE ONLINE node2 STABLE
--------------------------------------------------------------------------------
■ サービスを作成
srvctl add service -db <DB名> -service <適当なサービス名> -preferred <インスタンス1の名前>
サービスが存在しないと変換時にエラーがでるため、事前にサービスを作成します
[oracle@node1 ~]$ srvctl add service -db racdb -service racone -preferred racdb1
[oracle@node1 ~]$ /oracle/product/19.0.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
~ 省略 ~
ora.racdb.db
1 ONLINE ONLINE node1 Open,HOME=/oracle/db
/product/19.0.0/db,S
TABLE
ora.racdb.racone.svc
1 OFFLINE OFFLINE STABLE
ora.scan1.vip
1 ONLINE ONLINE node2 STABLE
ora.scan2.vip
1 ONLINE ONLINE node2 STABLE
ora.scan3.vip
1 ONLINE ONLINE node2 STABLE
--------------------------------------------------------------------------------
■ DBタイプの変換
srvctl convert database -database <DB名> -instance <インスタンス1の名前> -dbtype raconenode
[oracle@node1 ~]$ srvctl convert database -database racdb -instance racdb1 -dbtype raconenode
[oracle@node1 ~]$ /oracle/product/19.0.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
~ 省略 ~
ora.racdb.db
1 ONLINE ONLINE node1 Open,HOME=/oracle/db
/product/19.0.0/db,S
TABLE
ora.racdb.racone.svc
1 OFFLINE OFFLINE STABLE
ora.scan1.vip
1 ONLINE ONLINE node2 STABLE
ora.scan2.vip
1 ONLINE ONLINE node2 STABLE
ora.scan3.vip
1 ONLINE ONLINE node2 STABLE
--------------------------------------------------------------------------------
[oracle@node1 ~]$ srvctl config database -db racdb
Database unique name: racdb
Database name: racdb
Oracle home: /oracle/db/product/19.0.0/db
Oracle user: oracle
Spfile: +DATA/RACDB/PARAMETERFILE/spfile.273.1142946957
Password file: +DATA/RACDB/PASSWORD/pwdracdb.258.1142945401
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services: racone
Type: RACOneNode ★TypeがRACOneNodeに変わった
Online relocation timeout: 30
Instance name prefix: racdb1
Candidate servers: node1
OSDBA group: dba
OSOPER group: oper
Database instances: racdb1_1
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0