jueves, 3 de septiembre de 2020

Autonomous Database Mitos y Realidades - Q & A

El 17 de Agosto di una charla en el Oracle Groundbreakers Tour LATAM que se llamó ¨Autonomous Database: Mitos y Realidades¨. Lamentablemente no dio el tiempo de responder preguntas porque por problemas técnicos tenían que cortar la transmisión, así que decidí contestarlas aquí.
Al final del articulo les dejo el link donde podrán ver la sesión grabada.

- AutoTuning es solo en la nube ? o si instalamos OnPremice también lo tenemos ?
El AutoTuning incluye varias funcionalidades y las tenemos disponibles también onpremise.
Desde la version 11g Oracle configura por default una tarea que se ejecuta en la ventana nocturna llamada: Automatic SQL Tuning Advisor. Este asesor analiza las sentencias de mayor consumo de recursos y genera recomendaciones entre ellas los SQL Profiles que se puede definir que los implemente automaticamente.
En Oracle Database 19c aparece otra nueva funcionalidad que es el AutoIndexing disponible para Exadata en la que monitorea, detecta la necesidad de indices, los crea y elimina automaticamente. Podemos tener esta funcionalidad onpremise si tenemos Exadata y le instalamos Oracle Database 19c.
Ademas AutoTuning incluye la configuración de la base de datos, para lo cual tenemos las funcionalidades de AMM (Automatic Memory Managment) y ASMM (Automatic Shared Memory Managment) que configuran los buffers de memoria automaticamente, también disponibles OnPremise desde Oracle Database 10g ASMM y 11g AMM.

- Quien administraría audit vault?  un area del cliente supongo, no?
Lo que viene implementado en Autonomous Database es Database Vault, no Audit Vault. Lo administra Oracle y es para asegurar que sus DBA no tienen acceso a los datos de los clientes.

Es posible utilizar Oracle APEX en una Autonomous DB?
Si, APEX viene configurado y se puede comenzar a utilizar a través de un browser ni bien tenemos lista la Autonomous Database.

- En nuestra organización usamos las bases standby como bases de reporting, para cargas de datawarehouse incluso nuestras aplicaciones las usan para ese fin. En la nube, se pueden usar también con ese propósito ?
En la nube de Oracle si, aunque por el momento no con Autonomous Database, ya que Autonomous Data Guard no permite acceder a las bases de datos Standby para ejecutar tareas allí.
Hay otras opciones de arquitectura en la nube de Oracle para implementarlo.

Si llegaste a este articulo y todavía no viste la presentación, o quieres revivirla, la podrás ver en el canal de youtbe de LAOUC. Te recomiendo que te suscribas para que te notifique automaticamente a medida que van subiendo las sesiones grabadas durante el evento. Este es el link:  https://www.youtube.com/channel/UCNIWWONMX1QCgktvpcTrvJg


lunes, 3 de agosto de 2020

Como Cambiar el Nombre de una Base de Datos con DBNEWID

Tengo un cliente que tiene todavia bases Oracle 11.2.0.4, si todavia! por mas que me gustaria migrarselas a 19c, en este caso debido a que es la ultima version  certificada por el proveedor del aplicativo no podemos actualizarla, como seguro les pasa todavia a Uds en muchas instalaciones. 

Surgió que necesitan clonar la VM de Desarrollo para tener un ambiente de QA. Esta VM de Desarrollo tiene bases de datos 11.2.0.4 y una vez clonada la VM le voy a cambiar el nombre de a las bases de datos para su nuevo ambiente de  QA. 

Para ello voy a usar el utilitario DBNEWID, que aunque no es una herramienta nueva, no es muy usado porque lo tradicional cuando se cambia el nombre de una base de datos es hacerlo recreando el control file. Como ya lo he usado muchas veces y funciona muy bien me dio ganas de compartirlo con Uds.

El DBNEWID 
1 - Cambia el nombre de la base de datos
2 - Cambia el DBID
3 - Genera en el $ORACLE_BASE/diag todos los directorios necesarios para la nueva base, incluido el alert

