22
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[謹賀新年] 世界中に配置した Oracle Active Data Guard から新年のご挨拶

Last updated at Posted at 2025-01-07

謹賀新年
世界各国の言葉で新年のご挨拶をお届けします!

Oracle Active Data Guard 19c では、スタンバイ・データベースで DML(INSERT/UPDATE/DELETE)が実行可能となり、真の Active Data Guard が実現しました。
これにより、世界各国に配置されたデータベースに現地の言葉を INSERT し、そのデータを 各Database で SELECT して表示することが可能です。

今回は、各国の言葉で新年の挨拶を入力し、世界中の Oracle データベースを通じて皆さまにお届けします。

■ 構成

構成.jpg
Active Data Guard で構成された各 Databaseへ、日本語、英語、ドイツ語、フランス語、アラビア語、ヒンディー語、タイ語、韓国語、ヘブライ語など、各地域の言語でデータを INSERT し、SELECT を通じて新年のご挨拶をお届けします(図示の通り)。

・ 各国語の新年のご挨拶
 - 日本語: あけまして おめでとうございます
 - 英語: Happy New Year
 - ヘブライ語: שנה טובה
 - ドイツ語: Ein gutes neues Jahr
 - フランス語: Bonne année
 - ヒンドゥ語: नया साल मुबारक हो
 - 韓国語: 새해 복 많이 받으세요
 - 中国語: 新年快乐
 - タイ語: สวัสดีปีใหม่ ค่ะ

■ Oracle Active Data Guard のREDO転送制御

Oracle Data Guard Broker は、Oracle Data Guard構成の作成、メンテナンスおよび監視を自動化および集中化する分散管理フレームワークです。
RedoRoutes プロパティを使用してREDO転送を制御することができ、Standby Databaseが複数ある場合、次のように様々なREDO転送ルートを構成することができます。

構成.jpg

今回、各国でINSERTした現地の言葉が世界中を巡るようカスケード転送で複数の Database を直列に輪っかになるリング・トポロジー構成で地球一周するようREDO転送させます。

■ Oracle Active Data Guard 各国構成

前回構成した環境をします。
東京リージョンは TOKYO と SHIBUYA を Loacal Data Guard として作成し、TOKYOを始点、SHIBUYAを終点となるように構成して、TOKYO → PHOENIX → ASHBURN → FRANKFURT → MUMBAI → SEOUL → OSAKA → SHIBUYA(Tokyo Region) へ世界一周するよう直列に REDO転送するように Data Guardを構成します。

■ Active Data Guard の DML操作有効化

各Database毎にセッション単位、永続単位で個別設定できます。

● セッション単位

現在のセッションの DML 操作の自動リダイレクトを構成するには、次のコマンドを使用します。

SQL> ALTER SESSION ENABLE ADG_REDIRECT_DML;

● 永続単位

Active Data Guard環境ですべてのスタンバイ・セッションのDML操作の自動リダイレクトを構成するには、ADG_REDIRECT_DML初期化パラメータを TRUE に設定します。

SQL> ALTER SYSTEM SET ADG_REDIRECT_DML=true SCOPE=BOTH;

■ WORLD Table 作成

各国からの言葉をINSERTするためのテーブルを作成します。

CREATE TABLE WORLD
  (
  VAL VARCHAR2(50),
  REGION VARCHAR2(20)
  ) 
;

■ 新年の挨拶 INSERT

各リージョンの言語で SQL接続して、新年のご挨拶を INSERTします。

 ・各国語の「あけましておめでとう」はこちらを参照

● Tokyo Region (Primary)

[oracle@db-tokyo1 ~]$ export NLS_LANG=Japanese_Japan.AL32UTF8
[oracle@db-tokyo1 ~]$ sqlplus WORLD/<Password>@TOKYO 

	SQL*Plus: Release 19.0.0.0.0 - Production on 月 1月 2 13:04:34 2023
	Version 19.17.0.0.0

	Copyright (c) 1982, 2022, Oracle.  All rights reserved.

	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.17.0.0.0
	に接続されました。

WORLD@TOKYO SQL> INSERT INTO world (val,region) SELECT 'あけまして おめでとうございます', DB_UNIQUE_NAME from v$database;

	1行が作成されました。

