miércoles, 23 de julio de 2014

Oracle 12cR1 : Ya está aquí! Base de datos Oracle In-Memory

El día de ayer oficialmente salió la ultima version de la Base de Datos 12c (12.1.0.2.0), y lo peculiar de esta versión, es la inclusion de una nueva tecnología de base de datos que implementa en memoria un formato de datos columnar ,para ofrecer un procesamiento de SQL extremadamente rápido.

Continua leyendo en mi blog de Oracle.com ; Oracle 12cR1 : Ya está aquí! Base de datos Oracle In-Memory

martes, 1 de julio de 2014

Presentando en Oracle Open World 2014

Hola, si todo sale bien y si Dios quiere, una vez mas voy a tener la oportunidad de estar presente en el Oracle Open World 2014, este año voy a dar dos platicas

Session ID: UGF1911
Session Title: Oracle RMAN in Oracle Database 12c: The Next Generation

Session ID: UGF1941
Session Title: Getting Started with Database as a Service with Oracle Enterprise Manager 12c

Espero verte ahi, y de pasada en la bahia nadando en el Oracle OpenWorld - San Francisco Bay Swim - Part III con nuestros amigos blogeros :)

Te espero ahi!


miércoles, 25 de junio de 2014

Como crear un Guest LDOM en un SPARC-T5 con Solaris 11

Oracle VM Server para SPARC proporciona alta eficiencia para la virtualización de clase empresarial con los servidores SPARC que son compatibles, por ejemplo el T4 o T5 .
Para continuar, vamos a ver como es que podemos obtener esta virtualización ...

miércoles, 11 de junio de 2014

Clonación de una BD desde un snapshot de mi base de datos Standby Física

El otro día tuve un cliente que cuando estábamos planeando la solución de sus respaldos, el tenía la necesidad de tomar snapshots de su entorno productivo y de ese snapshot, clonar a sus entornos dev / QA.

Así que a continuación es el resultado del planteamiento de esa solución, probablemente, no es nada que no hayas visto, pero si no , ahí te va.

A pesar de que estoy usando el DG broker, con el propósito de este ejercicio, voy a hacerlo a través de la interfaz de sqlplus, pero quería mostrarte antes el entorno en el DGMGRL.

Para ello, voy a utilizar 2 bases de datos, como mi standby a orclstby  y para el duplicado a orcltest

[oracle@adg12c ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       26G   22G  3.3G  87% /
/dev/sda1              99M   24M   71M  25% /boot
tmpfs                 2.0G  641M  1.4G  33% /dev/shm
/dev/sdb1              12G  159M   12G   2% /u02
[oracle@adg12c ~]$ . oraenv
ORACLE_SID = [oracle] ? orcl
The Oracle base has been set to /u01/app/oracle
[oracle@adg12c ~]$ dgmgrl
DGMGRL for Linux: Version 12.1.0.1.0 - 64bit Production

Copyright (c) 2000, 2012, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.
DGMGRL> connect sys/oracle
Connected as SYSDG.
DGMGRL> show configuration

Configuration - DGCONFIG

  Protection Mode: MaxPerformance
  Databases:
  orcl     - Primary database
    farsync  - Far Sync 
      orclstby - Physical standby database 
    farsync2 - Far Sync (inactive)

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

DGMGRL> exit

Para que esto funcione, y no tener ningún problema, hay que asegurarse de que el Standby DB sea consistente, y para ello hay que detener la aplicación de redo en el entorno de DG para la que el snapshot pueda suceder . También detuve la BD standby, a pesar de que eso no es necesario.

[oracle@adg12c ~]$ . oraenv
ORACLE_SID = [orcl] ? orclstby
The Oracle base has been set to /u01/app/oracle

[oracle@adg12c ~]$ sqlplus

SQL*Plus: Release 12.1.0.1.0 Production on Wed Jun 11 17:49:05 2014

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

Enter user-name: /as sysdba

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;


Database altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit

El snapshot se toma durante este proceso, y para este ejercicio, el resultado del snapshot fue puesto en el siguiente directorio /u02/app/oracle/oradata/orcltest/, en el mismo servidor, pero este se puede poner en otro servidor. Puedes emular esto con un scp (scp -r /u01/app/oracle/oradata/orclstby/ /u02/app/oracle/oradata/orcltest/)

[oracle@adg12c orclstby]$ cd /u02/app/oracle/oradata/orcltest/
[oracle@adg12c orcltest]$ ls
orclstby
[oracle@adg12c orcltest]$ cd orclstby
[oracle@adg12c orclstby]$ ls
control01.ctl  ORCLSTBY  redo01.log  redo03.log  srl02.log  srl04.log     system01.dbf  undotbs01.dbf
orcl_pdb       pdbseed   redo02.log  srl01.log   srl03.log  sysaux01.dbf  temp01.dbf    users01.dbf

También una vez que el snapshot ha terminado, arrancamos la BD Standby orclstby. 

[oracle@adg12c orclstby]$ . oraenv
ORACLE_SID = [farsync2] ? orclstby
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@adg12c orclstby]$ sqlplus