Les voy a mostrar los pasos a seguir con DBNEWID para cambiar el nombre de la base de datos luego de clonar una Maquina Virtual.
En este ejemplo la base origen se llama DESA y la destino QA1


En el ambiente clonado 
1 - Montar la Base de Datos 
(En mi caso la base estaba baja, sino previamente bajarla)
 SQL> shutdown immediate

SQL> startup mount

2- Ejecutar el DBNEWID

$ nid TARGET=sys/password@desa DBNAME=qa1

Target es la Base origen, especificamos la password de sys 

Previamente tenemos que agregar en el tnsnames.ora la entrada para esa base. 

DBNAME se especifica el nombre destino.


$ nid TARGET=sys/password@desa DBNAME=qa1

DBNEWID: Release 11.2.0.4.0 - Production on Mon Aug 3 07:02:14 2020

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to database DESA (DBID=742283927)

Connected to server version 11.2.0

Control Files in database:

    /u02/oradata/control01.ctl

    /u05/oradata/control02.ctl

Change database ID and database name DESA to QA1? (Y/[N]) => Y     -SELECCIONAR "Y"  PARA CONTINUAR

Proceeding with operation

Changing database ID from 742283927 to 1597134007

Changing database name from DESA to QA1

    Control File /u02/oradata/control01.ctl - modified

    Control File /u05/oradata/control02.ctl - modified

    Datafile /u02/oradata/system01.db - dbid changed, wrote new name

    Datafile /u02/oradata/sysaux01.db - dbid changed, wrote new name

    Datafile /u02/oradata/undotbs01.db - dbid changed, wrote new name

    Datafile /u02/oradata/users01.db - dbid changed, wrote new name

    Datafile /u02/oradata/temp01.db - dbid changed, wrote new name

    Control File /u02/oradata/control01.ctl - dbid changed, wrote new name

    Control File /u05/oradata/control02.ctl - dbid changed, wrote new name

    Instance shut down


Database name changed to QA1.

Modify parameter file and generate a new password file before restarting.

Database ID for database QA1 changed to 1597134007.

All previous backups and archived redo logs for this database are unusable.

Database is not aware of previous backups and archived logs in Recovery Area.

Database has been shutdown, open database with RESETLOGS option.

Succesfully changed database name and ID.

DBNEWID - Completed succesfully.


3 - Montar la Base que va a dar error, es esperado
SQL> startup mount
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size                  2260088 bytes
Variable Size            1040188296 bytes
Database Buffers         3221225472 bytes
Redo Buffers               12107776 bytes
ORA-01103: database name 'QA1' in control file is not 'DESA'

4 - Cambiar el db_name

SQL> alter system set db_name=qa1 scope=spfile;

5 - Bajar la Base de Datos

SQL> shutdown immediate

ORA-01507: database not mounted

ORACLE instance shut down. 

6 - Generar un nuevo password file

$cd $ORACLE_HOME/dbs

$orapwd file=orapwdqa1 password=password entries=10

7- Renombrar el spfile ya que el DBNEWID cambio los parametros del spfile pero no cambio el nombre del spfile en el sistema operativo

$mv spfiledesa.ora spfileqa1.ora

8 - Cambiar el ORACLE_SID

$ export ORACLE_SID=qa1

9- Si estas clonando todo el ambiente como en este caso, cambia tambien el ORACLE_SID en el .profile, .bash_profile o el que uses

10 - Cambiar en el /etc/oratab para que quede nuestra nueva base

$vi /etc/oratab

qa1:/u01/app/oracle/product/11.2.0/dbhome_1:Y

11 - Levantar el listener o reiniciarlo

$ lsnrctl start

12 - Montar la base de datos

SQL> startup mount

13 - Resetear los REDOLOGS

SQL> alter database open resetlogs;


Verificaciones
1  - Verifico nombre de la base de datos
 SQL> select name from v$database;

 NAME

---------

QA1


 2 - Verifico nombre de la instancia

SQL> select instance_name from v$instance;

 INSTANCE_NAME

----------------

qa1

Recomendación : Realizar inmediatamente un nuevo backup. No se puede restaurar de los backup de la base origen esta nueva base.

Conclusión : DBNEWID  permite cambiar el nombre de una  base de datos facilmente