Have you read the
Upgrade Guide in the 11g documentation?
Upgrading from 8.1 caused us a lot of pain because there are a lot of changes to the JVM after the 1.4 version that came with it (if I had a dime for every time someone named a variable "enum"...). There are automated ways to upgrade a domain, but they never worked for us. We had to create a clean domain, configure it as we had 8.1, point our build at it and see what broke when we deployed. Fix, then repeat.