I have a legacy system that we're trying to migrate up to Oracle 19. It works with an old version of Devart, 5.0.536 against 11g and 12c Oracle databases. The application is in a verified environment so cannot be frequently updated, which is why the DLLs are so old. As Windows 7 is going out of service, we're attempting to migrate to Windows 10, and hopefully Oracle 19 in the process.
The tests were run on Windows 10 + Oracle 12c with the old DLLs as a sanity check and things were working well with that combination. When we updated to Oracle 19, we could not connect to the database. To resolve this, we purchased the latest version of Devart dotConnect for Oracle and after installation were able to connect to the Oracle 19 database. However, when we began running the automated test cases, we noticed that the dates displayed by the application appear to have been shifted by the time zone an extra time. The dates stored in the database correctly return in the expected local time from application like sqlplus and Golden6, so they're getting in to the database correctly.
For example, a date time in the database of "7/8/2020 11:09:02.368699 AM" (American dates, pulled with US/Eastern timezone) is appearing in our application as "7/8/2020 7:09:02.368699 AM".
The application code has not changed, only the installation of the Devart DLLs. The database date time shown (the first one) is from running a query using Golden6 or sqlplus to connect, and correctly corresponds to the local time when I performed logging actions.
I see similar behavior using a 12c database, though it's only off by -3 hours (showing 9:04 and 6:04, database and application respectively). I imagine this is due to differences in the versions of the timezone files on each database server (the 12c DB is at 18, while the 19 DB is at version 32), which I do not have access to change.
The database uses TIMESTAMP WITH LOCAL TIME ZONE to store date time entries. When the application connects, it alters the session to set the current timezone by running the following (US/Eastern used here, but it's variable depending on the user's selection, I've also removed the schema name as it's specific to our application):
Code: Select all
alter session set NLS_SORT='BINARY_CI' current_schema = <schema_name> time_zone='US/Eastern' constraints=deferred
Please let me know if you need any additional information, thanks!