1
1

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 Database 23ai PDB固有のTimezoneとは

Last updated at Posted at 2024-07-23

はじめに

Oracle Database 23ai では、PDBごとに Timezone が固有に設定できるようになりました。

PDB単位のTimezone について

21cからはCDBのみ構成可能となり、CDBとして一括での管理性と PDBの独立性をいかにバランス良く保つかが必要になりますが、23aiでPDB個別のTimezone が設定できる事により、さらにきめ細かい設計・運用に寄与するのではないでしょうか。
DGPDBでも Timezone を合わせる必要があるでしょうし、レプリケーション先を1つのCDBに統合・集約する場合などで活用できるでしょう。

ここでは、以下の環境構築を試します。

Q08_01.png

PDB単位のTimezone 環境構築

  • 23ai の新しい初期化パラメータの確認から
SQL> show parameter time_at_dbtimezone

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------------
time_at_dbtimezone                   string      off

SQL> select name,ISPDB_MODIFIABLE from v$parameter where name='time_at_dbtimezone';

NAME                                                          ISPDB
------------------------------------------------------------- -----
time_at_dbtimezone                                            TRUE

PDB単位で変更が可能である事を確認できます。
次にPDBLAおよびPDBTKの2つのPDBを持つCDBを作成します。

Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.5.0.24.07に接続されました。
SQL> show pdbs
    CON_ID CON_NAME                 OPEN MODE  RESTRICTED
---------- ----------------------------------- ----------
         2 PDB$SEED                 READ ONLY  NO
         3 PDBLA                   	READ WRITE NO
         4 PDBTK                   	READ WRITE NO

各PDB (LA & JP) に接続し、それぞれ以下を実行し、PDBを再起動します。

  • PDBLA
SQL>alter system set time_at_dbtimezone = 'DATABASE' scope=spfile;
SQL>alter database set time_zone='America/Los_Angeles';
  • PDBTK
SQL>alter system set time_at_dbtimezone = 'DATABASE' scope=spfile;
SQL>alter database set time_zone='Asia/Tokyo';
  • CDB$ROOTから以下を実行する
SQL>alter pluggable database all close;
SQL>alter pluggable database all open;
  • PDBLA で確認
SQL> show parameter time_at_dbtimezone
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------------
time_at_dbtimezone                   string      DATABASE

SQL> select DBTIMEZONE from dual;
DBTIMEZONE
-------------------
America/Los_Angeles

SQL> SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "NOW" FROM DUAL;
NOW
-------------------
07-18-2024 06:54:50 👈
  • PDBTK で確認
<PDBTKで>
SQL> show parameter time_at_dbtimezone
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------------
time_at_dbtimezone                   string      DATABASE

SQL> select DBTIMEZONE from dual;
DBTIMEZONE
-------------------
Asia/Tokyo

SQL> SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "NOW" FROM DUAL;  
NOW
-------------------
07-18-2024 22:55:49 👈

最後に

特に国内のシステムにおいて、PDB個別のTimezone 設定は求められる場面は多くないかも知れません。が、様々な拠点を持つ企業データの統合・集約に伴う管理やBCPを踏まえたインフラには必要となるケースも考えられるので、抑えておきたい機能だと思います。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?