Oracle Database Global Data Services構築 その2

# Global Data Servicesカタログの作成
GDS構成情報やステータス情報を格納するためのカタログをGDSカタログデータベースに作成します。

:::note info
SPFILEを使用するOracle Database 12c以上のデータベースが必要です
:::

GDSカタログデータベースは、GSMと同一のノードに作成しています。dbcaで作成した直後の状態です。
| # | 値 |
|:-|:-|
| ホスト名  | gsm01  |
| DBリスナポート  | 1521  |
| インスタンス名  | ccatdb  |
| PDB接続用サービス名  | catdb  |

sqlplusを使用して、データベースに接続します。
```
[oracle@gsm01 ~]$ sqlplus sys@//gsm01:1521/catdb AS SYSDBA
パスワードを入力してください:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
```
GDS管理者のDBアカウント gsm_admin を作成します。作成後、gsmadmin_roleロールを付与します。
```
SQL> CREATE USER gsm_admin IDENTIFIED BY welcome1 DEFAULT TABLESPACE users;

ユーザーが作成されました。

SQL> GRANT gsmadmin_role TO gsm_admin;

権限付与が成功しました。
```
GDSカタログの作成は、GSMに付属する gdsctl コマンドラインツールを使用して行います。gsmアカウントにて、gdsctlを起動します。
```
[gsm@gsm01 ~]$ gdsctl
GDSCTL: リリース19.0.0.0.0 - Production Thu May 04 16:54:46 JST 2023

Copyright (c) 2011, 2019, Oracle.  All rights reserved.

GDSCTLへようこそ。詳細は"help"と入力してください。

警告: gsm.oraにGSMエントリが含まれていないため、GSMは自動的に設定されません。"set  gsm"コマンドを使用して、セッションのGSMを設定してください。
現在のGSMはGSMORAに設定されています
```
create gdscatalog コマンドを実行し、カタログを作成します。
* -database パラメータにカタログデータベースへの接続情報を指定します。
* -user パラメータに、先ほど作成したGSM管理者のDBアカウントを指定します。
```
GDSCTL> create gdscatalog -database gsm01:1521/catdb -user gsm_admin
"gsm_admin" パスワード:
カタログが作成されました
```
以上でGDSカタログデータベースの作成が完了です。

# Global Service Managerの作成
GDSカタログデータベースにデフォルトで存在するgsmcatuserアカウントのアカウントロックを解除します。gsmcatuserは共通ユーザのため、CDB$ROOTに接続して実施します。
```
[oracle@gsm01 ~]$ sqlplus / AS SYSDBA
接続されました。

SQL> COL username FORM a25
SQL> SELECT username, account_status, con_id FROM cdb_users WHERE username = 'GSMCATUSER';

USERNAME                  ACCOUNT_STATUS                       CON_ID
------------------------- -------------------------------- ----------
GSMCATUSER                LOCKED                                    1
GSMCATUSER                LOCKED                                    3

SQL> ALTER USER gsmcatuser ACCOUNT UNLOCK;

ユーザーが変更されました。

SQL> PASSWORD gsmcatuser
gsmcatuserに対するパスワードを変更しています。
新規パスワード:
新規パスワードを再入力してください:
パスワードが変更されました。

SQL> SELECT username, account_status, con_id FROM cdb_users WHERE username = 'GSMCATUSER';

USERNAME                  ACCOUNT_STATUS                       CON_ID
------------------------- -------------------------------- ----------
GSMCATUSER                OPEN                                      1
GSMCATUSER                OPEN                                      3
```
gdsctlのadd gsmコマンドを使用して、GSMを作成します。
* -gsmパラメータに、GSMの名称を指定します。
* -listenerパラメータにGSMのポート番号を指定します。
* -catalogパラメータに、GDSカタログデータベースの接続情報を指定します。

add gsmを実行すると、先ほど、アカウントロックを解除したgsmcatuserのパスワードを求められます。
```
GDSCTL> add gsm -gsm gsm_lis1 -listener 1531 -catalog gsm01:1521/catdb
"gsmcatuser" パスワード:
GSMが正常に追加されました
```
start gsm コマンドを使用して、GSMを起動します。
* -gsmパラメータに先ほど作成したGSM名を指定します。

起動後、STATUSコマンドにて状態を確認します。GSMが、gsm01サーバのポート1531を使用している事などが確認できます。
```
GDSCTL> start gsm -gsm gsm_lis1
GSMが正常に起動しました

GDSCTL> status
別名                            GSM_LIS1
バージョン                      19.0.0.0.0
開始日                          04-MAY-2023 18:03:20
トレース・レベル                off
リスナー・ログ・ファイル        /u01/app/gsm/diag/gsm/gsm01/gsm_lis1/alert/log.xml
リスナー・トレース・ファイル    /u01/app/gsm/diag/gsm/gsm01/gsm_lis1/trace/ora_23180_139625490500672.trc
エンドポイント・サマリー        (ADDRESS=(HOST=gsm01.besite)(PORT=1531)(PROTOCOL=tcp))
GSMOCIのバージョン              3.0.180702
マスター                        Y
GDSカタログYに接続
プロセスID                      23183
再接続回数                      0
保留中のタスク。          合計  0
処理中のタスク。          合計  1
リージョン・マスター            TRUE
パブリッシュ済メッセージ合計数  0
タイムゾーン                    +09:00
孤立したバディ・リージョン:
     なし
GDSリージョン                regionora
```
# リージョンの作成
add regionコマンドを使用して、Tokyo1, Tokyo2という名称の2つのリージョンを追加します。デフォルトのリージョンを使用する事も可能なため、本手順は必須ではありません。
* -regionパラメータに、リージョン名を指定します。複数ある場合はカンマ区切りで複数指定が可能です。

```
GDSCTL> add region -region Tokyo1,Tokyo2
操作は正常に完了しました
```
config regionコマンドを実行し、リージョンの一覧を確認します。先ほど作成した二つのリージョンが追加されていることが確認できます。
```
GDSCTL> config region
名前                            バディ
--                            ---
regionora
tokyo1
tokyo2
```
次回に続きます。