If you are like me, you do installations just often enough to remember how to set up your server ALMOST just right. Often forgetting to make sure the ORACLE_HOME and ORACLE_BASE are set prior to kicking off the installation. Or, your installing the latest software on your home machine that used to have X, Y, and Z but have since been uninstalled. At least you thought they were uninstalled (completely) and you have to clean the registry (ah, a windows world). Installing on Windows OSs and *nix OSs also complicate matters.
I just went through this installing 11g Enterprise Edition on a Windows XE SP2 PC and I had two issues. I didn't have a static IP address and my ORACLE_HOME was set to the Oracle XE installation. Either one will give just enough information to let you know that something is wrong and that the listener will not start up but not enough information to direct you to the exact issue. The static address did not pop into my head right away, I think because XE was running just fine with that listener having no problems.
The ORACLE_HOME not being set was a quick fix after I uninstalled XE. I was going to have both installed and only run one or the other (XE tends to be much lighter). But XE does not play well with others so I uninstalled XE and re-installed 11g. Same listener error. HHmmm. "Check the environment variables" echoed in my head.
I uninstalled everything again and removed all variables, registry settings, and manually cleaned up all the Oracle directories (which took a restart to have the OS let go of one of the oracle .dll files). I also changed my PC to use a static IP address. Install completed without any issues. I created a database with Enterprise Manager also without error.
The installation manuals would not have been too helpful. They only cover installations on "clean" servers. They due state that you should use a static IP address but do not mention the variables. Primarily because they would get set during the installation (on Windows). Most of my career is on the *nix platforms where variables are set in the shell.
I guess I should RTFM (did I mentioned I KNEW what I was doing and pretty much went straight to install) and treat my home PC more like I treat production machines. Take my time, read the manual (even if it is a quick scan through the steps) and review what is installed and how the current environment is set up. In the end, I would save time and a little frustration.
I believe the reason the listener for XE has no problems with dynamic IP addresses is that it is designed to be a quick install for small projects and leaning. XE is also limited to one machine (one CPU, two gigabytes of RAM and four gigabytes of hard drive space) so there will be no RDBMS communication to RDBMS. No server to server communication means a more simplified listener requirement.
Now on to playing with the latest and greatest. I am also going to mess with APEX. I am sure there will be plenty of blogs on that.
Make sure the server has a static IP.
Make sure the environmental variables are set correctly.