في Oracle، لماذا يقوم Current_timestamp في بعض الأحيان بإرجاع وقت الخادم، وأوقات أخرى بتوقيت جرينتش؟

StackOverflow https://stackoverflow.com/questions/2238782

  •  19-09-2019
  •  | 
  •  

سؤال

لدي تطبيق Java يعمل مقابل قاعدة بيانات Oracle 9i. تحتوي قاعدة البيانات على الزناد لإنشاء سجل تدقيق، والذي يتسابق التغييرات في السجل الأساسي. يستخدمن الزناد current_timestamp. عندما أقوم بتعديل السجل الأساسي بتطبيق Java، يعكس سجل التدقيق بتوقيت جرينتش. ومع ذلك، إذا كنت تستخدم الضفدع وتحديث السجل الأساسي، فإن سجل التدقيق يعكس وقت الخادم (الذي تم ضبطه على التوقيت المحلي). استعلام Current_timestamp إرجاع وقت الخادم. لا أستطيع أن أجد ما يسبب الفرق. أي أفكار هناك؟

هل كانت مفيدة؟

المحلول

يمكن تعيين قيم المعلمات NLS في غضون جلسة (في بعض الأحيان في مشغل تسجيل الدخول)، موروثة من بيئة نظام التشغيل، أو تعيين عند بدء تشغيل المثيل، مما يجعلها تتبعها صعبة بعض الشيء.

يعرض الاستعلام التالي اختلافا من قاعدة البيانات، وإذا كان بإمكانك الحصول على هذا الإخراج من بيئتي المتباينة الخاصة بك، فقد يساعد ذلك:

SELECT * FROM
(
SELECT PARAMETER, 
       VALUE AS SESSION_VALUE,
       (SELECT VALUE FROM NLS_INSTANCE_PARAMETERS NIP
         WHERE NIP.PARAMETER = NSP.PARAMETER) INSTANCE_VALUE,
       (SELECT VALUE FROM NLS_DATABASE_PARAMETERS NDP
         WHERE NDP.PARAMETER = NSP.PARAMETER) DATABASE_VALUE
  FROM NLS_SESSION_PARAMETERS NSP
)
 WHERE NVL(INSTANCE_VALUE, DATABASE_VALUE) <> DATABASE_VALUE
    OR NVL(SESSION_VALUE, NVL(INSTANCE_VALUE, DATABASE_VALUE)) <> DATABASE_VALUE

عندما أدارت إلى أنه على نظام التشغيل Windows SQL * Plus، لم أحصل على صفقات، لذلك لم تكن هناك اختلافات بين بيئة التطبيق الخاصة بي وهناك افتراضيات قاعدة البيانات. ومع ذلك، عندما ركضت من بيئة UNIX:

PARAMETER                 SESSION_VALUE             INSTANCE_VALUE            DATABASE_VALUE
------------------------- ------------------------- ------------------------- -------------------------
NLS_DATE_FORMAT           YYYY-MM-DD HH24:MI:SS                               DD-MON-RR
NLS_TIMESTAMP_TZ_FORMAT   YYYY-MM-DD HH24:MI:SS.FF                            DD-MON-RR HH.MI.SSXFF AM
                          TZH:TZM                                             TZR
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top