● Phoenix Region (Standby)

新年のご挨拶は、英語の 'Happy New Year' を INSERT します。

[oracle@db-phoenix1 ~]$ export NLS_LANG=American_America.AL32UTF8
[oracle@db-phoenix1 ~]$ sqlplus world/<Password>@PHOENIX 

	SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jan 2 13:07:06 2023
	Version 19.17.0.0.0

	Copyright (c) 1982, 2022, Oracle.  All rights reserved.

	Connected to:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.17.0.0.0


WORLD@PHOENIX SQL> ALTER SESSION ENABLE ADG_REDIRECT_DML;

	Session altered.


WORLD@PHOENIX SQL> INSERT INTO world (val,region) SELECT 'Happy New Year', DB_UNIQUE_NAME from v$database;

	1 row created.

WORLD@PHOENIX SQL> commit;

	Commit complete.

● Ashburn Region (Standby)

PHOENIX Regionでは、英語で挨拶しましたので、ヘブライ語の 'שנה טובה' で新年のご挨拶をしてみてみます。

[oracle@db-ashburn1 ~]$ export NLS_LANG=American_America.AL32UTF8
[oracle@db-ashburn1 ~]$ sqlplus world/<Password>@ASHBURN 

	SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jan 2 13:11:04 2023
	Version 19.17.0.0.0

	Copyright (c) 1982, 2022, Oracle.  All rights reserved.

	Connected to:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.17.0.0.0

WORLD@ASHBURN SQL> ALTER SESSION ENABLE ADG_REDIRECT_DML;

	Session altered.


WORLD@ASHBURN SQL> INSERT INTO world (val,region) SELECT 'שנה טובה', DB_UNIQUE_NAME from v$database; 

	1 row created.


WORLD@ASHBURN SQL> commit;

	Commit complete.

● Frankfurt Region (Standby)

新年のご挨拶は、ドイツ語の 'Ein gutes neues Jahr' を INSERT します。

[oracle@db-frankfurt1 ~]$ export NLS_LANG=German_Germany.AL32UTF8
[oracle@db-frankfurt1 ~]$ sqlplus WORLD/<Password>@FRANKFURT

	SQL*Plus: Release 19.0.0.0.0 - Production on Mo Jan 2 13:21:13 2023
	Version 19.17.0.0.0

	Copyright (c) 1982, 2022, Oracle.  All rights reserved.

	Verbunden mit:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.17.0.0.0

WORLD@FRANKFURT SQL> ALTER SESSION ENABLE ADG_REDIRECT_DML;

	Session wurde geändert.

WORLD@FRANKFURT SQL> INSERT INTO world (val,region) SELECT 'Ein gutes neues Jahr', DB_UNIQUE_NAME from v$database;

	1 Zeile wurde erstellt.


WORLD@FRANKFURT SQL> commit;

	Transaktion mit COMMIT abgeschlossen.

● Mumbai Region (Standby)

新年のご挨拶は、ヒンドゥ語の 'नया साल मुबारक हो' を INSERT します。

[oracle@db-mumbai1 ~]$ export NLS_LANG=Hindi_India.AL32UTF8
[oracle@db-mumbai1 ~]$ sqlplus WORLD/<Password>@MUMBAI

	SQL*Plus: Release 19.0.0.0.0 - Production on सोम जनवरी 2 13:29:48 2023
	Version 19.17.0.0.0

	Copyright (c) 1982, 2022, Oracle.  All rights reserved.

	Connected to:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.17.0.0.0


WORLD@MUMBAI SQL> ALTER SESSION ENABLE ADG_REDIRECT_DML;

	Session altered.


WORLD@MUMBAI SQL> INSERT INTO world (val,region) SELECT 'नया साल मुबारक हो', DB_UNIQUE_NAME from v$database;

	1 row created.

WORLD@MUMBAI SQL> commit;

	Commit complete.

● Seoul Region (Standby)

新年のご挨拶は、韓国語の '새해 복 많이 받으세요' を INSERT します。

