viernes, 5 de junio de 2015

RMAN 12cR1 : Dile adios a tu respaldo cuando haces un DROP de tu PDB - Parte II


RMAN 12cR1 : Dile adios a tu respaldo cuando haces un DROP de tu PDB - Parte II

En mi última entrada en mi blog de Pythian (aquí en español) antes de unirme a Oracle, hable de lo que ocurre si intentas recuperar una BASE DE DATOS “PLUGGABLE” si haces un DROP PLUGGABLE DATABASE en 12cR1, para no hacer la historia larga , no vas a ser capaz de restaurar / recuperar tu base de datos. Ahora voy a profundizar un poco más en qué en lo que sucede en el archivo de control (controlfile), y por qué es necesario restaurar el archivo de control para que puedas recuperar tu base de datos “PLUGGABLE”.


Primero creo una base de datos llamada TESTDB



SQL> CREATE PLUGGABLE DATABASE testdb ADMIN USER testadm IDENTIFIED BY oracle ROLES=(DBA); 

Pluggable database created.


Si hago un volcado del archivo de control  tipo 4 , que incluye, la cabecera del archivo (datafile), la información de registro de base de datos y registros de progresos de checkpoint, los registros más antiguos y más recientes para los registros circulares reutilizables  y los 4 registros más recientes de registros circulares reutilizables .


Puedo ver en el volcado del archivo de control que la base de datos “pluggable”  tiene un “id” de 4 y un “Record id” de 4, que no son lo mismo, una es el PDB_ID y el otro es el registro de identificación  del archivo de control  , como se puede ver a continuación:



SQL> oradebug setmypid
Statement processed.
SQL> oradebug dump controlf 4;
Statement processed.
...

***************************************************************************
PLUGGABLE DATABASE RECORDS
***************************************************************************
(size = 684, compat size = 684, section max = 10, section in-use = 4,
last-recid= 13, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 540, numrecs = 10)
Pluggable DataBase record=1
id=1
dbid=2835408111
name=CDB$ROOT
first datafile link=1
pdbinc=0, pdbrdi=0, status=0x00000000, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.00000000, crescn scn: 0x0000.00000000
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=2
id=2
dbid=4092965150
name=PDB$SEED
first datafile link=7
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001dd3e3, crescn scn: 0x0000.001a4224
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=3
id=3
dbid=1554252633
name=PDBEM
first datafile link=10
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e0a9c, crescn scn: 0x0000.001dd76b
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=4
id=4
dbid=2633748847
name=TESTDB
first datafile link=12
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000001
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e066d, crescn scn: 0x0000.001e061c
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0


Ahora bien, si vemos un poco más abajo en el archivo, que voy a recortar para este ejercicio sólo mostrar el datafile 12, se puede observar que existe una relación entre este identificador, y los archivos de datos de esta base de datos “pluggable”.



...

