A continuación resumo los pasos que uso personalmente para realizar una clonación de base de datos.
Información de archivos y espacios usados por los archivos
Con esto obtenemos una lista de que archivos vamos a copiar para clonar nuestra base de datos.
En sqlplus (u otra aplicación cliente oracle), ejecutar:
select name, bytes
En sqlplus (u otra aplicación cliente oracle), ejecutar:
set lines 100 pages 999col name format a50 select name, bytes
from    (select    name, bytes
    from    v$datafile
    union    all
    select    name, bytes
    from     v$tempfile
    union     all
    select     lf.member "name", l.bytes
    from    v$logfile lf
    ,    v$log l
    where    lf.group# = l.group#) used
,    (select sum(bytes) as poo
    from dba_free_space) free;
Crear nuevo pfile:
En sqlplus ejecutar:
create pfile='init.ora' from spfile; 
este será el nuevo archivo de inicio para nuestra nueva base de datos.
Crear clon de controlfile desde b.d. origen:
alter database backup controlfile to trace as '/home/oracle/cr_new_sid.sql'; 
Donde  es el nombre de la nueva instancia está representado por new_sid. Desde acá en adelante new_sid lo reemplazas por tu nuevo nombre de instancia. Si no vas a cambiar el nombre a la instancia, entonces simplemente no lo cambies.  
Traspaso de archivos: 
- Bajar base de datos origen
- Transferir archivos a nuevo destino / servidor. Para esto ocuparemos la lista de archivos generada en el archivo cr_new_sid.sql:
- cp origen destino
- ftp origen - destino
- Borrar archivos de control (si se han copiado en este traspaso) en el nuevo ambiente (no en el ambiente original)
- cambiar permisos archivos destino para que sean leidos por usuario dueño de base de datos (chown).
- Ajustar listener - tnsnames para conectarse a nueva instancia
- Traspaso      de cr_new_sid.sql a nuevo ambiente (si está en otro servidor) o ruta y del init_new_sid .ora 
Este archivo contiene una serie de comentarios y elementos que no usaremos en nuestra tarea, así que eliminaremos componentes y depuraremos este archivo.
Subida  de nueva base de datos:
Pasos posteriores
- Borrar todas las líneas del inicio del archivo, incluyendo la segunda instancia de 'STARTUP MOUNT' (debiese ser más allá de la mitad del archivo)
- Borrar todas las líneas que comiencen con --
- Borrar todas las líneas que comiencen con #
- Borrar todas las líneas en blanco en la sección de 'CREATE CONTROLFILE'
- Borrar la linea 'RECOVER DATABASE USING BACKUP CONTROLFILE' (muy importante)
- Ir al inicio de 'CREATE CONTROLFILE' y cambiar la palabra REUSE por SET
- Cambiar el nombre de la base de datos, en caso de que el nombre de la base de datos vaya a ser cambiado.
- Cambiar las rutas por las nuevas rutas que se vayan a usar
- Editar tnsnames.ora y listener.ora
- Editar estos archivos para registrar la nueva base de datos, su ruta y puerto de acceso
- Bajar la base de datos original:
- Cuando subamos la nueva colisionará con esta base de datos. No subirla hasta que se cambie el nombre a la base de datos nueva. No es necesario bajarla, evidentemente, si la estamos subiendo en otro servidor.
- Conectarse a la B.D. (sqlplus)
- Finalmente, iniciamos y ejecutamos nuestro script antes editado:
- startup nomountSubimos la base de datos pero sin abrirla@cr_new_sid.sql Ejecutamos el archivo antes editado para :- crear el nuevo control file
- abrir la b.d. y reiniciar logs
- añadir los tablespaces / datafiles temporales
 
Pasos posteriores
- Configurar las variables de ambiente para esta base de datos en el $HOME/.profile del usuario. Incluir ORACLE_HOME, ORACLE_SID, TNS_ADMIN, entre otras
- Cambiar el database id: (para el caso de uso de RMAN, es requerido cambiar el ID de la B.D.)
- via sqlplus:
- shutdown immediate
- startup mount
- exit
- via unix:
| nid   target=/ | solicitará   cambiar el id, se acepta y procede el cambio | 
- via sqlplus
- shutdown immediate
- startup mount
- alter database open resetlogs
Confirmar funcionamiento de B.D. 
Si queremos confirmar los resultados (aunque cualquier error debiese haber aparecido al iniciar la base de datos), podemos:
| verificar   estatus de B.D. | select   status from v$instance; | 
| verificar   datafiles | select   distinct status from v$datafile; | 

