If you can afford a few hours down time exp/imp works great.
1- pre-create database in target system
2- full export from source system - on-the-fly exp/gzip preferred
3- ftp to target system
4- full import into target system - on-the-fly gunzip/imp preferred
5- check object counts, check invalid objects, contraints, etc.
You can run it twice, first time to gauge elapsed time and issues, second time for real.
Disclaimer: Advice is provided to the best of my knowledge but no implicit or explicit warranties are provided. Since the advisor explicitly encourages testing any and all suggestions on a test non-production environment advisor should not held liable or responsible for any actions taken based on the given advice.
The above will work, but I had better results following a pdf called 'Database Migration From Windows to Linux Using RMAN'. The basic concept is the same from Linux to solaris though.
SQL> select * from v$db_transportable_platform
2 where platform_name like 'Linux%' or
3 platform_name like 'Solaris%';
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ----------------------------------- --------------
10 Linux IA (32-bit) Little
11 Linux IA (64-bit) Little
13 Linux x86 64-bit Little
17 Solaris Operating System (x86) Little
20 Solaris Operating System (x86-64) Little
As long as the endian is the same format, its simple. You use rman to convert the DBF's then ftp them onto the new server. Rename as you like, then rebuild the controlfile. The process even generates a script for you to recreate the controlfiles and start the database. The cool thing about it is you aren't destroying the original dbf's. It copies them into the new format.