謹賀新年
世界各国の言葉で新年のご挨拶をお届けします!
Oracle Active Data Guard 19c では、スタンバイ・データベースで DML(INSERT/UPDATE/DELETE)が実行可能となり、真の Active Data Guard が実現しました。
これにより、世界各国に配置されたデータベースに現地の言葉を INSERT し、そのデータを 各Database で SELECT して表示することが可能です。
今回は、各国の言葉で新年の挨拶を入力し、世界中の Oracle データベースを通じて皆さまにお届けします。
■ 構成
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転送ルートを構成することができます。
今回、各国で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
・ グローバリゼーション・コード