***************************************************************************
DATA FILE RECORDS
***************************************************************************
...
DATA FILE #12:
name #17: /u01/app/oracle/oradata/cdborcl/pdbs/sysaux01.dbf
creation size=87040 block size=8192 status=0x80 flg=0x5 head=17 tail=17 dup=1
pdb_id 4, tablespace 1, index=14 krfil=4 prev_file_in_ts=0 prev_file_in_pdb=11
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:2 scn: 0x0000.001e066d 06/16/2014 16:09:37
Stop scn: 0x0000.001e066d 06/16/2014 16:09:37
Creation Checkpointed at scn: 0x0000.001e0620 06/16/2014 16:09:13
thread:1 rba:(0xf.54b4.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Offline scn: 0x0000.00000000 prev_range: 0
Online Checkpointed at scn: 0x0000.00000000
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
Plugged readony: NO
Plugin scnscn: 0x0000.00000000
Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Online move state: 0


Lo que procedo a hacer ahora, es borrar la base de datos “pluggable”




SQL> DROP PLUGGABLE DATABASE TESTDB INCLUDING DATAFILES;

Pluggable database dropped.


Y ahora hago otra volcado de mi archivo de control, puedo ver que el ID del volcado del controlfile es 0 y el “Record ID” sigue siendo 4, y ahora la relación entre los archivos de datos, que no se pierde, sigue siendo el número 4, que significa que no está relacionado con el “id” número 0, así que básicamente no hay archivos de datos relacionados con estaPDB, que mi lógica me dice que es lo que quiero, ya que acabo de borrar mi PDB.




***************************************************************************
PLUGGABLE DATABASE RECORDS
***************************************************************************
(size = 684, compat size = 684, section max = 10, section in-use = 4,
last-recid= 14, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 540, numrecs = 10)
Pluggable DataBase record=1
id=1
dbid=2835408111
name=CDB$ROOT
first datafile link=1
pdbinc=0, pdbrdi=0, status=0x00000000, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.00000000, crescn scn: 0x0000.00000000
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=2
id=2
dbid=4092965150
name=PDB$SEED
first datafile link=7
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001dd3e3, crescn scn: 0x0000.001a4224
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=3
id=3
dbid=1554252633
name=PDBEM
first datafile link=10
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e0a9c, crescn scn: 0x0000.001dd76b
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=4
id=0
dbid=2633748847
name=TESTDB
first datafile link=0
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000001
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e066d, crescn scn: 0x0000.001e061c
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0

...

***************************************************************************
DATA FILE RECORDS
***************************************************************************
...
DATA FILE #12:
creation size=87040 block size=8192 status=0x88c flg=0x1 head=0 tail=0 dup=0
pdb_id 4, tablespace 1, index=14 krfil=4 prev_file_in_ts=0 prev_file_in_pdb=11
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:2 scn: 0x0000.001e066d 06/16/2014 16:09:37
Stop scn: 0x0000.001e066d 06/16/2014 16:09:37
Creation Checkpointed at scn: 0x0000.001e0620 06/16/2014 16:09:13
thread:1 rba:(0xf.54b4.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Offline scn: 0x0000.00000000 prev_range: 0
Online Checkpointed at scn: 0x0000.00000000
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
Plugged readony: NO
Plugin scnscn: 0x0000.00000000
Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Online move state: 0


Ahora, yo no sé lo que se necesita para que el  PDB_ID = 0 se retire del controlfile, pero si sigo y creo otra base de datos “pluggable”, puedo ver en el volcado del controlfile que el registro para la BD (TESTDB) se ha borrado, la nueva BD agarra el “PDB record ID” de 4 y el registro de controlfile  4, y ahora en realidad no hay registro de que alguna vez existio, haciendo imposible que RMAN pueda recuperar / restaurar su base de datos con el registro siendo 0 o si la base de datos “pluggable”  no existe en la sección de “PLUGGABLE DATABASE RECORDS “.




SQL> CREATE PLUGGABLE DATABASE testdb1 ADMIN USER testadm IDENTIFIED BY oracle ROLES=(DBA); 

Pluggable database created.

...
***************************************************************************
PLUGGABLE DATABASE RECORDS
***************************************************************************
(size = 684, compat size = 684, section max = 10, section in-use = 4,
last-recid= 18, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 540, numrecs = 10)
Pluggable DataBase record=1
id=1
dbid=2835408111
name=CDB$ROOT
first datafile link=1
pdbinc=0, pdbrdi=0, status=0x00000000, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.00000000, crescn scn: 0x0000.00000000
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=2
id=2
dbid=4092965150
name=PDB$SEED
first datafile link=7
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001dd3e3, crescn scn: 0x0000.001a4224
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=3
id=3
dbid=1554252633
name=PDBEM
first datafile link=10
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e0a9c, crescn scn: 0x0000.001dd76b
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=4
id=4
dbid=602641775
name=TESTDB1
first datafile link=14
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000001
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e7a44, crescn scn: 0x0000.001e79d6
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0


Conclusión


Esto es sólo para ti y que te des una idea de lo que sucede en el archivo de control cuando se emiteDROP PLUGGABLE DATABASE, que es donde se guardan el registro de sus PDBs / Datafiles y respaldos, que es por qué al emitir ese comando, la única manera de restaurar / recuperar tu PDB es restaurar el archivo de control, la base de datos root y la PDB, esto se puede hacer en una base de datos auxiliar, si necesitas hacerlo.



martes, 31 de marzo de 2015

Como mover un datafile en Oracle 12c R1


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.

jueves, 5 de marzo de 2015

Oracle SQLcl ¡ El Futuro de SQL*Plus !


Oracle SQLcl ¡ El Futuro de SQL*Plus !

En diciembre del 2014 el equipo de Oracle SQLDeveloper lanzo como version beta la herramienta Oracle SQLcl , que en pocas palabras es el motor de SQL*Plus que le pertenece a SQLDeveloper, y la verdad desde que la vi, me enamore de esta pequeña herramienta.


Esta herramienta la puedes descargar desde OTN , en la sección de “Early Adopters” para SQLDeveloper, que es una herramienta de 11Mb, que ya tiene embebida el JRE, asi que esta lista para usarse una vez que descomprimes el archivo. Segun el equipo de SQLDeveloper, es una herramienta que va a ser distribuida con SQLDeveloper v4.1 así como Oracle Database 12cR2


2015-03-05_1327


Una vez que descargas la herramienta, te puedes conectar con EZConnect, asi como OCI o clientes Thick. En este caso, me voy a conectar al esquema de HR en la base de datos “pluggable”  PDB1 en el puerto 1521.



Rene@iMac-de-Antunez [] /Users/Rene/Documents/Oracle/SQL Developer/sqlcl/bin
Rene $ pwd
/Users/Rene/Documents/Oracle/SQL Developer/sqlcl/bin
Rene@iMac-de-Antunez [] /Users/Rene/Documents/Oracle/SQL Developer/sqlcl/bin
Rene $ ls
sql sql.bat
Rene@iMac-de-Antunez [] /Users/Rene/Documents/Oracle/SQL Developer/sqlcl/bin
Rene $ sh ./sql hr/hr@192.168.15.167:1521/PDB1
SQLcl: Release 4.1.0 Beta on Thu Mar 05 13:41:05 2015
Copyright (c) 1982, 2015, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
SQL>

Como puedes ver, muchos de los comandos de SQL*Plus funcionan como antes, pero te da un mensaje que antes no se veia “Try the new information command: info employees



SQL> desc employees
Try the new information command: info employees
Name Null Type
-------------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)

Y vamos a probar este comando, y es aquí cuando te enamoras de esta herramienta , ya que antes para poder sacar toda esta información, eran varios querys, que si no los tenias guardados, te iba a tomar bastantes minutos para sacar toda esta información. Perdon por poner imagenes, pero mi blog no me permite darle el formato que te permite apreciar el gran beneficio de esta herramienta



SQL> info employees

2015-03-05_1408


Y si con esto, no estas listo para bajar esta herramienta, también hay una versión extendida del comando info



SQL> info+ employees;

2015-03-05_1408_2


Y esto no acaba aqui, antes sacar el DDL de un objeto tenias que usar procedimientos de dbms_metadata.get_ddl, ahora lo unico que tienes que hacer es ejecutar el comando DDL nombre_objeto



SQL> DDL employees

CREATE TABLE "HR"."EMPLOYEES"
( "EMPLOYEE_ID" NUMBER(6,0),
"FIRST_NAME" VARCHAR2(20),
"LAST_NAME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE,
"EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE,
"PHONE_NUMBER" VARCHAR2(20),
"HIRE_DATE" DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE,
"JOB_ID" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE,
"SALARY" NUMBER(8,2),
"COMMISSION_PCT" NUMBER(2,2),
"MANAGER_ID" NUMBER(6,0),
"DEPARTMENT_ID" NUMBER(4,0),
CONSTRAINT "EMP_SALARY_MIN" CHECK (salary > 0) ENABLE,
CONSTRAINT "EMP_EMAIL_UK" UNIQUE ("EMAIL")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
...
CREATE OR REPLACE EDITIONABLE TRIGGER "HR"."UPDATE_JOB_HISTORY"
AFTER UPDATE OF job_id, department_id ON employees
FOR EACH ROW
BEGIN
add_job_history(:old.employee_id, :old.hire_date, sysdate,
:old.job_id, :old.department_id);
END;
ALTER TRIGGER "HR"."UPDATE_JOB_HISTORY" ENABLE

Como puedes ver, aunque son 11Mb, es una herramienta muy poderosa que viene a evolucionar a SQL*Plus, y aunque hay ciertas cosas que se van a poder hacer solo via SQL*Plus, te puedo apostar que a partir de hoy vas a empezar a utilizar SQLcl mucho mas que SQL*Plus

viernes, 20 de febrero de 2015

Por qué RMOUG y dar una platica en Denver es tan importante para mí


Por qué RMOUG y dar una platica en Denver es tan importante para mí
IMG_1949Para  los que escucharon ayer mi primera presentación de RMOUG 2015, se enteraron que estar en Denver, en el Colorado Convention Center y dar una platica en RMOUG es un momento muy personal y emotivo para mí.

Para aquellos de ustedes que no estuvieron presente, la razón de esto es debido a que cuando yo tenía 9 o 10 años, yo viví en Denver y mi papá solía limpiar oficinas y también dar servicio de “catering” y de vez en cuando solía acompañarlo y ayudarlo en la limpieza de esos lugares y así como en la entrega de alimentos, y yo solía soñar con ser una de las personas que se encontraban en este lugar, que venían a hablar o reunirse y que les entregábamos su comida, en vez de estar allí limpiando el lugar.

En aquel entonces siempre me había preguntado lo que estaban haciendo y que era tan importante para ellos, que teníamos que entregar este alimento, que ante mis ojos era para gente rica y sofisticada.

Después de dos años, dejé Denver y regresé a México, y crecí y estudié allí, pero esos pensamientos en realidad nunca se fueron de mi mente, así que cuando en el 2013 me invitaron a dar una platica a Denver para IOUG Collaborate , fue un sueño hecho realidad.

Este año, cuando me invitaron de nuevo a dar unas platicas a Denver no fue menos especial, ya que este año me convertí en la primera persona que pasó de ser un Oracle ACE Associate, que fue un premio bastante difícil de recibir, a un Oracle ACE, y fue aquí en Denver donde me entregaron, en la cena de los Oracle ACEs, mi premio. No puedo expresar la alegría y la satisfacción que tengo en este momento, y sin ninguna pena, que al escribir esto, tengo lágrimas de felicidad en mis ojos, y lo único que puedo decir es que “La macchina va dove vanno gli occhi

P.S. – Así que si en mi ultima platica no me viste usar corbata, es porque estaba usando mi sudadera de ACE

miércoles, 11 de febrero de 2015

Oracle 12c R1- Actualización de tu BD de 11.2.0.4 a 12.1.0.2


Oracle 12c R1- Actualización de tu BD de 11.2.0.4 a 12.1.0.2
12cComo muchos ya saben , ahora en Enero del 2015 se acabo el soporte Premier de la Version 11.2 de la BD de Oracle, así que es el momento de pensar en actualizar tus BDs a la ultima version , que es la 12.1.0.2 . Aquí no voy a entrar a detalle de como instalar los binarios de Oracle 12c , eso lo puedes tomar del post de RAC Attack .

Lo primero que tenemos que hacer es correr el script preupgrd.sql que viene en los binarios de 12.1 como sysdba


oracle@localhost.localdomain [RENE] /home/oracle
oracle $ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0

oracle@localhost.localdomain [RENE] /home/oracle
oracle $ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 10 19:39:05 2015

Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining
and Real Application Testing options

SQL> @/u01/app/oracle/product/12.1.0.2/rdbms/admin/preupgrd.sql

Y el resultado va a ser una serie de recomendaciones que tienes que hacer antes y despues de hacer la actualización a 12c


...

***************************************************************************
Executing Pre-Upgrade Checks in RENE...
***************************************************************************
************************************************************

====>> ERRORS FOUND for RENE <<====

The following are *** ERROR LEVEL CONDITIONS *** that must be addressed
prior to attempting your upgrade.
Failure to do so will result in a failed upgrade.
1) Check Tag: OLS_SYS_MOVE
Check Summary: Check if SYSTEM.AUD$ needs to move to SYS.AUD$ before upgrade
Fixup Summary:
"Execute olspreupgrade.sql script prior to upgrade."
+++ Source Database Manual Action Required +++

You MUST resolve the above error prior to upgrade

************************************************************

************************************************************

====>> PRE-UPGRADE RESULTS for RENE <<====

ACTIONS REQUIRED:

1. Review results of the pre-upgrade checks:
/u01/app/oracle/cfgtoollogs/RENE/preupgrade/preupgrade.log

...

Así que lo primero que vamos a hacer es revisar el archivo preupgrade.log para ver que tenemos que corregir antes de continuar, aqui no voy a poner todo, pero si un pequeño resumen de lo que es el archivo

oracle@localhost.localdomain [RENE] /home/oracle
oracle $ cat /u01/app/oracle/cfgtoollogs/RENE/preupgrade/preupgrade.log
Oracle Database Pre-Upgrade Information Tool 02-10-2015 19:39:32
Script Version: 12.1.0.2.0 Build: 006
**********************************************************************
 Database Name: RENE
 Container Name: Not Applicable in Pre-12.1 database
 Container ID: Not Applicable in Pre-12.1 database
 Version: 11.2.0.4.0
 Compatible: 11.2.0.4.0
 Blocksize: 8192
 Platform: Linux x86 64-bit
 Timezone file: V14
**********************************************************************
...
**********************************************************************
 [Component List]
**********************************************************************
--> Oracle Catalog Views [upgrade] VALID
--> Oracle Packages and Types [upgrade] VALID
--> JServer JAVA Virtual Machine [upgrade] VALID
--> Oracle XDK for Java [upgrade] VALID
--> Oracle Workspace Manager [upgrade] VALID
--> OLAP Analytic Workspace [upgrade] VALID
--> Oracle Label Security [upgrade] VALID
--> Oracle Text [upgrade] VALID
--> Oracle XML Database [upgrade] VALID
--> Oracle Java Packages [upgrade] VALID
--> Expression Filter [upgrade] VALID
--> Rule Manager [upgrade] VALID
--> Oracle OLAP API [upgrade] VALID
...
**********************************************************************
 [Pre-Upgrade Checks]
**********************************************************************
WARNING: --> Process Count may be too low

 Database has a maximum process count of 78 which is lower than the
 default value of 300 for this release.
 You should update your processes value prior to the upgrade
 to a value of at least 300.
 For example:
 ALTER SYSTEM SET PROCESSES=300 SCOPE=SPFILE
 or update your init.ora file.

ERROR: --> SYSTEM.AUD$ (audit records) Move

 Oracle requires that records in the audit table SYSTEM.AUD$ be moved
 to SYS.AUD$ prior to upgrading..

 The Database has 38 rows in SYSTEM.AUD$ which
 will be moved during the upgrade.

 The downtime during the upgrade will be affected if there are a
 large number of rows to be moved.

 The audit data can be moved manually prior to the upgrade by using
 the script: rdbms/admin/olspreupgrade.sql which is part of the
 Oracle Database 12c software.
 Please refer to the Label Security Administrator guide or
 the Database Upgrade guide.

INFORMATION: --> OLAP Catalog(AMD) exists in database

 Starting with Oracle Database 12c, OLAP Catalog component is desupported.
 If you are not using the OLAP Catalog component and want
 to remove it, then execute the
 ORACLE_HOME/olap/admin/catnoamd.sql script before or
 after the upgrade.

INFORMATION: --> Older Timezone in use

 Database is using a time zone file older than version 18.
 After the upgrade, it is recommended that DBMS_DST package
 be used to upgrade the 11.2.0.4.0 database time zone version
 to the latest version which comes with the new release.
 Please refer to My Oracle Support note number 977512.1 for details.

INFORMATION: --> There are existing Oracle components that will NOT be
 upgraded by the database upgrade script. Typically, such components
 have their own upgrade scripts, are deprecated, or obsolete.
 Those components are: OLAP Catalog

**********************************************************************
 [Pre-Upgrade Recommendations]
**********************************************************************

 *****************************************
 ********* Dictionary Statistics *********
 *****************************************

Please gather dictionary statistics 24 hours prior to
upgrading the database.
To gather dictionary statistics execute the following command
while connected as SYSDBA:
 EXECUTE dbms_stats.gather_dictionary_stats;

^^^ MANUAL ACTION SUGGESTED ^^^

**********************************************************************
 [Post-Upgrade Recommendations]
**********************************************************************

 *****************************************
 ******** Fixed Object Statistics ********
 *****************************************

Please create stats on fixed objects two weeks
after the upgrade using the command:
 EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

^^^ MANUAL ACTION SUGGESTED ^^^

**********************************************************************
 ************ Summary ************

 1 ERROR exist that must be addressed prior to performing your upgrade.
 1 WARNING that Oracle suggests are addressed to improve database performance.
 3 INFORMATIONAL messages that should be reviewed prior to your upgrade.

 After your database is upgraded and open in normal mode you must run
 rdbms/admin/catuppst.sql which executes several required tasks and completes
 the upgrade process.

 You should follow that with the execution of rdbms/admin/utlrp.sql, and a
 comparison of invalid objects before and after the upgrade using
 rdbms/admin/utluiobj.sql

 If needed you may want to upgrade your timezone data using the process
 described in My Oracle Support note 1509653.1
 ***********************************

Ya que verificamos el archivo, lo primero que vamos a quitar es el componente del Catalogo OLAP (AMD), ya que este no es soportado e incluido en 12c, así que es algo que tienes que tomar en cuenta cuando hagas tu actualización

oracle@localhost.localdomain [RENE] /home/oracle
oracle $ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 10 19:41:51 2015

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining
and Real Application Testing options

SQL> @/u01/app/oracle/product/12.1.0.2/olap/admin/catnoamd.sql

Synonym dropped.
...
Synonym dropped.

PL/SQL procedure successfully completed.

1 row deleted.

SQL> commit;

Commit complete.

Lo siguiente es que vamos a mover los registros con el script olspreupgrade.sql que se encuentran en la tabla AUD$ debido al componente Oracle Label Security

SQL> @/u01/app/oracle/product/12.1.0.2/rdbms/admin/olspreupgrade.sql

Function created.

No errors.

Function created.

No errors.

Function created.

No errors.
2015-02-10 19:42:17 ******* BEGINNING OLS PRE RENEADE SCRIPT ********
The amount of FREE space required = 131072 Bytes
Free space available on SYSTEM tablespace= 33798078464 Bytes
2015-02-10 19:42:17 ******** PROCEEDING WITH OLS PRE RENEADE *******
Audit records successfully moved to SYS.PREUPG_AUD$

PL/SQL procedure successfully completed.

No errors.
Total number of rows in SYS.PREUPG_AUD$: 38
2015-02-10 19:42:18 ******* FINISHING OLS PRE RENEADE SCRIPT ********

PL/SQL procedure successfully completed.

Para continuar, vamos a hacer unos cambios en el spfile para poder hacer nuestra actualización

SQL> create pfile from spfile;

File created.

SQL> alter system set processes=300 scope=spfile;

System altered.

SQL> alter system set COMPATIBLE='12.1.0' scope=spfile;

System altered.

SQL> EXECUTE dbms_stats.gather_dictionary_stats;

PL/SQL procedure successfully completed.

El ultimo paso para empezar nuestra actualización , vamos a correr el preupgrade_fixups.sql, aqui me esta marcando el error en OLS_SYS_MOVE, pero si reviso el log me dice que tengo 0 registros que mover

SQL> @/u01/app/oracle/cfgtoollogs/RENE/preupgrade/preupgrade_fixups.sql
Pre-Upgrade Fixup Script Generated on 2015-02-10 19:39:30 Version: 12.1.0.2 Build: 006
Beginning Pre-Upgrade Fixups...
Executing in container RENE
...
**********************************************************************
 [Pre-Upgrade Recommendations]
**********************************************************************
**********************************************************************
Check Tag: OLS_SYS_MOVE
Check Summary: Check if SYSTEM.AUD$ needs to move to SYS.AUD$ before upgrade
Fix Summary: Execute olspreupgrade.sql script prior to upgrade.
**********************************************************************
Fixup Returned Information:
ERROR: --> SYSTEM.AUD$ (audit records) Move

 Oracle requires that records in the audit table SYSTEM.AUD$ be moved
 to SYS.AUD$ prior to upgrading..

 The Database has 0 rows in SYSTEM.AUD$ which
 will be moved during the upgrade.

 The downtime during the upgrade will be affected if there are a
 large number of rows to be moved.

 The audit data can be moved manually prior to the upgrade by using
 the script: rdbms/admin/olspreupgrade.sql which is part of the
 Oracle Database 12c software.
 Please refer to the Label Security Administrator guide or
 the Database Upgrade guide.
**********************************************************************
...
 *****************************************
 ********* Dictionary Statistics *********
 *****************************************

Please gather dictionary statistics 24 hours prior to
upgrading the database.
To gather dictionary statistics execute the following command
while connected as SYSDBA:
 EXECUTE dbms_stats.gather_dictionary_stats;

^^^ MANUAL ACTION SUGGESTED ^^^

 **************************************************
 ************* Fixup Summary ************

 2 fixup routines returned INFORMATIONAL text that should be reviewed.
 1 ERROR LEVEL check returned INFORMATION that must be acted on prior to upgrade.

 ************************************************************
 ====>> USER ACTION REQUIRED <<====
 ************************************************************

 1) Check Tag: OLS_SYS_MOVE failed.
 Check Summary: Check if SYSTEM.AUD$ needs to move to SYS.AUD$ before upgrade
 Fixup Summary:
 "Execute olspreupgrade.sql script prior to upgrade."
 ^^^ MANUAL ACTION REQUIRED ^^^

 **************************************************
 You MUST resolve the above error prior to upgrade
 **************************************************
