you can do hot backup, but you will need to tell oracle you are doing
so:
you will need to have oracle in archive log mode
you will need to manually set all tablespaces in backup mode:
alter tablespace XXX begin backup; (for all tablespaces)
alter system switch logfile;

the snapshot creation part goes here
NO >do your backup including the archive logs

alter tablespace XXX end backup; (for all tablespaces)

do your backup here including the archive logs
destroy the snapshot here.

it is a simple sql script to code

Hi Mitchell, hi Luca,

well, despite i prefer using RMAN ( since 9iR2 it's once configured and
then you can always do your backup with a simple 'backup database' ) but
you need your database running in archived mode, which brings additional
space and backup needs.

The way Luca describes for a online-backup is the usual way that's
working since Oracle 7 ( or even 6, but just work with Oracle since 7.0
;-) ), but i think, if all ( really all !) files are on the same
snapshout and the snapshot is big enough( ;-) ), you should make a
logswitch, create a readonly snapshot, copy all the files ( including
control-files, and redo-logs ) and remove the snapshot. You can then
carefully try to use these files to restore the database. If you have
enough diskspace, you can shutdown your instance, rename all the files (
again incl. control-files and redo-logs ), restore the copies from the
snapshot and start the database carefully ( startup nomount; alter
database mount; select file#, name, status from v$datafile; -> all file
should be in status system or online ; alter database open; -> up again ).
I have nither the time nor the resources to test this on my own. But you
can share your results with us :-)