#1.はじめに
OCI (Oracle Cloud Infrastracture) 上に DataGuard を構築する機会がありましたが、この通りやればできるといった手順が見当たらなかっため、手順確認も兼ねて記事にしてみました。
実際の構築では説明を省いているパラメータなど考慮要素は多々あると思いますので、参考程度に活用いただければと思います。
細かい部分は考えずに一度 DataGuard を構築してみたい。手っ取り早く DataGuard 環境が欲しい。といった用途には有用かとも思います。
※スタンバイ側を1 Node RACの想定で記載していましたが、シングル環境(ClusterWareは利用)の要望もあったため、追記修正しました。
##1-1.前提
今回は以下の記事を参考に、プライマリ側となる 2 Node RAC を構築した状態からスタンバイ側を作成する手順を記載します。
[Oracle Cloud] OCI Compute 上に Docker で Oracle Database 19c の 4 Node RAC 環境を構築する
そのため、プライマリ側をまだ構築されていない方は、上記記事を参考にプライマリ環境を準備した上で本記事を読んでいただければと思います。
上記記事では 4 Node RAC の構築手順となっていますが、ノード数は任意で変更できるため、2 Node RAC で構築した環境を元に本記事を記載します。
##1-2.環境
- Oracle Cloud Infrastructure Compute
- Oracle Linux 7.9
- Oracle Database 19c (19.3)
- Oracle Database 19c Grid Infrastructure(19.3)
- Docker
#2.スタンバイノードの作成
プライマリノードは存在し、スタンバイノードが存在しない状態なので、まずはスタンバイノードを作成します。
##2-1.ASM 領域とする共有 DISK の作成
スタンバイは 1 Node ですが RAC で構築するため ASM 領域を使用します。
ここではスタンバイ用の ASM 領域を割り当てる共有 DISK を作成します。
手順はプライマリ構築の 6-5. と同一です。
今回、元のサイズが 600GB であったため、ASM 分の 100GB を足した 700GB としました。
アイコンが緑色になり、サイズの値も 700GB に変更されているため、OCI 上での作業は完了です。
コンソール上でサイズを確認します。この状態では拡張前の状態が表示されます。
[opc@atest-dkr19cdg-1 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 600G 0 disk ★600GBのまま
tqsda4 8:4 0 100G 0 part
tqsda2 8:2 0 8G 0 part [SWAP]
tqsda3 8:3 0 491.8G 0 part /
mqsda1 8:1 0 200M 0 part /boot/efi
先ほどメモしておいた再スキャンコマンドを実行します。
[opc@atest-dkr19cdg-1 ~]$ sudo dd iflag=direct if=/dev/oracleoci/oraclevda of=/dev/null count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000581882 s, 880 kB/s
[opc@atest-dkr19cdg-1 ~]$ echo "1" | sudo tee /sys/class/block/`readlink /dev/oracleoci/oraclevda | cut -d'/' -f 2`/device/rescan
1
改めてサイズを確認します。
[opc@atest-dkr19cdg-1 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 700G 0 disk ★700GBに拡張された
tqsda4 8:4 0 100G 0 part
tqsda2 8:2 0 8G 0 part [SWAP]
tqsda3 8:3 0 491.8G 0 part /
mqsda1 8:1 0 200M 0 part /boot/efi
パーティションを追加します。
途中で Error が出ますが、Fix して進めます。
パーティションは今割当たっている最後の位置から 100% を割り当てます。
[opc@atest-dkr19cdg-1 ~]$ sudo -s
[root@atest-dkr19cdg-1 opc]# parted /dev/sda
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: The backup GPT table is not at the end of the disk, as it should be.
This might mean that another operating system believes the disk is smaller.
Fix, by moving the backup to the end (and removing the old backup)?
Fix/Ignore/Cancel? Fix
Warning: Not all of the space available to /dev/sda appears to be used, you can
fix the GPT to use all of the space (an extra 209715200 blocks) or continue with
the current setting?
Fix/Ignore? Fix
Model: ORACLE BlockVolume (scsi)
Disk /dev/sda: 752GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 211MB 210MB fat16 EFI System Partition boot
2 211MB 8801MB 8590MB linux-swap(v1)
3 8801MB 537GB 528GB xfs
4 537GB 644GB 107GB gpt
(parted) mkpart gpt 644GB 100% ★最後のEndの位置(644GB)から100%を割当
(parted) print
Model: ORACLE BlockVolume (scsi)
Disk /dev/sda: 752GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 211MB 210MB fat16 EFI System Partition boot
2 211MB 8801MB 8590MB linux-swap(v1)
3 8801MB 537GB 528GB xfs
4 537GB 644GB 107GB gpt
5 644GB 752GB 107GB gpt ★割り当てられたパーティション
(parted) q
Information: You may need to update /etc/fstab.
パーティションの割り当てを確認します。
[root@atest-dkr19cdg-1 opc]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 700G 0 disk
tqsda4 8:4 0 100G 0 part
tqsda2 8:2 0 8G 0 part [SWAP]
tqsda5 8:5 0 100G 0 part ★tqsda5が作られ、100Gが割り当てられた
tqsda3 8:3 0 491.8G 0 part /
mqsda1 8:1 0 200M 0 part /boot/efi
追加したパーティションを初期化します。
ここでは 100GB 中の最初の 819MB だけ初期化しています。
追加したパーティションに ASM を構築するにあたり最初の数MB 初期化できていれば問題ないため、初期化の時間短縮の意味も込めて数MB だけの初期化を推奨します。
[root@atest-dkr19cdg-1 opc]# dd if=/dev/zero of=/dev/sda5 bs=8k count=100000
100000+0 records in
100000+0 records out
819200000 bytes (819 MB) copied, 1.99381 s, 411 MB/s
##2-2.Standby の Docker コンテナ作成
まずはプライマリの Docker で使用されている IP を確認します。
[opc@atest-dkr19cdg-1 ~]$ rac1
[oracle@racnode1 ~]$ more /etc/hosts
127.0.0.1 localhost.localdomain localhost
172.16.1.150 racnode1.example.com racnode1
192.168.17.150 racnode1-priv.example.com racnode1-priv
172.16.1.160 racnode1-vip.example.com racnode1-vip
172.16.1.70 racnode-scan.example.com racnode-scan
172.16.1.15 racnode-cman1.example.com racnode-cman1
172.16.1.151 racnode2.example.com racnode2
192.168.17.151 racnode2-priv.example.com racnode2-priv
172.16.1.161 racnode2-vip.example.com racnode2-vip
[oracle@racnode1 ~]$ exit
exit
[opc@atest-dkr19cdg-1 ~]$ rac2
[oracle@racnode2 ~]$ more /etc/hosts
127.0.0.1 localhost.localdomain localhost
172.16.1.150 racnode1.example.com racnode1
192.168.17.150 racnode1-priv.example.com racnode1-priv
172.16.1.160 racnode1-vip.example.com racnode1-vip
172.16.1.70 racnode-scan.example.com racnode-scan
172.16.1.15 racnode-cman1.example.com racnode-cman1
172.16.1.151 racnode2.example.com racnode2
192.168.17.151 racnode2-priv.example.com racnode2-priv
172.16.1.161 racnode2-vip.example.com racnode2-vip
[oracle@racnode2 ~]$ exit
exit
IP が重複しないように docker create で指定します。
ノード名等の名称は st を付与し、スタンバイノードであることが分かるようにしました。
以下★印の箇所が編集箇所です。
--Docker作成コマンド
sudo docker create -t -i \
--hostname racnodest1 \ ★
--volume /boot:/boot:ro \
--volume /dev/shm \
--tmpfs /dev/shm:rw,exec,size=4G \
--volume /opt/containers/rac_host_file:/etc/hosts \
--volume /opt/.secrets:/run/secrets \
--device=/dev/sda5:/dev/asm_diskst1 \ ★
--privileged=false \
--cap-add=SYS_NICE \
--cap-add=SYS_RESOURCE \
--cap-add=NET_ADMIN \
-e NODE_VIP=172.16.1.162 \ ★
-e VIP_HOSTNAME=racnodest1-vip \ ★
-e PRIV_IP=192.168.17.152 \ ★
-e PRIV_HOSTNAME=racnodest1-priv \ ★
-e PUBLIC_IP=172.16.1.152 \ ★
-e PUBLIC_HOSTNAME=racnodest1 \ ★
-e SCAN_NAME=racnodest1-scan \ ★
-e SCAN_IP=172.16.1.71 \ ★
-e OP_TYPE=INSTALL \
-e DOMAIN=example.com \
-e ASM_DEVICE_LIST=/dev/asm_diskst1 \ ★
-e ORACLE_SID=ORCLST \ ★
-e ASM_DISCOVERY_DIR=/dev \
-e CMAN_HOSTNAME=racnodest1-cman1 \ ★
-e CMAN_IP=172.16.1.16 \ ★
-e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \
-e PWD_KEY=pwd.key \
--restart=always --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--cpu-rt-runtime=95000 --ulimit rtprio=99 \
--name racnodest1 \ ★
oracle/database-rac:19.3.0
実行したログは以下です。
[opc@atest-dkr19cdg-1 ~]$ sudo docker create -t -i \
> --hostname racnodest1 \
> --volume /boot:/boot:ro \
> --volume /dev/shm \
> --tmpfs /dev/shm:rw,exec,size=4G \
> --volume /opt/containers/rac_host_file:/etc/hosts \
> --volume /opt/.secrets:/run/secrets \
> --device=/dev/sda5:/dev/asm_diskst1 \
> --privileged=false \
> --cap-add=SYS_NICE \
> --cap-add=SYS_RESOURCE \
> --cap-add=NET_ADMIN \
> -e NODE_VIP=172.16.1.162 \
> -e VIP_HOSTNAME=racnodest1-vip \
> -e PRIV_IP=192.168.17.152 \
> -e PRIV_HOSTNAME=racnodest1-priv \
> -e PUBLIC_IP=172.16.1.152 \
> -e PUBLIC_HOSTNAME=racnodest1 \
> -e SCAN_NAME=racnodest1-scan \
> -e SCAN_IP=172.16.1.71 \
> -e OP_TYPE=INSTALL \
> -e DOMAIN=example.com \
> -e ASM_DEVICE_LIST=/dev/asm_diskst1 \
> -e ORACLE_SID=ORCLST \
> -e ASM_DISCOVERY_DIR=/dev \
> -e CMAN_HOSTNAME=racnodest1-cman1 \
> -e CMAN_IP=172.16.1.16 \
> -e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \
> -e PWD_KEY=pwd.key \
> --restart=always --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
> --cpu-rt-runtime=95000 --ulimit rtprio=99 \
> --name racnodest1 \
> oracle/database-rac:19.3.0
d24f585778d932cb82d45a0b32004e868dd9b2ee8519a356fe020a1485ab015f
コンテナにネットワークを割り当てます。
最初に実施している disconnect コマンドは同一のネットワークがもしあった場合に念のため切断するものです。
connect コマンドで指定している rac_pub1_nw、rac_priv1_nw は
[Oracle Cloud] OCI Compute 上に Docker で Oracle Database 19c の 4 Node RAC 環境を構築する
の 6-2. で割り当てたサブネットを利用する設定です。
割り当てた IP がサブネットの範囲内にあることをご確認ください。
[opc@atest-dkr19cdg-1 ~]$ sudo docker network disconnect bridge racnodest1
[opc@atest-dkr19cdg-1 ~]$ sudo docker network connect rac_pub1_nw --ip 172.16.1.152 racnodest1
[opc@atest-dkr19cdg-1 ~]$ sudo docker network connect rac_priv1_nw --ip 192.168.17.152 racnodest1
RAC コンテナを起動します。
[opc@atest-dkr19cdg-1 ~]$ sudo docker start racnodest1
racnodest1
起動コマンド自体はすぐ結果が返りますが、内部で GI/DB のインストールや DB 作成、RAC の構成が行われています。
以下のコマンドでログを確認し、エラーがないことと構築の完了を確認します。
構築完了までおよそ40分~1時間程度かかります。
[opc@atest-dkr19cdg-1 ~]$ sudo docker logs -f racnodest1
以下のメッセージが表示されれば、構築は完了です。
01-25-2022 03:25:23 UTC : : ####################################
01-25-2022 03:25:23 UTC : : ORACLE RAC DATABASE IS READY TO USE!
01-25-2022 03:25:23 UTC : : ####################################
コンテナに接続して確認します。
[opc@atest-dkr19cdg-1 ~]$ sudo docker exec -i -t racnodest1 /bin/bash
[grid@racnodest1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE racnodest1 STABLE
ora.chad
ONLINE ONLINE racnodest1 STABLE
ora.net1.network
ONLINE ONLINE racnodest1 STABLE
ora.ons
ONLINE ONLINE racnodest1 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE racnodest1 STABLE
2 OFFLINE OFFLINE STABLE
3 OFFLINE OFFLINE STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE racnodest1 STABLE
2 OFFLINE OFFLINE STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE racnodest1 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE racnodest1 Started,STABLE
2 OFFLINE OFFLINE STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE racnodest1 STABLE
2 OFFLINE OFFLINE STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE racnodest1 STABLE
ora.orclst.db
1 ONLINE ONLINE racnodest1 Open,HOME=/u01/app/o
racle/product/19.3.0
/dbhome_1,STABLE
ora.qosmserver
1 ONLINE ONLINE racnodest1 STABLE
ora.racnodest1.vip
1 ONLINE ONLINE racnodest1 STABLE
ora.scan1.vip
1 ONLINE ONLINE racnodest1 STABLE
--------------------------------------------------------------------------------
[grid@racnodest1 ~]$
正常に構築されていることが確認できました。
Docker コンテナ作成と同時に Database も作成されていますが、こちらは次の手順で削除します。
##2-3.Standby データベース削除
DataGuard のスタンバイDB はプライマリから duplicate で作成するため、Docker 作成と共に作成された Database は削除することになります。
一旦接続確認してみます。
[grid@racnodest1 ~]$ sudo su - oracle
Last login: Tue Jan 25 03:25:21 UTC 2022
[oracle@racnodest1 ~]$ export ORACLE_HOME=`echo ${DB_HOME}`
[oracle@racnodest1 ~]$ export ORACLE_SID=ORCLST1
[oracle@racnodest1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 25 03:39:14 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Standby データベースを削除します。
[oracle@racnodest1 ~]$ dbca -silent -deleteDatabase \
> -sourceDB ORCLST \
> -sysDBAUserNAME SYS \
> -sysDBAPassword oracle
[WARNING] [DBT-19202] The Database Configuration Assistant will delete the Oracle instances and datafiles for your database. All information in the database will be destroyed.
Prepare for db operation
32% complete
Connecting to database
39% complete
42% complete
45% complete
48% complete
52% complete
55% complete
58% complete
65% complete
Updating network configuration files
68% complete
Deleting instances and datafiles
77% complete
87% complete
97% complete
100% complete
Database deletion completed.
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ORCLST/ORCLST0.log" for further details.
関連するファイルも削除します。
[oracle@racnodest1 ~]$ ll /u01/app/oracle/product/19.3.0/dbhome_1/dbs/*
-rw-rw----. 1 oracle asmadmin 1544 Jan 25 03:46 /u01/app/oracle/product/19.3.0/dbhome_1/dbs/hc_ORCLST1.dat
-rw-r-----. 1 oracle asmadmin 2097152 Jan 25 03:45 /u01/app/oracle/product/19.3.0/dbhome_1/dbs/id_ORCLST1.dat
-rw-r--r--. 1 oracle oinstall 3079 May 14 2015 /u01/app/oracle/product/19.3.0/dbhome_1/dbs/init.ora
[oracle@racnodest1 ~]$ ll /u01/app/oracle/diag/rdbms/*
total 4
drwxr-x---. 16 oracle asmadmin 4096 Jan 25 03:46 ORCLST1
-rw-r-----. 1 oracle asmadmin 0 Jan 25 03:07 i_1.mif
[oracle@racnodest1 ~]$ rm /u01/app/oracle/product/19.3.0/dbhome_1/dbs/*
[oracle@racnodest1 ~]$ rm -rf /u01/app/oracle/diag/rdbms/*
[oracle@racnodest1 ~]$ ll /u01/app/oracle/product/19.3.0/dbhome_1/dbs/*
ls: cannot access /u01/app/oracle/product/19.3.0/dbhome_1/dbs/*: No such file or directory
[oracle@racnodest1 ~]$ ll /u01/app/oracle/diag/rdbms/*
ls: cannot access /u01/app/oracle/diag/rdbms/*: No such file or directory
ASM 上の Database ファイルが削除されていることを確認します。
[oracle@racnodest1 ~]$ exit
logout
[grid@racnodest1 ~]$ asmcmd -p
ASMCMD [+] > cd data
ASMCMD [+data] > ls
ASM/
orapwasm
orapwasm_backup
racnodest1-c/
ASMCMD [+data] > exit
##2-4.Alias の作成
最後に接続元サーバーの opc ユーザーに racnodest1 に接続する Alias を設定します。
[grid@racnodest1 ~]$ exit
exit
[opc@atest-dkr19cdg-1 ~]$ vi .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
alias rac1='sudo docker exec -u oracle --workdir /home/oracle -it racnode1 bash'
alias rac2='sudo docker exec -u oracle --workdir /home/oracle -it racnode2 bash'
alias racst1='sudo docker exec -u oracle --workdir /home/oracle -it racnodest1 bash' ★追加
.bashrc は接続時に読み込まれるため、次回からはログインした際に読み込まれますが、今回は再ログインしないため明示的に読み込ませます。
[opc@atest-dkr19cdg-1 ~]$ . .bashrc
以上で Docker を用いたスタンバイノードの準備は完了です。
#3.DataGuard 構築 - プライマリデータベース準備
DataGuard を構築するためのプライマリ DB、スタンバイノードの準備が整ったので、DataGuard を構築していきます。
まずはプライマリデータベースの設定を整えます。
##3-1.ARCHIVELOG モード
ARCHIVELOG モードを確認します。
[opc@atest-dkr19cdg-1 ~]$ racst1
[oracle@racnodest1 ~]$ exit
exit
[opc@atest-dkr19cdg-1 ~]$ rac1
[oracle@racnode1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 25 04:24:42 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG ★NOARCHIVELOGなのでARCHIVELOGに変更要
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
NOARCHIVELOG のため、ARCHIVELOG に変更します。
ARCHIVELOG モードの変更は MOUNT 状態で実施します。
[oracle@racnode1 ~]$ srvctl stop database -db orcl
[oracle@racnode1 ~]$ srvctl start instance -db orcl -i ORCL1 -o mount
[oracle@racnode1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE racnode1 STABLE
ONLINE ONLINE racnode2 STABLE
ora.chad
ONLINE ONLINE racnode1 STABLE
ONLINE ONLINE racnode2 STABLE
ora.net1.network
ONLINE ONLINE racnode1 STABLE
ONLINE ONLINE racnode2 STABLE
ora.ons
ONLINE ONLINE racnode1 STABLE
ONLINE ONLINE racnode2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE racnode1 STABLE
2 ONLINE ONLINE racnode2 STABLE
3 ONLINE OFFLINE STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE racnode1 STABLE
2 ONLINE ONLINE racnode2 STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE racnode1 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE racnode1 Started,STABLE
2 ONLINE ONLINE racnode2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE racnode1 STABLE
2 ONLINE ONLINE racnode2 STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE racnode1 STABLE
ora.orcl.db
1 ONLINE INTERMEDIATE racnode1 Mounted (Closed),HOM
E=/u01/app/oracle/pr
oduct/19.3.0/dbhome_
1,STABLE
2 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
ora.qosmserver
1 ONLINE ONLINE racnode1 STABLE
ora.racnode1.vip
1 ONLINE ONLINE racnode1 STABLE
ora.racnode2.vip
1 ONLINE ONLINE racnode2 STABLE
ora.scan1.vip
1 ONLINE ONLINE racnode1 STABLE
--------------------------------------------------------------------------------
[oracle@racnode1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 25 04:29:25 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL> alter database archivelog;
Database altered.
SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
SQL> alter database open;
Database altered.
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@racnode1 ~]$ srvctl start instance -db orcl -i ORCL2
[oracle@racnode1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE racnode1 STABLE
ONLINE ONLINE racnode2 STABLE
ora.chad
ONLINE ONLINE racnode1 STABLE
ONLINE ONLINE racnode2 STABLE
ora.net1.network
ONLINE ONLINE racnode1 STABLE
ONLINE ONLINE racnode2 STABLE
ora.ons
ONLINE ONLINE racnode1 STABLE
ONLINE ONLINE racnode2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE racnode1 STABLE
2 ONLINE ONLINE racnode2 STABLE
3 ONLINE OFFLINE STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE racnode1 STABLE
2 ONLINE ONLINE racnode2 STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE racnode1 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE racnode1 Started,STABLE
2 ONLINE ONLINE racnode2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE racnode1 STABLE
2 ONLINE ONLINE racnode2 STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE racnode1 STABLE
ora.orcl.db
1 ONLINE ONLINE racnode1 Open,HOME=/u01/app/o
racle/product/19.3.0
/dbhome_1,STABLE
2 ONLINE ONLINE racnode2 Open,HOME=/u01/app/o
racle/product/19.3.0
/dbhome_1,STABLE
ora.qosmserver
1 ONLINE ONLINE racnode1 STABLE
ora.racnode1.vip
1 ONLINE ONLINE racnode1 STABLE
ora.racnode2.vip
1 ONLINE ONLINE racnode2 STABLE
ora.scan1.vip
1 ONLINE ONLINE racnode1 STABLE
--------------------------------------------------------------------------------
[oracle@racnode1 ~]$ exit
exit
[opc@atest-dkr19cdg-1 ~]$ rac2
[oracle@racnode2 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 25 04:33:49 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@racnode2 ~]$ exit
exit
##3-2.強制ロギング
強制ロギングを有効化します。
[opc@atest-dkr19cdg-1 ~]$ rac1
[oracle@racnode1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 25 04:36:54 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select force_logging from v$database;
FORCE_LOGGING
---------------------------------------
NO ★NOのため、有効化します。
SQL> alter database force logging;
Database altered.
SQL> select force_logging from v$database;
FORCE_LOGGING
---------------------------------------
YES
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@racnode1 ~]$ exit
exit
##3-3.スタンバイREDOログ
スタンバイREDOログを作成します。
スタンバイREDOログは Oracle 推奨に合わせてオンラインREDOログ +1 の数作成します。
[opc@atest-dkr19cdg-1 ~]$ rac1
[oracle@racnode1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 25 04:40:20 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select group#, thread#, bytes/1024/1024 MB from v$log;
GROUP# THREAD# MB
---------- ---------- ----------
1 1 200
2 1 200
3 1 200
4 2 200
5 2 200
6 2 200
6 rows selected.
SQL> alter database add standby logfile thread 1 GROUP 101 ('+DATA') SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 1 GROUP 102 ('+DATA') SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 1 GROUP 103 ('+DATA') SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 1 GROUP 104 ('+DATA') SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 2 GROUP 105 ('+DATA') SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 2 GROUP 106 ('+DATA') SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 2 GROUP 107 ('+DATA') SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 2 GROUP 108 ('+DATA') SIZE 200M;
Database altered.
SQL> select group#, thread#, bytes/1024/1024 MB from v$standby_log;
GROUP# THREAD# MB
---------- ---------- ----------
101 1 200
102 1 200
103 1 200
104 1 200
105 2 200
106 2 200
106 2 200
106 2 200
8 rows selected.
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@racnode1 ~]$ exit
exit
##3-4.初期化パラメータ
DataGuard 用の初期化パラメータを設定します。
関係のない初期パラが多いため、ここでは関係あるものだけを抜粋します。
[opc@atest-dkr19cdg-1 ~]$ rac1
[oracle@racnode1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 25 04:53:05 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> set lines 300 pages 50000 tab off trim on
SQL> col NAME for a30
SQL> col VALUE for a50
SQL> select INST_ID, NAME, VALUE from GV$PARAMETER
where upper(NAME) in (
'CONTROL_FILE_RECORD_KEEP_TIME',
'DB_FILE_NAME_CONVERT',
'DB_NAME',
'DB_UNIQUE_NAME',
'FAL_SERVER',
'LOG_ARCHIVE_CONFIG',
'LOG_ARCHIVE_DEST_1',
'LOG_ARCHIVE_DEST_2',
'LOG_ARCHIVE_DEST_STATE_1',
'LOG_ARCHIVE_DEST_STATE_2',
'LOG_ARCHIVE_FORMAT',
'LOG_FILE_NAME_CONVERT',
'REMOTE_LOGIN_PASSWORDFILE',
'STANDBY_FILE_MANAGEMENT')
order by 2, 1 ;
INST_ID NAME VALUE
---------- ------------------------------ --------------------------------------------------
1 control_file_record_keep_time 7
2 control_file_record_keep_time 7
1 db_file_name_convert
2 db_file_name_convert
1 db_name ORCL
2 db_name ORCL
1 db_unique_name ORCL
2 db_unique_name ORCL
1 fal_server
2 fal_server
1 log_archive_config
2 log_archive_config
1 log_archive_dest_1
2 log_archive_dest_1
1 log_archive_dest_2
2 log_archive_dest_2
1 log_archive_dest_state_1 enable
2 log_archive_dest_state_1 enable
1 log_archive_dest_state_2 enable
2 log_archive_dest_state_2 enable
1 log_archive_format %t_%s_%r.dbf
2 log_archive_format %t_%s_%r.dbf
1 log_file_name_convert
2 log_file_name_convert
1 remote_login_passwordfile EXCLUSIVE
2 remote_login_passwordfile EXCLUSIVE
1 standby_file_management MANUAL
2 standby_file_management MANUAL
28 rows selected.
SQL>
以下を設定します。
-- プライマリロールで必要なパラメータ
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL,ORCLST)';
alter system set LOG_ARCHIVE_DEST_1='LOCATION=+DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCL';
alter system set LOG_ARCHIVE_DEST_2='SERVICE=ORCLST ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLST REOPEN=60';
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE; ★元々enableなので明示的に設定する必要はありません
alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE; ★元々enableなので明示的に設定する必要はありません
-- スタンバイロールで必要なパラメータ
alter system set FAL_SERVER=ORCLST;
alter system set STANDBY_FILE_MANAGEMENT=AUTO;
alter system set DB_FILE_NAME_CONVERT='+DATA/ORCLST/','+DATA/ORCL/' scope=spfile;
alter system set LOG_FILE_NAME_CONVERT='+DATA/ORCLST/','+DATA/ORCL/' scope=spfile;
-- その他
alter system set CONTROL_FILE_RECORD_KEEP_TIME=365;
実際に設定したものが以下です。
db_file_name_convert , log_file_name_convert は SPFILE に設定するため、v$spparameter で確認します。
SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL,ORCLST)';
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=+DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCL';
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=ORCLST ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLST REOPEN=60';
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;
System altered.
SQL> alter system set FAL_SERVER=ORCLST;
System altered.
SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO;
System altered.
SQL> alter system set DB_FILE_NAME_CONVERT='+DATA/ORCLST/','+DATA/ORCL/' scope=spfile;
System altered.
SQL> alter system set LOG_FILE_NAME_CONVERT='+DATA/ORCLST/','+DATA/ORCL/' scope=spfile;
System altered.
SQL> alter system set CONTROL_FILE_RECORD_KEEP_TIME=365;
System altered.
SQL> select INST_ID, NAME, VALUE from GV$PARAMETER
where upper(NAME) in (
'CONTROL_FILE_RECORD_KEEP_TIME',
'DB_FILE_NAME_CONVERT',
'DB_NAME',
'DB_UNIQUE_NAME',
'FAL_SERVER',
'LOG_ARCHIVE_CONFIG',
'LOG_ARCHIVE_DEST_1',
'LOG_ARCHIVE_DEST_2',
'LOG_ARCHIVE_DEST_STATE_1',
'LOG_ARCHIVE_DEST_STATE_2',
'LOG_ARCHIVE_FORMAT',
'LOG_FILE_NAME_CONVERT',
'REMOTE_LOGIN_PASSWORDFILE',
'STANDBY_FILE_MANAGEMENT')
order by 2, 1 ;
INST_ID NAME VALUE
---------- ------------------------------ --------------------------------------------------
1 control_file_record_keep_time 365
2 control_file_record_keep_time 365
1 db_file_name_convert
2 db_file_name_convert
1 db_name ORCL
2 db_name ORCL
1 db_unique_name ORCL
2 db_unique_name ORCL
1 fal_server ORCLST
2 fal_server ORCLST
1 log_archive_config DG_CONFIG=(ORCL,ORCLST)
2 log_archive_config DG_CONFIG=(ORCL,ORCLST)
1 log_archive_dest_1 LOCATION=+DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=ORCL
2 log_archive_dest_1 LOCATION=+DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=ORCL
1 log_archive_dest_2 SERVICE=ORCLST ASYNC VALID_FOR=(ONLINE_LOGFILES,PR
IMARY_ROLE) DB_UNIQUE_NAME=ORCLST REOPEN=60
2 log_archive_dest_2 SERVICE=ORCLST ASYNC VALID_FOR=(ONLINE_LOGFILES,PR
IMARY_ROLE) DB_UNIQUE_NAME=ORCLST REOPEN=60
1 log_archive_dest_state_1 ENABLE
2 log_archive_dest_state_1 ENABLE
1 log_archive_dest_state_2 ENABLE
2 log_archive_dest_state_2 ENABLE
1 log_archive_format %t_%s_%r.dbf
2 log_archive_format %t_%s_%r.dbf
1 log_file_name_convert
2 log_file_name_convert
1 remote_login_passwordfile EXCLUSIVE
2 remote_login_passwordfile EXCLUSIVE
1 standby_file_management AUTO
2 standby_file_management AUTO
28 rows selected.
SQL> set lin 1000
SQL> col name for a40
SQL> col value for a40
SQL> select NAME,VALUE,ORDINAL from v$spparameter where name='db_file_name_convert';
NAME VALUE ORDINAL
---------------------------------------- ---------------------------------------- ----------
db_file_name_convert +DATA/ORCLST/ 1
db_file_name_convert +DATA/ORCL/ 2
SQL> select NAME,VALUE,ORDINAL from v$spparameter where name='log_file_name_convert';
NAME VALUE ORDINAL
---------------------------------------- ---------------------------------------- ----------
log_file_name_convert +DATA/ORCLST/ 1
log_file_name_convert +DATA/ORCL/ 2
SQL>
#4.DataGuard 構築 - Oracle Net 接続設定と確認
プライマリとスタンバイの通信を行うための Oracle Net 接続設定を行います。
##4-1.Alias の作成(racnodest1)
まず、スタンバイ環境の oracle ユーザーのコマンド操作を簡便にするため、.bashrc に Alias を追加します。
ここで ORACLE_SID について、1 node RAC として作成する場合と SINGLE 環境として作成する場合で指定が異なりますので、作成する環境に合わせて設定します。
1 node RAC として作成する場合は DB_UNIQUE_NAME にインスタンス番号が付加されますので、ORCLST1 が正しい設定となります。
SINGLE 環境の場合は DB_UNIQUE_NAME が ORACLE_SID となるため、 ORCLST が正しい設定となります。
以降 ORACLE_SID が出てくる箇所も同様になりますのでご注意ください。
[opc@atest-dkr19cdg-1 ~]$ racst1
[oracle@racnodest1 ~]$ vi .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
export LD_LIBRARY_PATH=/u01/app/oracle/product/19.3.0/dbhome_1/lib:/usr/lib:/lib
export SCRIPT_DIR=/opt/scripts/startup
export GRID_HOME=/u01/app/19.3.0/grid
export DB_BASE=/u01/app/oracle
export DB_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
ulimit -S -s 10240
# 以下を追加
if [ -t 0 ]; then
stty intr "^C"
stty erase "^H"
fi
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=`echo ${DB_HOME}`
export ORACLE_SID=ORCLST1 ★RACかSINGLEかでインスタンス番号を付加するかどうか選択
export DB_UNIQUE_NAME=ORCLST
export PATH=${PATH}:/u01/app/19.3.0/grid/bin
export NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS"
alias va='view /u01/app/oracle/diag/rdbms/orclst/${ORACLE_SID}/trace/alert_${ORACLE_SID}.log'
alias ta='tail -f /u01/app/oracle/diag/rdbms/orclst/${ORACLE_SID}/trace/alert_${ORACLE_SID}.log'
alias cdh="cd $ORACLE_HOME"
alias cdd="cd $ORACLE_HOME/dbs"
alias cdn="cd $ORACLE_HOME/network/admin"
alias stat="${GRID_HOME}/bin/crsctl stat res -t"
alias stati="${GRID_HOME}/bin/crsctl stat res -t -init"
alias statdb="srvctl status database -db ${DB_UNIQUE_NAME}"
alias sys="sqlplus / as sysdba"
alias pdb="sqlplus sys/oracle@`hostname`/orclpdb as sysdba"
.bashrc を読み込ませます。
[oracle@racnodest1 ~]$ . .bashrc
##4-2.listener.ora
スタンバイ環境の listener.ora に duplicate の際に用いる静的リスナを登録します。
[oracle@racnodest1 ~]$ cd $ORACLE_HOME/network/admin
[oracle@racnodest1 admin]$ ls
samples shrept.lst tnsnames.ora
[oracle@racnodest1 admin]$ vi listener.ora
# 以下を追加
LISTENER =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = racnodest1)(PORT = 1521))
(ADDRESS = (PROTOCOL = ipc)(KEY = EXTPROC1521))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCLST)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = ORCLST1)
(ENVS = /u01/app/oracle/product/19.3.0/dbhome_1/network/admin)
)
)
ADR_BASE_LISTENER=/u01/app/oracle
リスナーを起動し、サービス ORCLST が表示され、ステータスが UNKNOWN になっていることを確認します。
以下のような既に LISTENER が起動しているといったメッセージが出た場合、使用するポートを変更して起動しなおします。
[oracle@racnodest1 admin]$ lsnrctl start
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 31-JAN-2022 08:34:01
Copyright (c) 1991, 2019, Oracle. All rights reserved.
TNS-01106: Listener using listener name LISTENER has already been started ★既に起動済みのエラー
[oracle@racnodest1 admin]$ vi listener.ora
LISTENER =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = racnodest1)(PORT = 1522)) ★PORTを変更する
(ADDRESS = (PROTOCOL = ipc)(KEY = EXTPROC1521))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCLST)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = ORCLST1)
(ENVS = /u01/app/oracle/product/19.3.0/dbhome_1/network/admin)
)
)
ADR_BASE_LISTENER=/u01/app/oracle
[oracle@racnodest1 admin]$ lsnrctl start
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 31-JAN-2022 08:34:50
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Starting /u01/app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/19.3.0/dbhome_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=racnodest1.example.com)(PORT=1522)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=racnodest1)(PORT=1522))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 31-JAN-2022 08:34:50
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/19.3.0/dbhome_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=racnodest1.example.com)(PORT=1522)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "ORCLST" has 1 instance(s).
Instance "ORCLST1", status UNKNOWN, has 1 handler(s) for this service... ★確認
The command completed successfully
[oracle@racnodest1 admin]$
##4-3.tnsnames.ora を編集(両サイト)
プライマリの tnsnames.ora を編集します。
ここで、スタンバイ側の CONNECT_DATA には (UR=A) を追加するのを忘れないようにします。
また、スタンバイ側の HOST 設定は SCAN ではなく HOST 名を記載するようにします。
[oracle@racnode1 ~]$ cd $ORACLE_HOME/network/admin
[oracle@racnode1 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
[oracle@racnode1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome
_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
# 以下を追加
ORCLST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnodest1)(PORT = 1521))
(CONNECT_DATA =
(UR=A)
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLST)
)
)
tnsnames.ora を編集したら tnsping で疎通確認をします。
[oracle@racnode1 admin]$ tnsping ORCL
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 25-JAN-2022 11:35:55
Copyright (c) 1997, 2019, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = racnode-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
OK (0 msec)
[oracle@racnode1 admin]$ tnsping ORCLST
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 25-JAN-2022 11:35:58
Copyright (c) 1997, 2019, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = racnodest1)(PORT = 1521)) (CONNECT_DATA = (UR=A) (SERVER = DEDICATED) (SERVICE_NAME = ORCLST)))
OK (0 msec)
RAC 2 側も同様に tnsnames.ora を編集し、疎通確認を行います。
スタンバイ側は tnsnames.ora が存在していないと思いますので、プライマリ側と同じ内容で作成します。
[oracle@racnodest1 ~]$ cd $ORACLE_HOME/network/admin
[oracle@racnodest1 admin]$ cat tnsnames.ora
cat: tnsnames.ora: No such file or directory
[oracle@racnodest1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
ORCLST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnodest1)(PORT = 1521))
(CONNECT_DATA =
(UR=A)
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLST)
)
)
スタンバイ側からも tnsping で疎通確認を行います。
[oracle@racnodest1 admin]$ tnsping ORCL
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 25-JAN-2022 11:38:52
Copyright (c) 1997, 2019, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = racnode-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
OK (0 msec)
[oracle@racnodest1 admin]$ tnsping ORCLST
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 25-JAN-2022 11:38:59
Copyright (c) 1997, 2019, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = racnodest1)(PORT = 1521)) (CONNECT_DATA = (UR=A) (SERVER = DEDICATED) (SERVICE_NAME = ORCLST)))
OK (0 msec)
#5.DataGuard 構築 - スタンバイDB の複製
##5-1.パスワードファイルのコピー
今回はプライマリと同じパスワードファイルを利用します。
プライマリサイトからスタンバイサイトにパスワードファイルをコピーします。
スタンバイ側のパスワードファイルは $ORACLE_HOME/dbs/ の階層に orapw + SID の名称で配置します。
RAC の場合は orapwORCLST1、SINGLE の場合は orapwORCLST となります。
★プライマリサイトで実施
[oracle@racnode1 ~]$ sudo su - grid
Last login: Wed Jan 26 05:35:58 UTC 2022
[grid@racnode1 ~]$ asmcmd ls -l '+DATA/ORCL/PASSWORD'
Type Redund Striped Time Sys Name
PASSWORD UNPROT COARSE JAN 14 06:00:00 Y pwdorcl.258.1093934281
[grid@racnode1 ~]$ asmcmd pwcopy '+DATA/ORCL/PASSWORD/pwdorcl.258.1093934281' /tmp
copying +DATA/ORCL/PASSWORD/pwdorcl.258.1093934281 -> /tmp/pwdorcl.258.1093934281
[grid@racnode1 ~]$ exit
logout
[oracle@racnode1 ~]$ scp /tmp/pwdorcl.258.1093934281 racnodest1:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwORCLST1
The authenticity of host 'racnodest1 (172.16.1.152)' can't be established.
ECDSA key fingerprint is SHA256:Uyw5pJXq3/44UqvpBPJAG3oMOnfdcukl9uqNKsI3dPA.
ECDSA key fingerprint is MD5:7d:90:6b:fc:9e:ff:7c:2e:77:87:e9:98:13:1b:73:27.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'racnodest1,172.16.1.152' (ECDSA) to the list of known hosts.
oracle@racnodest1's password:
pwdorcl.258.1093934281
スタンバイに配置されたことを確認します。
★スタンバイサイトで確認
[oracle@racnodest1 ~]$ cd $ORACLE_HOME/dbs
[oracle@racnodest1 dbs]$ ls
orapwORCLST1
##5-2.adump ディレクトリ作成
スタンバイサイトに adump ディレクトリを作成します。
[oracle@racnodest1 ~]$ mkdir -p /u01/app/oracle/admin/ORCLST/adump
##5-3.補助インスタンスの起動
RMAN duplicate で接続するための補助インスタンスをスタンバイサイトで起動します。
補助インスタンス用の PFILE を作成し、それを用いて nomount で起動します。
[oracle@racnodest1 ~]$ vi /tmp/pfileORCLST
db_name=ORCL
db_unique_name=ORCLST
[oracle@racnodest1 ~]$ echo $ORACLE_SID
ORCLST1
[oracle@racnodest1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 26 05:58:07 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile='/tmp/pfileORCLST'
ORACLE instance started.
Total System Global Area 432009920 bytes
Fixed Size 8897216 bytes
Variable Size 364904448 bytes
Database Buffers 50331648 bytes
Redo Buffers 7876608 bytes
SQL> exit
##5-4.プライマリから接続確認
★プライマリサイトで確認
[oracle@racnode1 ~]$ sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 26 06:00:00 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> conn sys/oracle@ORCLST as sysdba
Connected.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
ORCLST1
SQL> exit
##5-5.複製時のパラレル度設定
Duplicate は時間のかかる処理の為、パラレル度を設定して高速化します。
[opc@atest-dkr19cdg-1 ~]$ rac1
[oracle@racnode1 ~]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Tue Jan 25 04:50:13 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1621715199)
RMAN> show all;
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/snapcf_ORCL1.f'; # default
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
using target database control file instead of recovery catalog
new RMAN configuration parameters:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
new RMAN configuration parameters are successfully stored
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters are successfully stored
RMAN> show all;
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; ★同じだが# default が外れている。
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET; ★変更
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/snapcf_ORCL1.f'; # default
RMAN> exit
Recovery Manager complete.
[oracle@racnode1 ~]$
##5-6.RMAN Duplicate
プライマリサイトにて RMAN Duplicate を実行し、スタンバイデータベースを作成します。
★プライマリサイトで実施
[oracle@racnode1 ~]$ rman target sys/oracle auxiliary sys/oracle@ORCLST
Recovery Manager: Release 19.0.0.0.0 - Production on Wed Jan 26 06:02:53 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1621715199)
connected to auxiliary database: ORCL (not mounted)
RMAN>
Duplicate コマンドは以下で実施しました。
RMAN> run {
allocate channel prmy1 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database dorecover nofilenamecheck
SPFILE
SET AUDIT_FILE_DEST='/u01/app/oracle/admin/ORCLST/adump'
SET DB_UNIQUE_NAME='ORCLST'
SET CONTROL_FILES='+DATA'
SET DB_FILE_NAME_CONVERT='+DATA/ORCL/','+DATA/ORCLST/'
SET LOG_FILE_NAME_CONVERT='+DATA/ORCL/','+DATA/ORCLST/'
SET FAL_SERVER='ORCL'
SET LOG_ARCHIVE_DEST_1='LOCATION=+DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCLST'
SET LOG_ARCHIVE_DEST_2='SERVICE=ORCL ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL REOPEN=60'
SET CLUSTER_DATABASE='FALSE'
;
}
以下のような Finished Duplicate が出力されれば完了です。
Finished Duplicate Db at 2022/01/26 06:11:31
released channel: prmy1
released channel: stby
RMAN>
##5-7.複製された DB の状態確認
正常に作成され、MOUNT 状態で起動、DATABASE_ROLE が PHYSICAL STANDBY になっていることを確認します。
[oracle@racnodest1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 26 09:10:28 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> set pages 1000 lin 1000
SQL> select NAME, DB_UNIQUE_NAME, OPEN_MODE, DATABASE_ROLE, FLASHBACK_ON from V$DATABASE ;
NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE FLASHBACK_ON
--------- ------------------------------ -------------------- ---------------- ------------------
ORCL ORCLST MOUNTED PHYSICAL STANDBY NO
SQL>
#6.DataGuard 構築 - 事後作業
##6-1.SPFILEの作成
SPFILE から PFILE を作成し、必要な編集を行って ASM に登録します。
[oracle@racnodest1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 26 06:47:35 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> create pfile='/tmp/pfile' from spfile;
File created.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> exit
PFILE を確認し、プライマリインスタンス名から始まるパラメータでスタンバイインスタンス名から始まるものが存在しない場合、コピーして追加します。
ここで実施している環境では以下3つがプライマリにあってスタンバイにないパラメータでしたので追加しました。
SINGLE 環境を作成する場合は instance_number、thread は設定不要です。
[oracle@racnodest1 ~]$ vi /tmp/pfile
ORCLST1.instance_number=1
ORCLST1.thread=1
ORCLST1.undo_tablespace='UNDOTBS1'
編集した PFILE で起動し、SPFILE を ASM へ登録します。
SQL> startup mount pfile='/tmp/pfile';
ORACLE instance started.
Total System Global Area 3942642408 bytes
Fixed Size 9143016 bytes
Variable Size 805306368 bytes
Database Buffers 3120562176 bytes
Redo Buffers 7630848 bytes
Database mounted.
SQL> create spfile='+DATA' from pfile='/tmp/pfile';
File created.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> exit
##6-2.リソース登録
スタンバイサイトで DB とインスタンスリソースを Clusterware に登録します。
RAC の場合と SINGLE の場合で登録の方法が異なります。
★RACの場合
[oracle@racnodest1 dbs]$ srvctl add database -db ORCLST -oraclehome $ORACLE_HOME -dbtype RAC -role PHYSICAL_STANDBY -startoption "MOUNT" -dbname ORCL -diskgroup 'DATA'
[oracle@racnodest1 dbs]$ srvctl add instance -db ORCLST -instance ORCLST1 -node racnodest1
SINGLE 環境の場合は以下の点が RAC の場合と異なります。
・ -dbtype に指定する値が RAC ではなく SINGLE
・ instance の登録が不要。
・ -node オプションが必要。
★SINGLEの場合
[oracle@racnodest1 dbs]$ srvctl add database -db ORCLST -oraclehome $ORACLE_HOME -dbtype SINGLE -role PHYSICAL_STANDBY -startoption "MOUNT" -dbname ORCL -diskgroup 'DATA' -node racnodest1
起動して確認します。MOUNT になっていれば正常です。
[oracle@racnodest1 ~]$ srvctl start database -db ORCLST
[oracle@racnodest1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE racnodest1 STABLE
ora.chad
ONLINE ONLINE racnodest1 STABLE
ora.net1.network
ONLINE ONLINE racnodest1 STABLE
ora.ons
ONLINE ONLINE racnodest1 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE racnodest1 STABLE
2 OFFLINE OFFLINE STABLE
3 OFFLINE OFFLINE STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE racnodest1 STABLE
2 OFFLINE OFFLINE STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE racnodest1 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE racnodest1 Started,STABLE
2 OFFLINE OFFLINE STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE racnodest1 STABLE
2 OFFLINE OFFLINE STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE racnodest1 STABLE
ora.orclst.db
1 ONLINE INTERMEDIATE racnodest1 Mounted (Closed),HOM
E=/u01/app/oracle/pr
oduct/19.3.0/dbhome_
1,STABLE
ora.qosmserver
1 ONLINE ONLINE racnodest1 STABLE
ora.racnodest1.vip
1 ONLINE ONLINE racnodest1 STABLE
ora.scan1.vip
1 ONLINE ONLINE racnodest1 STABLE
--------------------------------------------------------------------------------
##6-3.Redo 適用プロセス(MRP)の起動
立ち上げたばかりのスタンバイ DB は Redo 適用プロセス(MRP)が起動していません。
まず、MRP の状態とラグを確認します。
MRP0 プロセスが存在せず、Redo 適用はされていないことがわかります。
また、ラグの確認でも apply lag が表示されておらず Redo 適用がされていないことが確認できます。
[oracle@racnodest1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 26 10:56:18 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> set line 1000 pages 1000
SQL> col value for a32
SQL> select PROCESS,PID,STATUS,THREAD#,SEQUENCE# from v$managed_standby where process='MRP0';
no rows selected
SQL> select SOURCE_DB_UNIQUE_NAME, NAME, VALUE, UNIT from v$dataguard_stats;
SOURCE_DB_UNIQUE_NAME NAME VALUE UNIT
-------------------------------- -------------------------------- -------------------------------- ------------------------------
ORCL transport lag +00 00:00:00 day(2) to second(0) interval
ORCL apply lag day(2) to second(0) interval
ORCL apply finish time day(2) to second(3) interval
estimated startup time 47 second
SQL>
以下のコマンドで MRP を起動します。
SQL> alter database recover managed standby database disconnect;
再度 MRP の状態とラグを確認します。
MRP0 プロセスのステータスが APPLYING_LOG となり、apply lag の値が +00 00:00:00 (適用遅延なし)となったことが確認できました。
SQL> select PROCESS,PID,STATUS,THREAD#,SEQUENCE# from v$managed_standby where process='MRP0';
PROCESS PID STATUS THREAD# SEQUENCE#
--------- ------------------------ ------------ ---------- ----------
MRP0 25658 APPLYING_LOG 1 17
SQL> select SOURCE_DB_UNIQUE_NAME, NAME, VALUE, UNIT from v$dataguard_stats;
SOURCE_DB_UNIQUE_NAME NAME VALUE UNIT
-------------------------------- -------------------------------- -------------------------------- ------------------------------
ORCL transport lag +00 00:00:00 day(2) to second(0) interval
ORCL apply lag +00 00:00:00 day(2) to second(0) interval
ORCL apply finish time day(2) to second(3) interval
estimated startup time 47 second
SQL>
参考に、MRP を止める際は以下のコマンドで停止します。
SQL> alter database recover managed standby database cancel;
##6-4.Oracle Net の再設定
listener.ora に記載した静的リスナは Duplicate 用のため、既に不要となっているため削除します。
[oracle@racnodest1 ~]$ cd $ORACLE_HOME/network/admin
[oracle@racnodest1 admin]$ ls
listener.ora samples shrept.lst tnsnames.ora
[oracle@racnodest1 admin]$ rm listener.ora
[oracle@racnodest1 admin]$ lsnrctl stop
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 31-JAN-2022 08:56:19
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-01190: The user is not authorized to execute the requested listener command
[oracle@racnodest1 admin]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 26-JAN-2022 07:09:09
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 26-JAN-2022 07:08:07
Uptime 0 days 0 hr. 1 min. 1 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.3.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/racnodest1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.1.152)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.1.162)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "ORCLST" has 1 instance(s).
Instance "ORCLST1", status READY, has 1 handler(s) for this service... ★静的リスナで登録したORCLSTサービスのUNKNOWNがなくなり、動的リスナのステータスREADYになっていることを確認
The command completed successfully
tnsnames.ora の (UR=A) の記述も同じく不要となっているため削除します(両サイトで実施)
[oracle@racnode1 ~]$ cd $ORACLE_HOME/network/admin
[oracle@racnode1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
ORCLST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnodest1)(PORT = 1521))
(CONNECT_DATA = ★(UR=A)を削除
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLST)
)
)