SQL*Plus: Release 12.1.0.1.0 Production on Wed Jun 11 18:43:18 2014

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

Enter user-name: /as sysdba
Connected to an idle instance.

SQL> startup mount
ORACLE instance started.

Total System Global Area  409194496 bytes
Fixed Size                  2288968 bytes
Variable Size             318767800 bytes
Database Buffers           79691776 bytes
Redo Buffers                8445952 bytes
Database mounted.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Database altered.

Así que ahora el siguiente paso, es crear un pfile para la base de datos orcltest, aquí también hay que cambiar la locación de los archivos correspondientes a la nueva ubicación.

[oracle@adg12c orclstby]$ cat /tmp/initorcltest.ora
*.archive_lag_target=0
*.audit_file_dest='/u02/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='12.1.0.0.0'
*.control_files='/u02/app/oracle/oradata/orcltest/orclstby/control01.ctl','/u02/app/oracle/oradata/orcltest/orclstby/control02.ctl'
*.db_block_size=8192
*.db_domain='oracle.com'
*.db_name='orcltest'
*.db_recovery_file_dest='/u02/app/oracle/recovery_area'
*.db_recovery_file_dest_size=5368709120
*.dg_broker_start=TRUE
*.diagnostic_dest='/u02/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.enable_pluggable_database=true
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'
orcl.log_archive_format='%t_%s_%r.dbf'
*.log_archive_max_processes=4
*.log_archive_min_succeed_dest=1
orcl.log_archive_trace=0
*.memory_target=390m
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'


[oracle@adg12c orclstby]$ . oraenv
ORACLE_SID = [orclstby] ? orcltest
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/12.1.0/dbhome_1
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@adg12c orclstby]$ sqlplus

SQL*Plus: Release 12.1.0.1.0 Production on Wed Jun 11 18:30:28 2014

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

Enter user-name: /as sysdba
Connected to an idle instance.

SQL> startup nomount pfile='/tmp/initorcltest.ora';
ORACLE instance started.

Total System Global Area  409194496 bytes
Fixed Size                  2288968 bytes
Variable Size             318767800 bytes
Database Buffers           79691776 bytes
Redo Buffers                8445952 bytes

Ahora, sólo tenemos que crear el controlfile con la ubicación del snapshot de los datafiles y cambiarle el nombre de a la base de datos a orlctest.

SQL> CREATE CONTROLFILE SET DATABASE "orcltest" RESETLOGS
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u02/app/oracle/oradata/orcltest/orclstby/redo01.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 '/u02/app/oracle/oradata/orcltest/orclstby/redo02.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 '/u02/app/oracle/oradata/orcltest/orclstby/redo03.log'  SIZE 50M BLOCKSIZE 512
DATAFILE
  '/u02/app/oracle/oradata/orcltest/orclstby/system01.dbf',
  '/u02/app/oracle/oradata/orcltest/orclstby/sysaux01.dbf',
  '/u02/app/oracle/oradata/orcltest/orclstby/undotbs01.dbf',
  '/u02/app/oracle/oradata/orcltest/orclstby/pdbseed/system01.dbf',
  '/u02/app/oracle/oradata/orcltest/orclstby/users01.dbf',
  '/u02/app/oracle/oradata/orcltest/orclstby/pdbseed/sysaux01.dbf',
  '/u02/app/oracle/oradata/orcltest/orclstby/orcl_pdb/system01.dbf',
  '/u02/app/oracle/oradata/orcltest/orclstby/orcl_pdb/sysaux01.dbf',
  '/u02/app/oracle/oradata/orcltest/orclstby/orcl_pdb/SAMPLE_SCHEMA_users01.dbf',
  '/u02/app/oracle/oradata/orcltest/orclstby/orcl_pdb/example01.dbf'