**************** Pre-Upgrade Fixup Script Complete *********************

PL/SQL procedure successfully completed.

Vamos a bajar nuestra instancia y copiar los archivos de passwords y spfile

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining
and Real Application Testing options
oracle@localhost.localdomain [RENE] /home/oracle
oracle $ cp /u01/app/oracle/product/11.2.0/dbs/orapwRENE /u01/app/oracle/product/12.1.0.2/dbs/
oracle@localhost.localdomain [RENE] /home/oracle
oracle $ cp /u01/app/oracle/product/11.2.0/dbs/spfileRENE.ora /u01/app/oracle/product/12.1.0.2/dbs/

Lo que tenemos que hacer ahora es cambiar el ORACLE_HOME para que apunte a los nuevos binarios

oracle@localhost.localdomain [RENE] /u01/app/oracle/product/12.1.0.2/rdbms/admin
oracle $ export ORACLE_HOME="/u01/app/oracle/product/12.1.0.2"
oracle@localhost.localdomain [RENE] /u01/app/oracle/product/12.1.0.2/rdbms/admin
oracle $ echo $ORACLE_HOME
/u01/app/oracle/product/12.1.0.2

Ya que cambiamos el ORACLE_HOME, vamos a levantar la instancia en mode upgrade y vamos a cambiarnos a la ruta $ORACLE_HOME/rdbms/admin

