viernes, 21 de marzo de 2014

Como se Puede Mover un Datafile en Oracle 12c

Hallé esto aquí y decidí traducirlo para los hispanohablantes. Lo probé en Oracle 12.1. En versiones anteriores, era necesario seguir varias etapas para mover un datafile. Ahora es posible hacerlo con un comando como se puede ver bajo estas líneas: 

SQL> l
  1  select file_name from dba_data_files
  2* where tablespace_name = 'USERS'
SQL> /
 
FILE_NAME
----------------------------------------------------------------------
C:\APP\ADMINISTRATOR\ORADATA\ORCL1\DATAFILE\O1_MF_USERS_9LM1W41L_.DBF
 
SQL> alter database move datafile
  2  'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\DATAFILE\O1_MF_USERS_9LM1W41L_.DBF'
  3  to
  4  'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\DATAFILE\USERS.DBF'
  5  /
 
Base de datos modificada.
 
SQL> select file_name from dba_data_files
  2  where tablespace_name = 'USERS'
  3  /
 
FILE_NAME
----------------------------------------------------------------------
C:\APP\ADMINISTRATOR\ORADATA\ORCL1\DATAFILE\USERS.DBF
 
SQL> 

... y aquí está el nuevo archivo en el sistema operativo para probarlo: 

PS C:\app\administrator\oradata\orcl1\datafile> dir users.*
 
 
    Directory: C:\app\administrator\oradata\orcl1\datafile
 
 
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        20/03/2014     18:55    5251072 USERS.DBF
 
 
PS C:\app\administrator\oradata\orcl1\datafile> 

El comando aun parece funcionar con el tablespace SYSTEM

SQL> select file_name from dba_data_files
  2  where tablespace_name = 'SYSTEM'
  3  /
 
FILE_NAME
--------------------------------------------------------------------------------
C:\APP\ADMINISTRATOR\ORADATA\ORCL1\DATAFILE\O1_MF_SYSTEM_9LM1SGKN_.DBF
 
SQL> alter database move datafile
  2  'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\DATAFILE\O1_MF_SYSTEM_9LM1SGKN_.DBF'
  3  to
  4  'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\DATAFILE\SYSTEM.DBF'
  5  /
 
Base de datos modificada.
 
SQL> exit
Desconectado de Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
PS C:\app\administrator\oradata\orcl1\datafile> dir system.*
 
 
    Directory: C:\app\administrator\oradata\orcl1\datafile
 
 
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        20/03/2014     19:01  817897472 SYSTEM.DBF
 
 
PS C:\app\administrator\oradata\orcl1\datafile>

2 comentarios:

  1. Hola Andrew:

    Tengo este escenario:

    Una instancias de Oracle 11gR2 ORCL, con sod base de datos A y B.

    Como puedo incluir estas bases de datos en otra instancia ORCL_NUEVA, sin hace un export o datapump o utilizar rman, usando solo los datafiles.


    Gracias

    ResponderEliminar
  2. Hola Manuel,

    Gracias por tu pregunta y espero que estás bien.

    Con una base de datos, A, la respuesta es fácil. Se puede copiar los datafiles y recrear el archivo de control (control file). Lo hago a menudo para crear bases de datos de prueba.

    Pero con dos bases de datos, A y B, creo que sea necesario hacerlo con
    transportable tablespaces.

    Un saludo

    Andrew

    ResponderEliminar