はじめに
Standard Edition High Availability Released - See What's Newのブログでアナウンスされていたように、19.7からStandard EditionのHigh Availability構成がサポートされるようになった。19cからSERACが廃止されたため、これはうれしいエンハンスメント。
なので、さっそく試してみた。
Oracle Cloud でも使えるようになってほしいな。。
事前準備
- Grid Infrastructure 19.7をインストールする
- Oracle Database 19.3のインストールメディア(zipファイル)をダウンロードして、ORACLE_HOMEディレクトリに展開する
- RU 19.7のzipファイルをダウンロードして作業ディレクトリに展開する
あとは、Installing Standard Edition High Availability Database Software on Local File Systemを見ながらインストールする
ソフトウェアインストール
- インストーラを起動
runInstaller.shの引数にappplyRUを指定し、RU19.7を展開したディレクトリを指定する。
(こんな便利オプションあったのですね。)
(node_1)# su - oracle
(node_1)$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
(node_1)$ mkdir -p $ORACLE_HOME
(node_1)$ unzip -q /path/to/19.3_installer.zip -d $ORACLE_HOME
(node_1)$ unzip -q /path/to/19.7_RU.zip -d /path/to/work_directory/
(node_1)$ cd $ORACLE_HOME
(node_1)$ ./runInstaller -applyRU /path/to/work_directory/patch_ID
Preparing the home to patch...
Applying the patch /u01/app/installer/DB/30899722/...
(node_1)# /u01/app/oracle/product/19.0.0.0/dbhome_1/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/19.0.0.0/dbhome_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Oracle Trace File Analyzer (TFA - Standalone Mode) is available at :
/u01/app/oracle/product/19.0.0.0/dbhome_1/bin/tfactl
-
Note :
1. tfactl will use TFA Service if that service is running and user has been granted access
2. tfactl will configure TFA Standalone Mode only if user has no access to TFA Service or TFA is not installed
(node_1)$ $ORACLE_HOME/OPatch/opatch lspatches
30894985;OCW RELEASE UPDATE 19.7.0.0.0 (30894985)
30869156;Database Release Update : 19.7.0.0.200414 (30869156)
OPatch succeeded.
ノード追加
- ノード2で、インストールディレクトリを作成する
(node_2)# mkdir /u01/app/oracle
(node_2)# chown oracle.oinstall /u01/app/oracle
- ノード1から、ノードを追加する
ドキュメントに明示的に記載がなかったが、SSHの透過設定が必要な気がしたので一応先に設定。それから、addnode.shを実行
(node_1)# su - oracle
(node_1)# ssh node_2 hostname
node_2 #追加するノードに、パスワード入力を求められずにログインできることの確認
(node_1)$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
(node_1)$ $ORACLE_HOME/addnode/addnode.sh -silent CLUSTER_NEW_NODES=node_2
[WARNING] [INS-13014] Target environment does not meet some optional requirements.
CAUSE: Some of the optional prerequisites are not met. See logs for details. /u01/app/oraInventory/logs/addNodeActions2020-05-09_07-55-29AM.log
ACTION: Identify the list of failed prerequisite checks from the log: /u01/app/oraInventory/logs/addNodeActions2020-05-09_07-55-29AM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the
# → SWAPが足りてないため、警告が出力されてた
prerequisites and fix it manually.
Prepare Configuration in progress.
Prepare Configuration successful.
.................................................. 7% Done.
Copy Files to Remote Nodes in progress.
.................................................. 12% Done.
.................................................. 18% Done.
..............................
Copy Files to Remote Nodes successful.
You can find the log of this install session at:
/u01/app/oraInventory/logs/addNodeActions2020-05-09_07-55-29AM.log
Instantiate files in progress.
Instantiate files successful.
.................................................. 52% Done.
Saving cluster inventory in progress.
.................................................. 89% Done.
Saving cluster inventory successful.
The Cluster Node Addition of /u01/app/oracle/product/19.0.0.0/dbhome_1 was successful.
Please check '/u01/app/oraInventory/logs/silentInstall2020-05-09_07-55-29AM.log' for more details.
Setup Oracle Base in progress.
Setup Oracle Base successful.
.................................................. 96% Done.
As a root user, execute the following script(s):
1. /u01/app/oracle/product/19.0.0.0/dbhome_1/root.sh
Execute /u01/app/oracle/product/19.0.0.0/dbhome_1/root.sh on the following nodes:
[node_2]
Successfully Setup Software with warning(s).
.................................................. 100% Done.
# rootユーザからroot.shを実行
(node_2)$ exit
(node_2)# /u01/app/oracle/product/19.0.0.0/dbhome_1/root.sh
Check /u01/app/oracle/product/19.0.0.0/dbhome_1/install/root_node_2_2020-05-09_08-05-52-791477457.log for the output of root script
(node_2)# su - oracle
(node_2)$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
(node_2)$ $ORACLE_HOME/OPatch/opatch lspatches
30894985;OCW RELEASE UPDATE 19.7.0.0.0 (30894985)
30869156;Database Release Update : 19.7.0.0.200414 (30869156)
OPatch succeeded.
データベースの作成
- 環境変数の設定
(node_1)# su - oracle
(node_1)$ vi .bashrc
// 以下を追記
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
export PATH=${ORACLE_HOME}/bin:${PATH}
(node_1)$ . .bashrc
(node_2)# su - oracle
(node_2)$ vi .bashrc
// 以下を追記
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
export PATH=${ORACLE_HOME}/bin:${PATH}
- DBCAを起動
(node_1) $ dbca
-
Database typeに、「Oracle single instance database」を選択
-
データベース名を指定
-
「Use following for database storage attributes」を選択して、ASMに格納されるようにする
(node_1)# su - grid
(node_1)$ crsctl stat res -w "TYPE = ora.database.type" -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orcl.db
1 ONLINE ONLINE node_1 Open,HOME=/u01/app/o
racle/product/19.0.0
.0/dbhome_1,STABLE
--------------------------------------------------------------------------------
事後設定
- local_listenerパラメータの調整
DBCAでDB作成時、local_listener初期化パラメータが静的に登録されている。ドキュメントにあるように、この設定をリセットしてGIによって動的に登録されるように変更する
(node_1)$ export ORACLE_SID=orcl
(node_1)$ sqlplus / as sysdba
(node_1)SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string LISTENER_ORCL
→ LISTENER_<DB名>がセットされているのでクリアする
(node_1)SQL> alter system reset local_listener;
(node_1)SQL> show parameter remote_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_listener string node_1-scan.xxx.xxx.oraclevcn.com:1521
→ remote_listenerには、GIが動的にscanを設定している
(node_1)SQL> exit
(node_1)$ srvctl stop database
(node_1)$ srvctl start database -db orcl
(node_1)$ sqlplus / as sysdba
(node_1)SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=
10.0.10.16)(PORT=1521))
→ GI Agentによって自動登録されていること
- SEHAの有効化
データベース設定を修正して、2号機にF/Oできるようにする
(node_1)$ srvctl modify database -db orcl -node node_1,node_2 # node_2を追加する
(node_1)$ srvctl config database -db orcl
///
Configured nodes: node_1,node_2 # 追加されていること
///
- 監査ログ用ディレクトリの作成 (必要な気がしたので)
2号機で、監査ログ用のディレクトリを作成しておく
(node_2)# su - oracle
(node_2)$ mkdir -p /u01/app/oracle/admin/<DB名>/adump
(node_2)$ mkdir -p /u01/app/oracle/audit
- パスワードファイルのコピー (必要な気がしたので)
パスワードファイルはローカルに作成されていたので、コピーする
(node_2)# su - oracle
(node_2)$ cd $ORACLE_HOME/dbs
(node_2)$ scp -p node_1:$PWD/orapw* .
- Enterprise Manager Expressの接続設定
DB作成時にEM Expressの設定もしたため、接続確認する。EM Expressへは、いくつか設定を修正しないと接続できなかった。
まず、OSパーミッション設定によりgridユーザがwalletを参照できなかったので、これを修正する
(node_1)# ls -l /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/orcl/xdb_wallet
total 8
-rw------- 1 oracle asmadmin 3864 May 9 09:03 cwallet.sso
-rw------- 1 oracle asmadmin 3819 May 9 09:03 ewallet.p12
→ 640なので、gridが見れない
(node_1)# chmod 640 /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/orcl/xdb_wallet/*wallet*
2号機にF/Oしたときにもwalletが必要なのでコピーしておく
(node_2)# su - oracle
(node_2)$ mkdir -p /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/orcl/xdb_wallet/
(node_2)$ cd /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/orcl/xdb_wallet/
(node_2)$ scp -p node_1:$PWD/* .
(node_2)$ ll
total 8
-rw-r----- 1 oracle oinstall 3864 May 9 09:03 cwallet.sso
-rw-r----- 1 oracle oinstall 3819 May 9 09:03 ewallet.p12
(node_2)$ exit
(node_2)$ chgrp asmadmin /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/orcl/xdb_wallet/*wallet*
(node_2)$ # ll /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/orcl/xdb_wallet/
total 8
-rw-r----- 1 oracle asmadmin 3864 May 9 09:03 cwallet.sso
-rw-r----- 1 oracle asmadmin 3819 May 9 09:03 ewallet.p12
単一ポートから、各CDB/PDBに接続できるようにGlobalPortを有効にしてあげる
SQL> exec dbms_xdb_config.SetGlobalPortEnabled(TRUE)
つながった
ただ、Standard Editionだとパフォーマンス系の情報がほとんどみれないため、意味ないかもしれない。
正常系の動作確認
- stop/startで2号機で起動する
(node_1)$ srvctl stop database -db orcl
(node_1)$ srvctl start database -db orcl -node node_2
(node_1)$ /u01/app/19.0.0.0/grid/bin/crsctl stat res -w "TYPE = ora.database.type" -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orcl.db
1 ONLINE ONLINE node_2 Open,HOME=/u01/app/o
racle/product/19.0.0
.0/dbhome_1,STABLE
--------------------------------------------------------------------------------
→ 2号機で起動した
(node_1)$ srvctl stop database -db orcl
(node_1)$ srvctl start database -db orcl -node node_1
(node_1)$ /u01/app/19.0.0.0/grid/bin/crsctl stat res -w "TYPE = ora.database.type" -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orcl.db
1 ONLINE ONLINE node_1 Open,HOME=/u01/app/o
racle/product/19.0.0
.0/dbhome_1,STABLE
--------------------------------------------------------------------------------
- relocateする
relocateコマンドが使えるが、RAC Oneのように、一時的にRAC構成になってから片方停止するわけではなく、完全停止してから起動する動きだった。ワンコマンドで実行できること以外、stop/startとほぼ同じかな
(node_1)$ srvctl relocate database -db orcl -node node_2
(node_1)$ /u01/app/19.0.0.0/grid/bin/crsctl stat res -w "TYPE = ora.database.type" -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orcl.db
1 ONLINE ONLINE node_2 Open,HOME=/u01/app/o
racle/product/19.0.0
.0/dbhome_1,STABLE
--------------------------------------------------------------------------------
(node_1)$ srvctl relocate database -db orcl -node node_1
F/O確認
F/O動作を確認してみる
- クラスタリソースの確認
まず、F/O関連の属性値は以下のように設定されている
CHECK_INTERVALは900で、RESTART_ATTEMPTSは2。CHECK_INTERVALが900になってるが、インスタンス障害はほぼ即時に検知/再起動していた
(node_1)$ /u01/app/19.0.0.0/grid/bin/crsctl stat res ora.orcl.db -p
…
AUTO_START=restore
…
CHECK_INTERVAL=900
…
DATABASE_TYPE=SINGLE
…
RESTART_ATTEMPTS=2
RESTART_ATTEMPTSが2なので、3回連続で起動に失敗すると対向ノードにF/Oするはず
(node_1)$ date; pkill -f ora_smon
→ 起動してくるのを待つ。node_1で再起動した。
(node_1)$ date; pkill -f ora_smon
→ 起動してくるのを待つ。node_1で再起動した。
(node_1)$ date; pkill -f ora_smon
→ node_2側で起動を開始したことを確認
Sat May 9 15:31:40 JST 2020
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orcl.db
1 ONLINE OFFLINE node_2 Instance Shutdown,ST
ARTING
--------------------------------------------------------------------------------
…
Sat May 9 15:32:16 JST 2020
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orcl.db
1 ONLINE ONLINE node_2 Open,HOME=/u01/app/o
racle/product/19.0.0
.0/dbhome_1,STABLE
--------------------------------------------------------------------------------
→ node_2にF/O完了
期待どおりの動きになっていた。