oracle@localhost.localdomain [RENE] /home/oracle
oracle $ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Tue Feb 10 19:47:47 2015

Copyright (c) 1982, 2014, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup upgrade
ORACLE instance started.

Total System Global Area 826277888 bytes
Fixed Size 2929792 bytes
Variable Size 322964352 bytes
Database Buffers 494927872 bytes
Redo Buffers 5455872 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

oracle@localhost.localdomain [RENE] /home/oracle
oracle $ cd $ORACLE_HOME/rdbms/admin

Y ahora vamos a correr la nueva manera de actualizar nuestras BDs, que es con el script de perl catctl.pl, este va a correr en 73 fases, algunos en modo serial , algunos otros en modo paralelo, como lo puedes ver en el ejemplo de abajo

oracle@localhost.localdomain [RENE] /u01/app/oracle/product/12.1.0.2/rdbms/admin
oracle $ $ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
 LANGUAGE = (unset),
 LC_ALL = (unset),
 LC_CTYPE = "UTF-8",
 LANG = "en_US.UTF-8"
 are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Argument list for [catctl.pl]
SQL Process Count n = 0
SQL PDB Process Count N = 0
Input Directory d = 0
Phase Logging Table t = 0
Log Dir l = 0
Script s = 0
Serial Run S = 0
Upgrade Mode active M = 0
Start Phase p = 0
End Phase P = 0
Log Id i = 0
Run in c = 0
Do not run in C = 0
Echo OFF e = 1
No Post Upgrade x = 0
Reverse Order r = 0
Open Mode Normal o = 0
Debug catcon.pm z = 0
Debug catctl.pl Z = 0
Display Phases y = 0
Child Process I = 0

catctl.pl version: 12.1.0.2.0
Oracle Base = /u01/app/oracle

Analyzing file catupgrd.sql
Log files in /u01/app/oracle/product/12.1.0.2/rdbms/admin
catcon: ALL catcon-related output will be written to catupgrd_catcon_4207.lst
catcon: See catupgrd*.log files for output generated by scripts
catcon: See catupgrd_*.lst files for spool files, if any
Number of Cpus = 2
SQL Process Count = 0
New SQL Process Count = 4

------------------------------------------------------
Phases [0-73]
Serial Phase #: 0 Files: 1
 Time: 146s
Serial Phase #: 1 Files: 5 Time: 53s
Restart Phase #: 2 Files: 1 Time: 0s
Parallel Phase #: 3 Files: 18 Time: 13s
...
Serial Phase #:65 Files: 1 Calling sqlpatch with LD_LIBRARY_PATH=/u01/app/oracle/product/12.1.0.2/lib; export LD_LIBRARY_PATH;/u01/app/oracle/product/12.1.0.2/perl/bin/perl -I /u01/app/oracle/product/12.1.0.2/rdbms/admin -I /u01/app/oracle/product/12.1.0.2/rdbms/admin/../../sqlpatch /u01/app/oracle/product/12.1.0.2/rdbms/admin/../../sqlpatch/sqlpatch.pl -verbose -upgrade_mode_only > catupgrd_datapatch_upgrade.log 2> catupgrd_datapatch_upgrade.err
returned from sqlpatch
 Time: 29s
