Like @djb mentioned RMAN is the safest bet, but at times it won't be the fastest solution.
There are other ways, copying database manually comes to mind. It definitely isn't the easiest way and won't be usable if You can't put source database offline for some time.
- might be faster than RMAN Duplicate - it depends how much time has passed since your last full backup - each archive log file to append adds time to process
- doesn't require You to use RMAN - I don't know any reason You wouldn't want to learn it, as Oracle db admin, at some point though.
- allows You to change more settings in the process.
- requires cold copy of source database - downtime will be longer when making copies
- harder, prone to manual errors - like with all other hand work - You can script at least some parts of it though.
I had some strange issues with 10g2 Standard and RMAN, while duplicating database between two completely different configured Linux servers, without any issues with restoring one database on another existing one.
This solution allowed me to make fast copies of production database.
In the process, after copying data files, You will have to edit initdb.ora file, ensuring all the path changes. Followed by starting new instance in mount mode and changing name with DBNEWID utility (and changing it in initdb.ora file).
In some cases You could combine both solutions - by making a copy of database with empty data files and restoring source database to copy with RMAN - but with properly configured servers RMAN duplicate will be faster and easier.
Don't know if it is as straightforward or even possible with ASM under Oracle.
You can find more details about duplicating database manually over there: