みなさん、こんにちは!
以前、「SEHAとは」について紹介しましたが、今回はSEHAを実際に導入した方法について紹介していきたいと思います。
※SEHAとは、については以下弊社の技術ブログを参照いただけると幸いです。
https://www.reqtc.com/blog/oracle-seha.html
事前準備
1.Grid Infrastructure 19.3のクラスタを構成 (対象ノード:1号機および2号機)
2.事前に作成したORACLE_HOMEディレクトリにOracle Database 19.3のインストールメディアを展開する (対象ノード:1号機)
3.事前に作成した作業用ディレクトリにRU 19.22を展開する (対象ノード:1号機)
参考文献
Database Installation Guide for Linux-Installing Standard Edition High Availability
Oracle Databaseインストール
インストーラーを起動
それでは、さっそくSEHAを導入していきたいと思います。
まずはじめに、runInstallerを実行します。
その際に-applyRUオプションで適用するパッチを指定し、インストールを実行します。
パッチの適用後、インストーラーが起動します。
[oracle@reqdb01 ~]$ cd $ORACLE_HOME
[oracle@reqdb01 dbhome_1]$ ./runInstaller -applyRU /work/35940989
パッチを適用するホームの準備中...
パッチ/work/35940989の適用中...
パッチが正常に適用されました。
ログの格納場所: /u01/app/oraInventory/logs/xxx/installerPatchActions_xxx.log
Oracle Database設定ウィザードを起動中...
OUIでの設定項目
- 構成オプション
→「ソフトウェアのみの設定」を選択 - データベース・インストール・オプションの選択
→「単一インスタンス・データベースのインストール」を選択 - データベース・エディションの選択
→「Standard Edition 2」を選択
その他の項目については、要件に合わせて適宜設定をします。
ノード追加
1号機からaddnode.shを実行し、ノード2を追加します。
[oracle@reqdb01~]$export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
[oracle@reqdb01~]$$ORACLE_HOME/addnode/addnode.sh -silent CLUSTER_NEW_NODES=reqdb02
構成の準備が進行中です。
構成の準備が正常に終了しました。
.................................................. 7% 完了しました。
リモート・ノードへのファイルのコピーが進行中です。
.................................................. 12% 完了しました。
.................................................. 18% 完了しました。
..............................
リモート・ノードへのファイルのコピーが正常に終了しました。
このインストール・セッションのログは次の場所にあります:
/u01/app/oraInventory/logs/addNodeActionsYYYY-MM-DD_xxxx.log
ファイルを初期化しますが進行中です。
ファイルを初期化しますが正常に終了しました。
.................................................. 52% 完了しました。
クラスタ・インベントリを保存していますが進行中です。
.................................................. 89% 完了しました。
クラスタ・インベントリを保存していますが正常に終了しました。
/u01/app/oracle/product/19.0.0/dbhome_1のクラスタ・ノードの追加が成功しました。
詳細は'/u01/app/oraInventory/logs/silentInstallYYYY-MM-DD_xxxx.log'を確認してください。
Oracleベースの設定が進行中です。
Oracleベースの設定が正常に終了しました。
.................................................. 96% 完了しました。
rootユーザーとして次のスクリプトを実行します:
1. /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
次のノードで/u01/app/oracle/product/19.0.0/dbhome_1/root.shを実行してください:
[reqdb02]
Successfully Setup Software.
.................................................. 100% 完了しました。
[oracle@reqdb01 ~]$
rootユーザーでroot.shを実行します。(対象ノード:2号機)
[root@reqdb02 ~]# /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
データベースの作成
DBCAを実行し、データベースを作成します。
DBCAでの設定値については要件に合わせて設定してください。
[oracle@ reqdb01 ~]$ /u01/app/oracle/product/19.0.0/dbhome_1/bin/dbca
LOCAL_LISTENERパラメータの調整
DBCAでDB作成時、local_listener初期化パラメータが静的に登録されています。
この設定をリセットしてGIによって動的に登録されるように変更する必要があります。
1号機にて、SQL*Plusに接続し、以下を実行します。
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
forward_listener string
listener_networks string
local_listener string LISTENER_<DB名> ←★不要な設定
remote_listener string reqdb-cluster-scan:1521
SQL>
SQL> alter system reset local_listener scope = both;
System altered.
SQL>
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
forward_listener string
listener_networks string
local_listener string ←★設定がリセットされる
remote_listener string reqdb-cluster-scan:1521
その後、DBを再起動しlocal_listenerが自動登録されていることを確認します。
[oracle@reqdb01 ~]$ srvctl stop database -db <DB名>
[oracle@reqdb01 ~]$ srvctl start database -db <DB名>
[oracle@reqdb01 ~]$
[oracle@reqdb01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Aug 6 12:00:18 2024
Version 19.22.0.0.0
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.22.0.0.0
SQL>
SQL> show parameter listener
NAME TYPE VALUE
--------------------------- ----------- ------------------------------
forward_listener string
listener_networks string
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=
10.0.xx.xx)(PORT=1521)) ←★GI Agentによって自動登録される
remote_listener string reqdb-cluster-scan:1521
SQL> exit
稼働ノード追加
稼働ノードとして2号機をDBに登録します。
[oracle@reqdb01 ~]$ srvctl config database -db <DB名>
(略)
構成されたノード: reqdb01 ←★この時点ではノード1のみ
(略)
[oracle@reqdb01 ~]$
[oracle@reqdb01 ~]$ srvctl modify database -db <DB名> -node reqdb01,reqdb02
[oracle@reqdb01 ~]$
[oracle@reqdb01 ~]$ srvctl config database -db <DB名>
(略)
構成されたノード: reqdb01,reqdb02 ←★ノード2が追加されていること
(略)
その他、2号機で必要となるファイル・ディレクトリの作成
1.2号機にて、下記ディレクトリを作成する。
・/u01/app/oracle/admin//adump
・/u01/app/oracle/admin//dpdump
・/u01/app/oracle/admin//pfile
・/u01/app/oracle/admin//scripts
・/u01/app/oracle/admin//xdb_wallet
例)
mkdir -p /u01/app/oracle/admin/<DB名>/adump
2.1号機から2号機へwalletをコピーする
$ scp /u01/app/oracle/admin/<DB名>/xdb_wallet/* oracle@ reqdb02:/u01/app/oracle/admin/<DB名>/xdb_wallet/.
3.1号機から2号機へパスワード・ファイルをコピーする
$ scp /u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapw<DB名> oracle@ reqdb02:/u01/app/oracle/product/19.0.0/dbhome_1/dbs/.
動作確認
現在1号機で稼働していることを確認します。
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.<DB名>.db
1 ONLINE ONLINE reqdb01 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,S
続いて、DB起動の際にノード2を指定し、2号機で起動します。
[oracle@reqdb01 ~]$ srvctl stop database -db <DB名>
[oracle@reqdb01 ~]$
[oracle@reqdb01 ~]$ srvctl start database -db <DB名> -node reqdb02
[oracle@reqdb01 ~]$
[oracle@reqdb01 ~]$ /u01/app/19.0.0/grid/bin/crsctl stat res -w "TYPE = ora.database.type" -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.<DB名>.db
1 ONLINE ONLINE reqdb02 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,STABL
2号機で問題なく稼働していることを確認できましたら、SEHAの導入としては以上となります。
その他の設定については、要件に合わせて設定をしてください。