Serial Phase #:66 Files: 1 Time: 52s
Serial Phase #:68 Files: 1 Time: 0s
Serial Phase #:69 Files: 1 Calling sqlpatch with LD_LIBRARY_PATH=/u01/app/oracle/product/12.1.0.2/lib; export LD_LIBRARY_PATH;/u01/app/oracle/product/12.1.0.2/perl/bin/perl -I /u01/app/oracle/product/12.1.0.2/rdbms/admin -I /u01/app/oracle/product/12.1.0.2/rdbms/admin/../../sqlpatch /u01/app/oracle/product/12.1.0.2/rdbms/admin/../../sqlpatch/sqlpatch.pl -verbose > catupgrd_datapatch_normal.log 2> catupgrd_datapatch_normal.err
returned from sqlpatch
 Time: 59s
Serial Phase #:70 Files: 1 Time: 72s
Serial Phase #:71 Files: 1 Time: 0s
Serial Phase #:72 Files: 1 Time: 0s
Serial Phase #:73 Files: 1 Time: 44s 

Grand Total Time: 1742s 

LOG FILES: (catupgrd*.log)

Upgrade Summary Report Located in:
/u01/app/oracle/product/12.1.0.2/cfgtoollogs/RENE/upgrade/upg_summary.log

Grand Total Upgrade Time: [0d:0h:29m:2s]
oracle@localhost.localdomain [RENE] /u01/app/oracle/product/12.1.0.2/rdbms/admin
oracle $ cat /u01/app/oracle/product/12.1.0.2/cfgtoollogs/RENE/upgrade/upg_summary.log