[oracle@db-seoul1 ~]$ export NLS_LANG=Korean_Korea.AL32UTF8
[oracle@db-seoul1 ~]$ sqlplus world/<Password>@SEOUL 

	SQL*Plus: Release 19.0.0.0.0 - Production on 월 1월 2 13:40:57 2023
	Version 19.17.0.0.0

	Copyright (c) 1982, 2022, Oracle.  All rights reserved.

	다음에 접속됨:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.17.0.0.0


WORLD@SEOUL SQL> ALTER SESSION ENABLE ADG_REDIRECT_DML;

	세션이 변경되었습니다.


WORLD@SEOUL SQL> INSERT INTO world (val,region) SELECT '새해 복 많이 받으세요', DB_UNIQUE_NAME from v$database;

	1 개의 행이 만들어졌습니다.

WORLD@SEOUL SQL> commit;

	커밋이 완료되었습니다.

● Osaka Region (Standby)

TOKYO Regionでは、日本語で挨拶しましたので、中国語の '新年快乐' で新年のご挨拶をしてみてみます。

[oracle@db-osaka1 ~]$ export NLS_LANG='SIMPLIFIED Chinese_China.AL32UTF8'
[oracle@db-osaka1 ~]$ sqlplus WORLD/<Password>@OSAKA

	SQL*Plus: Release 19.0.0.0.0 - Production on 星期一 1月 2 13:52:18 2023
	Version 19.17.0.0.0

	Copyright (c) 1982, 2022, Oracle.  All rights reserved.

	连接到:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.17.0.0.0


WORLD@OSAKA SQL> ALTER SESSION ENABLE ADG_REDIRECT_DML;

	会话已更改。

WORLD@OSAKA SQL> INSERT INTO world (val,region) SELECT '新年快乐', DB_UNIQUE_NAME from v$database;

	已创建 1 行。

WORLD@OSAKA SQL> commit;

	提交完成。

● Shibuya Region (Standby)

TOKYO Regionでは、日本語で挨拶しましたので、タイ語の 'สวัสดีปีใหม่ ค่ะ' で新年のご挨拶をしてみてみます。

[oracle@db-shibuya1 ~]$ export NLS_LANG='Thai_Thailand.AL32UTF8'
[oracle@db-shibuya1 ~]$ sqlplus world/<Password>@SHIBUYA

	SQL*Plus: Release 19.0.0.0.0 - Production on จ. ม.ค. 2 13:59:51 2023
	Version 19.17.0.0.0

	Copyright (c) 1982, 2022, Oracle.  All rights reserved.

	เชื่อมต่อกับ:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.17.0.0.0


WORLD@SHIBUYA SQL> ALTER SESSION ENABLE ADG_REDIRECT_DML;

	แก้ไขเซสชันแล้ว


WORLD@SHIBUYA SQL> INSERT INTO world (val,region) SELECT 'สวัสดีปีใหม่ ค่ะ', DB_UNIQUE_NAME from v$database;

	สร้างแถวแล้ว 1 แถว


WORLD@SHIBUYA SQL> commit;

	การคอมมิตเสร็จสมบูรณ์

■ 各国からの INSERT した新年のご挨拶を確認

Standby DatabaseでもDML操作が有効化され、各リージョン言語の言葉で新年の挨拶が届いていることを確認できます。

WORLD@TOKYO SQL> select * from WORLD;

	VAL						     REGION
	---------------------------- ---------------------- 
	あけまして おめでとうございます  CDB_TOKYO
	Happy New Year               CDB_PHOENIX
	שנה טובה                     CDB_ASHBURN
	Ein gutes neues Jahr	     CDB_FRANKFURT
	नया साल मुबारक हो               CDB_MUMBAI
	새해 복 많이 받으세요             CDB_SEOUL
	新年快乐                      CDB_OSAKA
	สวัสดีปีใหม่ ค่ะ                  CDB_SHIBUYA

■ 謹賀新年

新しい年が平和でありますように
新しい年が愛であふれますように
Happy New Year!

■ 参考

 ・ Active Data Guard
 ・ Oracle Active Data Guardでのリアルタイム問い合わせとDMLオフロード
 ・ Active Data Guardスタンバイ・データベースでのDML操作の実行
 ・ ADG_REDIRECT_DML
 ・ Enabling DML Redirection
 ・ NLS_LANGについて: Setting Up a Globalization Support Environment
 ・ グローバリゼーション・コード

22
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?