lunes, 29 de mayo de 2023

Export Data Pump en Windows

Para ejecutar un Export Data Pump en Windows podemos usar PowerShell (que es una herramienta mas moderna  y potente)  o simplemente CMD (la línea de comandos de Windows clasica)

En este ejemplo la base de datos se llama ORCL. Voy a hacer un export full. Tengo previamente creado un directorio c:\oracle\scripts y un directorio para los dumps d:\oracle\dumps

1 - Verifico en la Base de datos que el Directorio DATAPUMP_DIR apunta al directorio requerido

Desde PowerShell o CMD

set ORACLE_SID=ORCL

sqlplus / as sysdba

select * from dba_directories where directory_name=’DATA_PUMP_DIR’;

 

Se puede modificar ese directorio default o crear un directorio nuevo. En este ejemplo lo modifico

create or replace directory DATA_PUMP_DIR as “d:\oracle\dumps'';

 

2 -  Crear un par file  con wordpad

logfile=expdp_orcl.log

dumpfile=expdp_orcl.dmp

directory=DATAPUMP_DIR

full=Y

Para guardar : directorio seleccionado c:\oracle\scripts

nombre  orcl.par   formato :  Documento de Texto – Formato MS-DOS

 

3 - En  Windows PowerShell o CMD

        set ORACLE_SID=ORCL

        expdp system/password parfile=c:\oracle\scripts\ orcl.par

 

Finalmente cuando termine el dump va  a quedar en el directorio seleccionado en DATA_PUMP_DIR

sábado, 27 de mayo de 2023

Como Conectarse a una Base Autonoma con SQL Developer

 Una vez que tenemos creada una Base de Datos Autonoma podemos conectarnos de diversas formas entre ellas con SQL Developer.

1 - En nuestra Base Autonoma en mi ejemplo ATPTEST1, seleccionar Conexion de Base de Datos

2 - Ir a Descargar Cartera

3 - Agregarle contraseña y presionar Descargar

4 - Cuando lo descargamos nos va a quedar un archivo zip con el nombre Wallet_<BD>
5 - Abrimos el SQL Developer y agregamos la conexion con Usuario Admin (que es el 1ero que tenemos, luego podemos crear otros usuarios). Seleccionamos Tipo de Conexion : Cartera de Cloud
Agregamos el Wallet que recien bajamos. 


6 - Probamos y luego Guardar y ya nos conectamos a la base de datos

Ya estamos conectados!




Error Oracle Cloud 403 IP Address Rejected

 Si obtenemos el siguiente error Oracle Cloud 403  IP Address Rejected es porque estamos tratando de acceder al recurso desde una IP no autorizada, para solucionarlo tenemos que agregar en la Lista del Control de Acceso del Recurso que queríamos acceder. En mi ejemplo una Base de Datos Autónoma desde otra Notebook que no era desde la cual la cree.


1 - Ir a Red / Lista de Control de Acceso / Editar 





2 - Van a aparecer las IPs que ya estan habilitadas. Allí presionar Agregar mi dirección IP. En mi caso habia una sola habilitada




3 - Automáticamente detecta nuestra dirección IP y la agrega separada por coma. Allí presionar Guardar




Mi base autónoma quedo unos segundos actualizando su estado y enseguida quedo lista para acceder!

















Como Crear una Base de Datos Autónoma Para Procesamiento Transaccional

 En este ejemplo vamos a crear una Base de Datos transaccional autónoma OLTP Always Free, o sea Gratuita para Siempre.  Debemos contar primero con una cuenta en la Nube de Oracle. La cuenta puede ser del tipo gratuita creada en cloud.oracle.com/free o puede ser una cuenta con créditos ya que igualmente podemos crear esta base gratuita sin consumir créditos. Podemos tener un máximo de 2 bases de datos autónomas por cuenta.

Las bases de datos autónomas tienen asignado 1 OCPU, 20G de Almacenamiento y la Licencia esta incluida.

1 - Seleccionar Oracle Database - Procesamiento de transacciones autónomo 




2 -  Seleccionar el Compartimento, en mi ejemplo elijo TEST, para saber mas sobre Compartimentos AQUI 


3 - Presionar Crear Base de Datos Autónoma. Se pueden crear máximo 2 bases de datos autónomas Always Free por cuenta. 



4 - Aparece con un nombre de Base de Datos a mostrar y el nombre de base de datos, ambos se pueden cambiar. En mi ejemplo los cambio por ATPTEST1


5 - Dejar seleccionado Procesamiento de Transacciones e Infraestructura Compartida 
6 - Seleccionar SIEMPRE GRATIS. Queda asignada con 1 OCPU (Oracle CPU) y 20G de espacio de Almacenamiento.
7- Crear las credenciales del usuario Admin que es el administrador de esta base de datos y luego Presionar Crear Base de Datos Autónoma. 


