Oracle RACのSCAN IPを2つで設定してみる
はじめに
今までSCAN IPは1つか3つで設定してきました。
マニュアルにはSCAN IPは3つが推奨と書いてありますが、DBノードが2つだったらSCAN IP(LISTENER)も2つで設定すれば無駄がない?
試したことがなかったので、すでにあるSCAN 3つの環境を2つヘ変更するベースで手順を確認しました。
これができるなら、インストール時も問題ないはず。
結論
SCAN IPを2つでも設定できる。
環境
手順
事前確認
まずは、設定を確認していきます。
- SCAN IP
[root@ron1901 ~]# /u01/app/19.0.0/grid/bin/srvctl config scan SCAN name: ronscan19, Network: 1 Subnet IPv4: 172.16.2.0/255.255.255.0/ens192, static Subnet IPv6: SCAN 1 IPv4 VIP: 172.16.2.37 SCAN VIP is enabled. SCAN 2 IPv4 VIP: 172.16.2.35 SCAN VIP is enabled. SCAN 3 IPv4 VIP: 172.16.2.36 SCAN VIP is enabled.
- SCAN_LISTENER config
[root@ron1901 ~]# /u01/app/19.0.0/grid/bin/srvctl config scan_listener SCAN Listeners for network 1: Registration invited nodes: Registration invited subnets: Endpoints: TCP:1521 SCAN Listener LISTENER_SCAN1 exists SCAN Listener is enabled. SCAN Listener LISTENER_SCAN2 exists SCAN Listener is enabled. SCAN Listener LISTENER_SCAN3 exists SCAN Listener is enabled.
- SCAN_LISTENER status
[grid@ron1901 ~]$ lsnrctl status LISTENER_SCAN2 LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 12-DEC-2020 17:26:17 Copyright (c) 1991, 2020, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2))) STATUS of the LISTENER ------------------------ Alias LISTENER_SCAN2 Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 12-DEC-2020 16:09:55 Uptime 0 days 1 hr. 16 min. 21 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/19.0.0/grid/network/admin/listener.ora Listener Log File /u01/app/grid/diag/tnslsnr/ron1901/listener_scan2/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN2))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.2.35)(PORT=1521))) Services Summary... Service "-MGMTDBXDB" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... Service "86b638145ff27a6fe053f706e80a81f1" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... Service "RON" has 1 instance(s). Instance "RON_1", status READY, has 1 handler(s) for this service... Service "RONXDB" has 1 instance(s). Instance "RON_1", status READY, has 1 handler(s) for this service... Service "SVRON" has 1 instance(s). Instance "RON_1", status READY, has 1 handler(s) for this service... Service "_mgmtdb" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... Service "b3373e9486742742e0531f0210ac53a7" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... Service "gimr_dscrep_10" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... The command completed successfully
- SCANリソース
[root@ron1901 ~]# /u01/app/19.0.0/grid/bin/crsctl stat res ora.scan1.vip ora.scan2.vip ora.scan3.vip ora.LISTENER_SCAN1.lsnr ora.LISTENER_SCAN2.lsnr ora.LISTENER_SCAN3.lsnr -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE ron1902 STABLE ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE ron1901 STABLE ora.LISTENER_SCAN3.lsnr 1 ONLINE ONLINE ron1901 STABLE ora.scan1.vip 1 ONLINE ONLINE ron1902 STABLE ora.scan2.vip 1 ONLINE ONLINE ron1901 STABLE ora.scan3.vip 1 ONLINE ONLINE ron1901 STABLE --------------------------------------------------------------------------------
- DBのリスナー設定
[oracle@ron1901 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sat Dec 12 17:47:16 2020 Version 19.8.0.0.0 Copyright (c) 1982, 2020, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.8.0.0.0 SQL> SQL> show parameter listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ forward_listener string listener_networks string local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST= 172.16.2.33)(PORT=1521)) remote_listener string ronscan19:1521 SQL>
SCAN IP(SCAN名)の変更
- 現在はronscan19を使っていますが、2つのIPでラウンドロビンされるtestscanへ変更してみます。
[root@ron1901 ~]# nslookup ronscan19 Server: 172.16.2.17 Address: 172.16.2.17#53 Name: ronscan19.lab.local Address: 172.16.2.35 Name: ronscan19.lab.local Address: 172.16.2.36 Name: ronscan19.lab.local Address: 172.16.2.37 [root@ron1901 ~]# [root@ron1901 ~]# nslookup testscan Server: 172.16.2.17 Address: 172.16.2.17#53 Name: testscan.lab.local Address: 172.16.2.50 Name: testscan.lab.local Address: 172.16.2.51
本番環境ではないのでアグレッシブに変更します。
[root@ron1901 ~]# /u01/app/19.0.0/grid/bin/srvctl modify scan -scanname testscan [root@ron1901 ~]#
先ほど確認した内容を一通り確認していきます。
- SCAN IP
[root@ron1901 ~]# /u01/app/19.0.0/grid/bin/srvctl config scan SCAN name: testscan, Network: 1 Subnet IPv4: 172.16.2.0/255.255.255.0/ens192, static Subnet IPv6: SCAN 1 IPv4 VIP: 172.16.2.51 SCAN VIP is enabled. SCAN 2 IPv4 VIP: 172.16.2.50 SCAN VIP is enabled.
- SCAN_LISTENER config
[root@ron1901 ~]# /u01/app/19.0.0/grid/bin/srvctl config scan_listener SCAN Listeners for network 1: Registration invited nodes: Registration invited subnets: Endpoints: TCP:1521 SCAN Listener LISTENER_SCAN1 exists SCAN Listener is enabled. SCAN Listener LISTENER_SCAN2 exists SCAN Listener is enabled.
- SCAN_LISTENER status
[grid@ron1901 ~]$ lsnrctl status LISTENER_SCAN2 LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 12-DEC-2020 18:13:27 Copyright (c) 1991, 2020, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2))) STATUS of the LISTENER ------------------------ Alias LISTENER_SCAN2 Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 12-DEC-2020 16:09:55 Uptime 0 days 2 hr. 3 min. 32 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/19.0.0/grid/network/admin/listener.ora Listener Log File /u01/app/grid/diag/tnslsnr/ron1901/listener_scan2/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN2))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.2.50)(PORT=1521))) Services Summary... Service "-MGMTDBXDB" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... Service "86b638145ff27a6fe053f706e80a81f1" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... Service "RON" has 1 instance(s). Instance "RON_1", status READY, has 1 handler(s) for this service... Service "RONXDB" has 1 instance(s). Instance "RON_1", status READY, has 1 handler(s) for this service... Service "SVRON" has 1 instance(s). Instance "RON_1", status READY, has 1 handler(s) for this service... Service "_mgmtdb" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... Service "b3373e9486742742e0531f0210ac53a7" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... Service "gimr_dscrep_10" has 1 instance(s). Instance "-MGMTDB", status READY, has 1 handler(s) for this service... The command completed successfully [grid@ron1901 ~]$
- SCAN リソース
[root@ron1901 ~]# /u01/app/19.0.0/grid/bin/crsctl stat res ora.scan1.vip ora.scan2.vip ora.scan3.vip ora.LISTENER_SCAN1.lsnr ora.LISTENER_SCAN2.lsnr ora.LISTENER_SCAN3.lsnr -t CRS-2613: Could not find resource 'ora.scan3.vip'. CRS-2613: Could not find resource 'ora.LISTENER_SCAN3.lsnr'. -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE ron1902 STABLE ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE ron1901 STABLE ora.scan1.vip 1 ONLINE ONLINE ron1902 STABLE ora.scan2.vip 1 ONLINE ONLINE ron1901 STABLE --------------------------------------------------------------------------------
- DBのリスナー設定
[oracle@ron1901 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sat Dec 12 18:20:31 2020 Version 19.8.0.0.0 Copyright (c) 1982, 2020, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.8.0.0.0 SQL> show parameter listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ forward_listener string listener_networks string local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST= 172.16.2.33)(PORT=1521)) remote_listener string testscan:1521 SQL>
リソースの調整と初期化パラメータremote_listenerまで書き換えてくれていました。
databaseのalert logには、以下が出力されていました。
[oracle@ron1901 oracle]$ cd $ORACLE_BASE/diag/rdbms/ron/RON_1/trace [oracle@ron1901 trace]$ tailf alert_RON_1.log 2020-12-12T18:06:44.251412+09:00 ALTER SYSTEM SET remote_listener=' ronscan19:1521','testscan:1521' SCOPE=MEMORY SID='RON_1'; 2020-12-12T18:06:44.257388+09:00 ALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='RON_1'; 2020-12-12T18:06:46.344161+09:00 ALTER SYSTEM SET remote_listener=' ronscan19:1521','testscan:1521' SCOPE=MEMORY SID='RON_1'; 2020-12-12T18:06:46.347674+09:00 ALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='RON_1'; 2020-12-12T18:06:48.572550+09:00 ALTER SYSTEM SET remote_listener=' testscan:1521' SCOPE=MEMORY SID='RON_1'; 2020-12-12T18:06:48.575824+09:00 ALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='RON_1'; 2020-12-12T18:06:50.970607+09:00 ALTER SYSTEM SET remote_listener=' testscan:1521' SCOPE=MEMORY SID='RON_1'; 2020-12-12T18:06:50.974416+09:00 ALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='RON_1'; 2020-12-12T18:06:56.254759+09:00 ALTER SYSTEM SET remote_listener=' testscan:1521' SCOPE=MEMORY SID='RON_1'; 2020-12-12T18:06:56.257965+09:00 ALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='RON_1';