difference of few hours can be understood...but you are having 21 days diff..there is definetely somthing wrong...

SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM DUAL;

can you paste the output?