اوراکل 23c – اجرای sysdate بر اساس time zone هر PDB

همانطور که می دانید توابع SYSDATE و SYSTIMESTAMP ساعت جاری سیستم را برمی گردانند این توابع date را بر اساس time zone سیستم عامل نمایش می دهند و اگر time zone متفاوتی برای دیتابیس تنظیم شود، تغییری در رفتار این توابع ایجاد نمی شود:

[oracle@OEL8 ~]$ timedatectl
               Local time: Thu 2024-02-15 13:14:48 +0330
           Universal time: Thu 2024-02-15 09:44:48 UTC
                 RTC time: Thu 2024-02-15 07:37:09
                Time zone: Asia/Tehran (+0330, +0330)
SQL> select sysdate , SYSTIMESTAMP ;
SYSDATE   SYSTIMESTAMP
--------- ----------------------------------------
15-FEB-24 15-FEB-24 01.25.54.270895 PM +03:30

SQL> ALTER DATABASE SET TIME_ZONE='Asia/Tokyo';
Database altered.

SQL> select sysdate , SYSTIMESTAMP ;
SYSDATE   SYSTIMESTAMP
--------- ----------------------------------------
15-FEB-24 15-FEB-24 01.26.37.200429 PM +03:30

در نسخه 23c می توان با تنظیم پارامتر time_at_dbtimezone به مقدار USER_SQL این توابع را مجاب کرد تا date را بر اساس time zone دیتابیس برگردانند صرف نظر از time zone سیستم عامل!

در ادامه برای هر کدام از PDBهای موجود در دیتابیس، time zone متفاوتی را تنظیم می کنیم:

SQL> alter session set container=TOKYOPDB;
Session altered.
SQL> ALTER DATABASE SET TIME_ZONE='Asia/Tokyo';
System altered.
SQL> alter session set container=TEHRANPDB;
Session altered.
SQL> ALTER DATABASE SET TIME_ZONE='Asia/Tehran';
Database altered.

پارامتر time_at_dbtimezone را هم به مقدار USER_SQL تنظیم کرده و دیتابیس را restart می کنیم:

SQL> alter system set time_at_dbtimezone=USER_SQL scope=spfile;
System altered.
SQL> startup force;

خواهیم دید که این توابع در هر PDB مقدار متفاوتی را برمیگردانند:

SQL> alter session set container=TOKYOPDB;
Session altered.
SQL> select sysdate , SYSTIMESTAMP ;
SYSDATE   SYSTIMESTAMP
--------- ----------------------------------------
15-FEB-24 15-FEB-24 07.13.36.575056 PM ASIA/TOKYO
SQL> alter session set container=TEHRANPDB;
Session altered.
SQL> select sysdate , SYSTIMESTAMP ;
SYSDATE   SYSTIMESTAMP
--------- ----------------------------------------
15-FEB-24 15-FEB-24 01.43.47.339588 PM ASIA/TEHRAN

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *