レック・テクノロジー・コンサルティング株式会社TECH BLOG

Standard Edition High Availability(SEHA)を導入してみた

はじめに

以前のブログで「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
https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/configuring-standard-edition-high-availability.html#GUID-B4071766-F926-469F-9F9E-AB82E62236C8

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/<DB名>/adump
 ・/u01/app/oracle/admin/<DB名>/dpdump
 ・/u01/app/oracle/admin/<DB名>/pfile
 ・/u01/app/oracle/admin/<DB名>/scripts
 ・/u01/app/oracle/admin/<DB名>/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,STABLE

続いて、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,STABLE

2号機で問題なく稼働していることを確認できましたら、SEHAの導入としては以上となります。
その他の設定については、要件に合わせて設定をしてください。

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る