8 - En unos pocos minutos queda en verde en estado DISPONIBLE. ATP es por el tipo de Base de Datos, que en ingles es la sigla de Autonomous Transaction Processing


Conclusión : En pocos pasos podemos tener creada una base de datos autónoma gratuita para siempre con 1 OCPU y 20G de Almacenamiento y con Licenciamiento incluido.


















viernes, 26 de mayo de 2023

OCI - Crear Compartimentos

Los Compartimentos sirven para organizar y aislar los recursos en la nube (como si fueran carpetas de windows). La idea es asignar a un Compartimento todos los recursos de un mismo tipo. 

Cuando creamos una cuenta en la Nube de Oracle existe solo el Compartimento raíz que es con el mismo nombre que la cuenta. 

Lo recomendado es que antes de comenzar a crear los recursos pensemos en como los agruparemos, por ejemplo DESARROLLO y PRODUCCION y creemos primeros los Compartimentos y luego a los recursos ya los creamos en su Compartimento correspondiente.

En el caso de que los hayamos creado los recursos en el Compartimento raíz, y luego creamos los Compartimentos, no hay tanto problema, la mayoría de los recursos se pueden mover a su Compartimento correspondiente. 

Los Compartimentos atraviesan las regiones, por lo tanto van a existir en todas las regiones que tenga acceso esa cuenta.

Crear un Compartimento

1  - Seleccionamos Identidad y Seguridad -> Compartimentos


2 - Seleccionamos Crear Compartimento




3 - Completamos Nombre, Descripción y de que Compartimento depende



4 - Vamos a presionar Crear Compartimento



5 - Esperamos unos segundos y ya aparece creado



Conclusión : Los Compartimentos son necesarios y recomendados pero no obligatorios. Crearlos lleva pocos pasos y quedan disponibles inmediatamente. Cuando estan disponibles aparece el circulo VERDE y estado ACTIVO como en la figura anterior.














jueves, 18 de mayo de 2023

ASM : Como Consultar Compatibilidad Diskgroups

A partir de Oracle 11g tenemos que los diskgroups tienen 3 atributos de compatibilidad
COMPATIBILITY.RDBMS
COMPATIBILITY.ASM
COMPATIBILITY.ADVM
 la vista v$asm_attribute donde detalla los attributos de un diskgroup

SQL> col name format a20
SQL> col value format a10
SQL> select group_number, name, value from v$asm_attribute where name like 'comp%' order by 1;


GROUP_NUMBER NAME  VALUE
------------ -------------------- ----------
  1 compatible.asm  12.1.0.2.0
  1 compatible.rdbms  12.1.0.2.0
  2 compatible.asm  12.1.0.2.0
  2 compatible.rdbms  12.1.0.2.0
  3 compatible.asm  12.1.0.2.0
  3 compatible.rdbms  12.1.0.2.0


El COMPATIBLE.ASM y COMPATIBLE.RDBMS determinan la version minima de ASM y Base de datos que se pueden usar en ese Diskgroup. El parametro COMPATIBLE.ADVM debe ser mayor a 11.2 para que se pueda utilizar esta funcionalidad.
Se puede subir el valor de la compatibilidad con ALTER DISKGOUP teniendo en cuenta que subir el valor de la compatibilidad es una tarea irreversible.


Tuning Redo Logs

Para mejorar la performance en las escrituras a disco, es necesario que el tamaño de los redologs sea suficiente como para que se hagan como máximo 3 switch de redologs por hora.
Esto es independiente de la version de base de datos que estemos usando, el uso de los redologs en Oracle es igual en todas las versiones inclusive si es una CDB o no.
En este ejemplo detectamos en el alert.log que se estan ejecutando switch de redolog cada 2 minutos. Esto genera mucho overhead.

Mon Feb 06 16:21:23 2017
Thread 1 cannot allocate new log, sequence 104612
Checkpoint not complete
  Current log# 1 seq# 104611 mem# 0:/u01/oradata/TEST/redo01.log
Thread 1 advanced to log sequence 104612 (LGWR switch)
  Current log# 2 seq# 104612 mem# 0: /u01/oradata/TEST/redo02.log
Mon Feb 06 16:21:23 2017
Archived Log entry 69088 added for thread 1 sequence 104611 ID 0x72f28ed0 dest 1:
Mon Feb 06 16:23:21 2017
Thread 1 advanced to log sequence 104613 (LGWR switch)
  Current log# 3 seq# 104613 mem# 0: /u01/oradata/TEST/redo03.log