Oracle Database 12.1 Post-Upgrade Status Tool 02-10-2015 20:18:15

Component Current Version Elapsed Time
Name Status Number HH:MM:SS

Oracle Server RENEADED 12.1.0.2.0 00:14:46
JServer JAVA Virtual Machine VALID 12.1.0.2.0 00:03:52
Oracle Workspace Manager VALID 12.1.0.2.0 00:00:58
OLAP Analytic Workspace VALID 12.1.0.2.0 00:00:37
Oracle OLAP API VALID 12.1.0.2.0 00:00:22
Oracle Label Security VALID 12.1.0.2.0 00:00:11
Oracle XDK VALID 12.1.0.2.0 00:00:40
Oracle Text VALID 12.1.0.2.0 00:00:57
Oracle XML Database VALID 12.1.0.2.0 00:01:36
Oracle Database Java Packages VALID 12.1.0.2.0 00:00:17
Final Actions 00:01:20
Post Upgrade 00:01:10

Total Upgrade Time: 00:27:13

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.14
Grand Total Upgrade Time: [0d:0h:29m:2s]

Como puedes ver todo es valido, pero vamos a compilar todos nuestros objetos con utlrp.sql

oracle@localhost.localdomain [RENE] /u01/app/oracle/product/12.1.0.2/rdbms/admin
oracle $ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Tue Feb 10 20:21:53 2015

