Wow what a question! Here's my tuppence.
I've been working for various contracts in the past 3 years doing supporting the migration of applications from Solaris to Redhat.
One question to ask straight away is 'WHY', is this financially driven, do you have a badly performing app, fashionable? Its amazing the reasons that can be thought up but its useful to know why the migration is being mooted.
Your company should be prepared to spend quite a lot of money to migrate, whilst the cost of running on Linux is comparatively low to HP/SPARC/IBM (another debate for another day), the initial investment is like buying a whole new datacentre to replace your current one so it's not cheap. You'll also probably need more staff (to cope with additional hardware) and training in the new Linux OS you're migrating too.
The first question to answer is "Which Linux distro are you going to use?" If you're a commercial operation then using a 'free' or 'commercially unsupported' OS is not a good idea. Redhat or Suse (to name a couple) provide complete support packages for customers and can even provide you with useful information/consultants who will willingly come onsite and show you how to setup properly.
Second question is what type of hardware?
In answers to your questions:
1 & 2. The fact that your app is built using C/++ is a good start, this works well on Linux and with some relatively minor tweaking should compile quite easily. Although scalability and customer expectations are another issue.
3. Shell scripts should port straight out (at least 90% will).
4. Oracle 10g runs on Linux as well. Obviously you have to ensure its on the Oracle supported list of OS'es!
In the past few contracts I've worked on, we've introduced Linux based Development hosts for developers to start porting the app onto. Then we've created Linux Testing, UAT and Production hosts in-line to ensure Testing works, then customers can test it does what the old version did, then into Production it goes.
After going into production it usually breaks for a few days whilst developers and testers run around saying 'we never tested for this/that' but don't let that discourage you :-)