kernel: INFO: task oracle:5204 blocked for more than 120 seconds.
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
what are the meaning and explanation?How to resolve this.
'resolve' is kind of a loose term. The message itself tells you how to turn off the messages from being sent to the log. But I'm guessing that simply not getting the message is not the 'resolution' you are looking for.
The INFO message itself is telling you that an Oracle process has been stuck for over 2 minutes waiting on something to return so that it may continue. My guess (and this is only a guess) is that it's waiting on some I/O for some data, whether this is database data or paged memory data, or something else, I don't know.
Red Hat publishes a Reference Architecture document on tuning changes one could apply to your RHEL system when running Oracle. Additionally, Red Hat covers this in the RH442: Red Hat Performance Tuning class in a chapter entitled "Enterprise Database Tuning".
Essentially what the techniques covered in the document and course are about is jacking up the use of memory on the system as much as possible, so that data is not swapped and pages are kept in memory cache as long and as much as possible. Oracle doesn't like reading data from disks, when it does, things get bad quickly.