CHARACTER SET WE8MSWIN1252
;
  2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23  
Control file created.

SQL> RECOVER DATABASE
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done


SQL> ALTER DATABASE OPEN RESETLOGS;

Database altered.

SQL> ALTER PLUGGABLE DATABASE ALL OPEN;

Pluggable database altered.

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/app/oracle/oradata/orcltest/orclstby/temp01.dbf'
     SIZE 62914560  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = PDB$SEED;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/app/oracle/oradata/orcltest/orclstby/pdbseed/pdbseed_temp01.dbf'
     SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = ORCL_PDB;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/app/oracle/oradata/orcltest/orclstby/orcl_pdb/orcl_pdb_temp01.dbf'
     SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = CDB$ROOT;
  2  
Tablespace altered.

SQL> 
Session altered.

SQL>   2  
Tablespace altered.

SQL> 
Session altered.

SQL>   2  

Tablespace altered.

SQL> 
Session altered.

Y como puedes ver, la nueva BD está en corriendo y funcionando de un snapshot de la base de datos standby.

SQL> set lines 200 pages 9999
SQL>SELECT NAME,OPEN_MODE,PROTECTION_MODE,
       PROTECTION_LEVEL,
       DATABASE_ROLE ROLE,
       SWITCHOVER_STATUS
FROM V$DATABASE;
  
NAME      OPEN_MODE            PROTECTION_MODE      PROTECTION_LEVEL     ROLE             SWITCHOVER_STATUS
--------- -------------------- -------------------- -------------------- ---------------- --------------------
ORCLTEST  READ WRITE           MAXIMUM PERFORMANCE  UNPROTECTED          PRIMARY          NOT ALLOWED

SQL> select host_name,instance_name from gv$instance;

HOST_NAME                                                        INSTANCE_NAME
---------------------------------------------------------------- ----------------
adg12c.oracle.com                                                orcltest

Conclusión

Esta no es la forma recomendada de hacerlo, pero eso no quiere decir que no se puede hacer. También puedes tener pérdida de datos, ya que si la BD primaria no esta totalmente sincronizada con la BD standby, vas a tener un hueco, así que tienes que estar seguro de el último redo log haya sido aplicado. De igual manera, asegurate de que esto no tenga un impacto en tu ambiente de alta disponibilidad, ya que aunque sea por pocos minutos , la replicación de tu ambiente DG estará inactivo para que puedas tener un snapshot de una base de datos consistente.




miércoles, 4 de junio de 2014

La nueva version de Enterprise Manager 12c, Release 4!

El día 3 de Junio del 2014 se anuncio la nueva versión de Enterprise Manager, y en esta versión hay nuevas funcionalidades que realmente hace que uno se apasione por este producto. Aquí no voy a platicar de todas las nuevas características, pero si de unas cuantas que son las de mas interés para la Base de Datos.
Gestión Avanzada de Umbrales (Advanced Threshold Management)
Esta funcionalidad  lo que permite es tener una mayor flexibilidad en los umbrales de todos tus objetivos (Targets)...

viernes, 30 de mayo de 2014

Mi camino para convertirme en un Oracle ACE Associate

A pesar de que han pasado un par de meses desde que recibí mi premio Oracle ACE Associate,  no había escrito sobre él camino para obtenerlo, así que te voy a platicar como fue.

