Como mover un datafile en Oracle 12c R1

Aquí les voy a pasar un tip rapido de como en Oracle 12c R1 podemos mover un datafile sin tener que bajar la base de datos o poner el tablespace al que pertenecía el datafile en modo offline.

Para este ejemplo, voy a usar OMF (Oracle Managed Files), pero también lo puedes hacer sin OMF.Lo primero que voy a hacer, es verificar que el db_create_file_dest tenga el valor a donde quiero que se creen mis datafiles.

oracle@localhost.localdomain [CDB2] /home/oracle
oracle $ sqlplus
SQL*Plus: Release 12.1.0.2.0 Production on Wed Apr 1 00:46:27 2015
Copyright (c) 1982, 2014, Oracle.All rights reserved.
Enter user-name: /as sysdba
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show parameter db_create_file_dest
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
db_create_file_dest string
/u01/app/oracle/oradata/cdb2

Ahora vamos a verificar el estado de la BD y las PDBs y los datafiles que tenemos en nuestra BD

SQL> select open_mode from v$database;
OPEN_MODE
------------------------------------------------------------
READ WRITE
SQL> </span>SELECT PDB_ID, PDB_NAME, STATUS FROM CDB_PDBS ORDER BY PDB_ID;
PDB_ID PDB_NAME STATUS
---------- --------------- ---------------------------
 2 PDB$SEED NORMAL
 3 PDB1NORMAL
SQL> SELECT file_id, file_name FROM cdb_data_files ORDER BY file_id;
FILE_ID FILE_NAME
---------- ----------------------------------------------------------------------
 1 /oradata/CDB2/system01.dbf
 3 /oradata/CDB2/sysaux01.dbf
 5 /oradata/CDB2/undotbs01.dbf
 6 /u01/app/oracle/oradata/cdb2/CDB2/datafile/o1_mf_users_bk1wg0z4_.dbf
 7 /oradata/UPGR/system01.dbf
 8 /oradata/UPGR/sysaux01.dbf
 9 /oradata/UPGR/users01.dbf
 10 /tmp/aq01.dbf
 12 /u01/app/oracle/product/12.1.0.2/dbs/rene.dat
9 rows selected.

Y ahora vamos a usar el comando ALTER DATABASE MOVE DATAFILE dentro de la CDB y nos va a marcar un error de que el datafile no existe

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/product/12.1.0.2/dbs/rene.dat';
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/product/12.1.0.2/dbs/rene.dat'
*
ERROR at line 1:
ORA-01516: nonexistent log file, data file, or temporary file "12"

El detalle es que en 12cR1, no nos permite mover un datafile que le pertenece a un PDB desde el CDB, si nos cambiamos a la PDB llamada PDB1, ahi si vamos a poder hacerlo

SQL> ALTER SESSION SET container =PDB1;
Session altered.
SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/product/12.1.0.2/dbs/rene.dat';
Database altered.

Me voy a regresar el CDB para verificar todos los datafiles de nuestra BD y vas a ver que ahora el datafile 12 se encuentra dentro de la ruta del db_create_file_dest

SQL> ALTER SESSION SET container = cdb$root;
Session altered.
SQL>
SQL> SELECT file_id, file_name FROM cdb_data_files ORDER BY file_id;
FILE_ID FILE_NAME
---------- ----------------------------------------------------------------------
 1 /oradata/CDB2/system01.dbf
 3 /oradata/CDB2/sysaux01.dbf
 5 /oradata/CDB2/undotbs01.dbf
 6 /u01/app/oracle/oradata/cdb2/CDB2/datafile/o1_mf_users_bk1wg0z4_.dbf
 7 /oradata/UPGR/system01.dbf
 8 /oradata/UPGR/sysaux01.dbf
 9 /oradata/UPGR/users01.dbf
 10 /tmp/aq01.dbf
 12 /u01/app/oracle/oradata/cdb2/CDB2/datafile/o1_mf_rene_bkpj4t2x_.dbf
9 rows selected.
SQL> SELECT PDB_ID, PDB_NAME, STATUS FROM CDB_PDBS ORDER BY PDB_ID;
PDB_ID PDB_NAME STATUS
---------- --------------- ---------------------------
 2 PDB$SEED NORMAL
 3 PDB1NORMAL

Conclusión
Como puedes ver ahora es un proceso mucho mas sencillo para poder cambiar un datafile, así que espero que te ayude en un futuro este pequeño tip.

Sin excusas para instalar los componentes del stack 12c de Oracle SOA

Desde el primer día que se liberó el stack de Oracle SOA Suite 12c, he estado escribiendo sobre cómo instalar sus diferentes componentes.

Recuerdo que el primero artículo lo escribí durante aquel fatídico 29-Junio-2014, cuando México fue derrotado por Holanda en 8vos de semifinal en la Copa del Mundo Brasil 2014.

En la SOA Community se coordinó una actividad para realizar el Quickstart installation de SOA Suite 12c, y desde ese momento he estado escribiendo sobre dicho stack.

Aquí simplemente consolido las diferentes guías que he generado:

No hay excusa para que no estés ya probando y usando los componentes de 12c.