Mon Feb 06 16:23:21 2017
Archived Log entry 69089 added for thread 1 sequence 104612 ID 0x72f28ed0 dest 1:
Mon Feb 06 16:23:32 2017
Thread 1 cannot allocate new log, sequence 104614
Checkpoint not complete
  Current log# 3 seq# 104613 mem# 0: /u01/oradata/TEST/redo03.log
Thread 1 advanced to log sequence 104614 (LGWR switch)
  Current log# 1 seq# 104614 mem# 0: /u01/oradata/TEST/redo01.log
Mon Feb 06 16:23:33 2017
Archived Log entry 69090 added for thread 1 sequence 104613 ID 0x72f28ed0 dest 1:
Mon Feb 06 16:25:22 2017
Thread 1 cannot allocate new log, sequence 104615
Checkpoint not complete
  Current log# 1 seq# 104614 mem# 0: /u01/oradata/TEST/redo01.log
Thread 1 advanced to log sequence 104615 (LGWR switch)
  Current log# 2 seq# 104615 mem# 0: /u01/oradata/TEST/redo02.log
Mon Feb 06 16:25:24 2017
Archived Log entry 69091 added for thread 1 sequence 104614 ID 0x72f28ed0 dest 1:
Mon Feb 06 16:27:22 2017
Thread 1 cannot allocate new log, sequence 104616
Checkpoint not complete
  Current log# 2 seq# 104615 mem# 0: /u01/oradata/TEST/redo02.log
Thread 1 advanced to log sequence 104616 (LGWR switch)
  Current log# 3 seq# 104616 mem# 0: /u01/oradata/TEST/redo03.log

Recomiendo revisar el log en varios horarios para ver si es algo que se mantiene o si es muy eventual, para poder calcular el tamaño de acuerdo a un promedio de actividad.

Revisamos el tamaño de los RedoLogs
$ ls -lh re*
-rw-r-----. 1 oracle oinstall 51M Feb  6 16:29 redo01.log
-rw-r-----. 1 oracle oinstall 51M Feb  6 16:31 redo02.log
-rw-r-----. 1 oracle oinstall 51M Feb  6 16:31 redo03.log

En este caso tienen 51M y no alcanzan a almacenar ni un minuto, en forma teorica tendrian que poder almacenar 20 minutos, o sea 3 switch de redolog por hora. Sin embargo el comportamiento no es igual en todas las horas, y decido realizar el incremento en forma gradual, por lo tanto voy a subir el tamaño a 300M para luego seguir monitoreando y ajustando según se necesite.

SQL> select group#, bytes/1024/1024 "size Mb" from v$log;

    GROUP#    size Mb
---------- ----------
         1         50
         2         50
         3         50

SQL> select group#,member from v$logfile;

    GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
         1
/u01/oradata/TEST/redo01.log

         2
/u01/oradata/TEST/redo02.log

         3
/u01/oradata/TEST/redo03.log

El procedimiento para agrandarlos, es agregar otros 3 grupos con el tamaño deseado y eliminar estos 3 grupos actuales. En este caso aprovecho a realizarlo en otro file system que hay mas espacio.

 SQL> alter database add logfile group 4 '/u01/redologs/TEST/redo04.log' size 300M;

Database altered.

SQL> alter database add logfile group 5 '/u01/redologs/TEST/redo05.log' size 300M;

Database altered.

SQL>  alter database add logfile group 6 '/u01/redologs/TEST/redo06.log' size 300M;
SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 INACTIVE
         3 ACTIVE
         4 ACTIVE
         5 CURRENT
         6 UNUSED

SQL> alter database drop logfile group 1;

Database altered.

SQL> alter database drop logfile group 3;
alter database drop logfile group 3
*
ERROR at line 1:
ORA-01624: log 3 needed for crash recovery of instance TEST (thread 1)
ORA-00312: online log 3 thread 1: '/u01/oradata/TEST/redo03.log'
Este error es porque todavia esta ACTIVE

SQL> alter database add logfile group 7 '/u01/redologs/TEST/redo07.log' size 300M;

Database altered.

SQL> alter database add logfile group 8 '/u01/redologs/TEST/redo08.log' size 300M;

Database altered.

SQL> alter database add logfile group 9 '/u01/redologs/TEST/redo09.log' size 300M;

Database altered.

SQL> select status, group# from v$log;

STATUS               GROUP#
---------------- ----------
INACTIVE                  3
CURRENT                   4
ACTIVE                    5
ACTIVE                    6
UNUSED                    7
UNUSED                    8
UNUSED                    9

SQL> alter database drop logfile group 3;

Database altered.


Conclusion :  Cuando el tamaño de los Redo Logs no sea suficiente para almacenar 20 minutos hay que agrandarlos y la forma es agregando mas grupos de RedoLogs del tamaño requerido. Luego se deben borrar los anteriores aunque posiblemente no puedan borrarse en el instante pero si unos minutos más tarde.