Una de las mejores cosas que Pythian tiene, es que cuando llegas a esta empresa, es que en las primeras semanas de unirse a ella, te toca sentarte con los  líderes de Pythian. Yo escribí acerca de mi primera semana en esta entrada (Inlges), y a pesar de que ya no estoy trabajando para ellos, todavía sigo siendo buenos amigos con ellos.

A lo que quería llegar, es que en una de esas conversaciones, me senté con su CTO, ACE Director Alex Gorbachev, y una de las cosas que él me pregunto, fue; ¿Cuál es una de mis metas profesionales en Pythian? Y mi respuesta era convertirse en un ACE de Oracle, su respuesta fue que él no iba a poner una nominación o recomendarme para este premio. No voy a decir que no dolio un poco, ya que yo ya estaba muy activo en las redes sociales, tenia blogeando desde hace 4 años y estaba haciendo presentaciones publicas, y de hecho fue una de las razones por las que me contrato Pythian.

Pero esto sólo alimentó la pasión, así que puse el dedo en la llaga para lograr este objetivo. En el inter, me aceptaron en el Oracle Open World, IOUG Collaborate, escribió un artículo para OTN LAD, seguí presentado en México para el grupo ORAMEX, hice un Webinar para el grupo LAOUC, aparecí en el boletín de RMOUG. Así que después de hablar con mi mentor y gran amiga, Kellyn Pot'vin (@dbakevlar). Ella decidió que era el momento de poner la nominación para convertirme en ACE.

No te voy a mentir , pensé que lo tenía en la bolsa, y para mi sorpresa, mi nominación fue rechazada, y esto no solo dolió, eso fue un golpe directo a la cabeza, ya que al mismo tiempo, varias cosas personales estaban sucediendo a mi alrededor. Me puse a pensar si estaba bien todo lo que ya estaba haciendo y aún así me rechazaron, entonces, ¿qué otra cosa se ​​supone que debo hacer?

Así que por un par de meses me revolcaba en mi dolor no hacer recibido el premio ACE. Pero finalmente me levante de nuevo, segui escribiendo en mis  blogs, continue presentando, hasta que finalmente un día, Francisco Muñoz (@ fcomunoz), Ronald Vargas (@ rovaque), Paola Pullas (@ paolapullas) y Kellyn (Con quién estoy eternamente agradecido) en tándem, enviaron la nominación, por el recien anunciado Oracle ACE Associate, y esta vez, tuve la suerte de recibir la distinción.

Este fue un camino mucho más difícil que lo que esperaba, y mi pensamiento personal (y esto no es una queja, sólo un pensamiento) es que como soy procedente de América Latina, tienes una menor exposición al programa que tus contrapartes en lugares como en Estado Unidos, haciendo un poco más difícil de conseguir este premio. La verdad, me siento honrado de haber sido incluido en esta lista de personas, ya que es un grupo de personas que trabajan duro para la comunidad para poder compartir sus conocimientos por todas partes, y todo esto por el gran precio de amistades increíbles, más conocimiento adquirido y 0 dólares.

No voy a decir que este será tu camino, pero yo digo que es un camino vale la pena viajar y aventurarse. El estado actual de mi ACE ha quedado por el momento suspendido, ya que en estos momentos estoy trabajando para Oracle, pero esto no me va a impedir a compartir mi poco conocimiento y aventuras que sigo teniendo contigo.

Te deseo lo mejor en este camino!


jueves, 29 de mayo de 2014

Oracle 12cR1 : Evaluación "What-If" de un comando crsctl con Oracle Clusterware

Oracle en su nueva version 12cR1 introdujo una nueva y pequeña característica  al Oracle Clusterware, pero el que sea pequeña, no significa que no sea de gran utilidad.
En versiones anteriores, si queríamos saber que iba a pasar al ejecutar un comando con la herramienta crsctl, teníamos que hacerlo en un ambiente de pruebas, ya que si no sabíamos de que se trataba el comando, se convertía en algo muy peligroso hacerlo sobre producción.
En Oracle Clusterware 12cR1 se introduce la evaluación de comando tipo "What-If" en la herramienta mencionada anteriormente, crsctl eval ...