Copyright (c) 1982, 2014, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 826277888 bytes
Fixed Size 2929792 bytes
Variable Size 432016256 bytes
Database Buffers 385875968 bytes
Redo Buffers 5455872 bytes
Database mounted.
Database opened.
SQL> @?/rdbms/admin/utlrp.sql

Ahora lo que tenemos que hacer es correr el script postupgrade_fixups.sql

SQL> @/u01/app/oracle/cfgtoollogs/RENE/preupgrade/postupgrade_fixups.sql
Post Upgrade Fixup Script Generated on 2015-02-10 19:39:30 Version: 12.1.0.2 Build: 006
Beginning Post-Upgrade Fixups...

**********************************************************************
Check Tag: OLD_TIME_ZONES_EXIST
Check Summary: Check for use of older timezone data file
Fix Summary: Update the timezone using the DBMS_DST package after upgrade is complete.
**********************************************************************
Fixup Returned Information:
INFORMATION: --> Older Timezone in use

 Database is using a time zone file older than version 18.
 After the upgrade, it is recommended that DBMS_DST package
 be used to upgrade the 12.1.0.2.0 database time zone version
 to the latest version which comes with the new release.
 Please refer to My Oracle Support note number 977512.1 for details.
**********************************************************************

**********************************************************************
Check Tag: NOT_UPG_BY_STD_RENED
Check Summary: Identify existing components that will NOT be upgraded
Fix Summary: This fixup does not perform any action.
**********************************************************************
Fixup Returned Information:
This fixup does not perform any action.
If you want to upgrade those other components, you must do so manually.
**********************************************************************

**********************************************************************
 [Post-Upgrade Recommendations]
**********************************************************************

 *****************************************
 ******** Fixed Object Statistics ********
 *****************************************

Please create stats on fixed objects two weeks
after the upgrade using the command:
 EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

^^^ MANUAL ACTION SUGGESTED ^^^

 **************************************************
 ************* Fixup Summary ************

 2 fixup routines generated INFORMATIONAL messages that should be reviewed.

*************** Post Upgrade Fixup Script Complete ********************

PL/SQL procedure successfully completed.

Como puedes ver, lo unico que falta es cambiar el archivo de las zonas de tiempo, que aqui no voy a entrar en detalle, ya que eso lo puedes ver en la nota 977512.1, pero que sepas que es algo que tienes que hacer, pero aqui te voy a mostrar que pase de la version 14 a la version 18

...
PROPERTY_NAME VALUE
-------------------------------------------------------------------------------------
DST_PRIMARY_TT_VERSION 18
DST_SECONDARY_TT_VERSION 14
DST_UPGRADE_STATE UPGRADE
...
PROPERTY_NAME VALUE
-------------------------------------------------------------------------------------
DST_PRIMARY_TT_VERSION 18
DST_SECONDARY_TT_VERSION 0
DST_UPGRADE_STATE NONE

FILENAME VERSION CON_ID
------------------------------------------------------------ ---------- ----------
timezlrg_18.dat 18 0

Espero que este pequeño post te ayude en tu próxima actualización de tu Base de Datos y si tienes alguna pregunta o duda, hazmelo saber.

jueves, 5 de febrero de 2015

Mi Primer IOUG #PlugInToVegas para Collaborate 2015


Mi Primer IOUG #PlugInToVegas para Collaborate 2015
904438_10203660764900509_4645413709921957554_oEl día de hoy recibí un correo electrónico de @IOUG que mi sesión en Collaborate de este año 2015 (556:Architecting your own DBaaS in a Private Cloud with EM12c ) va a ser parte de la conferencia virtual #PlugInToVegas , y a pesar de que he presentado varias veces en Collaborate y he hecho varios seminarios via web, esta es la primera vez que hare estas dos al mismo tiempo, por lo que será un nuevo reto en este proyecto de vida que traigo y espero que todos los que estarán presentes de manera virtual puedan disfrutar de ella de la misma manera que los que estarán presente en la sala de conferencias.

Así que si no vas a estar en Collaborate de este año en Las Vegas, te invito a que me acompañes en #PlugInToVegas, tu opción virtual ow.ly/IdP5L

También, como ya probablemente sepas,  soy parte del Cloud SIG de IOUG  y si si vas a estar presente en Las Vegas, te invito a que nos acompañes en las sesiones que el tema principal sera la nube y así puedas obtener el máximo provecho de este gran evento.