derobert already mentioned dmesg in the comments. Try running it using an absolute path, like this:
/bin/dmesg | /bin/more
See if there are anything that would seem like a disk error: it might be that one of the directories listed in your PATH is on a disk that's failing. If the disk is failing in a way that causes it to get stuck, forever retrying the failing read operation, that might be causing the shell to hang when it is searching for a command to execute.
You could also try just minimizing the PATH: initially just set
PATH=/bin:/sbin
If you now can run commands without hanging and without using absolute paths, add back /usr/bin and /usr/sbin too.
PATH=/bin:/usr/bin:/usr/sbin:/sbin
Now you should have all the standard commands available to you without using absolute paths. If the hanging phenomenon does not re-occur, you can now start checking the remaining directories.
As a quick check, you can use the ls command, but run it in the background so you won't cause your current session to become unusable if the command hangs. For example:
ls /u01/jdk/bin &
If you see the ls command output, just press Enter once to see the prompt again. (You will probably also see a message from the shell indicating that a backgrounded command did just complete.)
If the output of ls won't appear or is clearly incomplete, check the output of the dmesg command again: you might find the kernel is now spewing disk I/O errors to the end of the output. Those error messages could be used to identify the failing disk device, but by knowing exactly at which path the ls command failed, you may already have a fairly good idea of that.