نشر بواسطة : Obay Salah , November 19, 2024

الشركات الكبيرة وقواعد البيانات التي تتعامل مع مناطق زمنية متعددة يجب أن تتعامل مع ﺍلTime Zone، وإلا فلنفترض هذا السيناريو،

لنفترض أن لدينا Mail Server، وقاعدة البيانات موجودة في لندن حيث الوقت العالمي هو توقيت جرينتش (GMT)، ولنفترض أن المستخدم A

أرسل بريدًا إلكترونيًا من الرياض إلى برازيليا في تمام الساعة العاشرة (10) بتوقيت السعودية (بعد ثلاث ساعات من توقيت جرينتش)

بينما الوقت في البرازيل قبل توقيت جرينتش بثلاث ساعات، فعند إرسال الرسالة سيتم تخزينها في قاعدة البيانات في لندن عند توقيت جرينتش،

أي أن وقت إرسال الرسالة سيتم تخزينه عند الساعة السابعة (7) ولكن عندما يشاهد المستخدم ب الرسالة في برازيليا سيظهر له وقت الإرسال عند الساعة الرابعة (4)

لكن الحقل الذي يشير إلى وقت الإرسال يجب أن يكون من نوع TIMESTAMP WITH LOCAL TIME ZONE.

من الممكن عمل هذا العمل برمجيا ولكنه يتطلب عملا كبيرا بالاضافة الى معرفة كبيرة بالمناطق الزمنية وأيضا التوقيت الصيفي والشتوي لبعض المناطق،

قاعدة البيانات تستطيع عمل اي شيء من اجلك ولكن لاحظ معي في السيناريو السابق ماذا لو تجاهلنا موضوع ﺍلZone Time؟ لا شك ان عملية معرفة وقت ارسال الرسالة بالتوقيت المحلي ستكون عملية معقدة جدا حيث سيتم تخزين الرسالة بالتوقيت المحلي للرياض ولحظة مراجعة الرسالة

في برازيليا سيظهر وقت الارسال المحلي للرياض (10) بينما التوقيت المحلي لبرازيليا هو (4). لا شك ان هذا مؤثر جدا.

يمكن ضبط ﺍلDatabase Time Zone وقت انشاء قاعدة البيانات او لاحقا عبر الامر ALTER DATABASE SET = TIME_ZONE

اذا لم يتم ضبطها تلتقط قاعدة بيانات اوراكل ﺍلTime Zone من نظام التشغيل.

بالنسبة ﻟلClient  سيتم ضبط ﺍلDefault Time Zone من قبل نظام التشغيل او من خلال variable environment ORA_STDZ.

بالنسبة ﻟلSession ، يمكن تحديد ﺍلTime Zone من خلال الأمر ALTER SESSION SET TIME_ZONE=TIME_ZONE


يمكن عرض جميع ﺍلTime Zone التي تدعمها قاعدة البيانات من خلال V$TIMEZONE_NAMES View.


علامات : Database

يمكن ان يعجبك ايضا


Comments

لايوجد تعليق حتى الان