In a follow-up to my earlier post about how in a RAC cluster, you can get different SYSDATE functions returned comparing local connections and those through a cluster listener. In that instance, changing the clusterware time zone information and restarting the clusterware was the solution. For your background reading, that can be found here.
Today I came across a new one. RAC cluster (126.96.36.199) with two databases running; the first instance was fine except all the log files (alert.log etc) were off by four hours (alert was four hours later than the current time) and the second instance matched the database time and the alert log times…
The cluster configuration turned out to be fine. Setting TZ= at the Oracle account level made no difference. However when I looked at both SMON processes environment variables (cat /proc/PID-of-SMON/environ), the good database had TZ=America/New_York and the misbehaving one had TZ=America/New_ – a truncated entry.
Next, a trip into the SRVCTL utility…oracrs> srvctl getenv database -d bad_db bad_db: TZ=America/New York oracrs> oracrs> srvctl getenv database -d good_db good_db: oracrs>
Note that the good DB is missing that “correct” definition for TZ. The solution is to unset that parameter..oracrs> srvctl unsetenv database -d bad_db -t “TZ”
Bounce the database and your alert.log should now be very happy.