lunes, 21 de diciembre de 2015

Aplicar OPatch reciente y parchar la base de datos


La siguiente informacion fue testeada en un ambiente Windows Server 2012.

OPatch

Paso 1:

Descargar el OPatch mas reciente, para esto se debe tener acceso a la plataforma de Oracle Support.

Paso 2: 

Descompresion del paquete descargado y colocar las siguientes variables de entorno:

set ORACLE_HOME=ruta de Oracle_Home
set Path=%ORACLE_HOME%\OPatch
set ORACLE_SID=nombre de instancia

Paso 3:

Colocado lo anterior, se ejecuta el siguiente comando que nos muestra cual es la version actual del OPatch:



Ahora me dirijo al ORACLE_HOME y reemplazo la carpeta "OPatch" por la que fue descompresa anteriormente (esa carpeta posee el mismo nombre "OPatch")

Hecho eso, vuelvo a ejecutar el comando anterior:




Parchado:

Paso 1:

Se descarga el parche requerido, para esto debe acceder a la plataforma de Oracle Support.

Paso 2:

Realiza un shutdown a la base de datos y detiene todos los servicios relacionados con Oracle a nivel del sistema operativo:

 Inicio –> Panel de control –> Sistema y seguridad –> Herramientas administrativas –> Servicios

Paso 3:

Se descomprime el archivo descargado con el parche y se abre el archivo "readme.html" y acatar las instrucciones que este indica.

Paso 4:

Normalmente este archivo (readme.html) solicita "bajar" el servicio de transacciones distribuida:

"Distributed Transaction Coordinator Service" para realizar eso se hace lo siguiente:

Se abre la consola de windows y se ejecuta el siguiente comando:



Paso 5:

Coloco las siguientes variables de entorno:

set ORACLE_HOME=ruta de Oracle_Home
set Path=%ORACLE_HOME%\OPatch
set ORACLE_SID=nombre de instancia
Por medio del "cmd" me dirijo a la ruta donde se encuentra el parche y lo aplico:


Paso 6:

Al igual como se observa en la imagen anterior deben responderse las preguntas que se realizan a la hora de aplicar el parche.

Paso 7:

Al aplicarse el parche correctamente, volver a subir los servicios de Oracle, e igualmente la base de datos como tal.






Caracteres base de datos y TOAD


Si el software de TOAD trabaja o visualiza los caracteres de la base de datos con otro "lenguaje" o mejor dicho con caracteres orientales por ejemplo, se debe realizar lo siguiente:

En la base de datos realizar la siguiente consulta:

select DECODE(parameter , 'NLS_CHARACTERSET', 'CHARACTER SET',
'NLS_LANGUAGE', 'LANGUAGE',
'NLS_TERRITORY', 'TERRITORY','NLS_NCHAR_CHARACTERSET') name,
value from v$nls_parameters
WHERE parameter IN ( 'NLS_CHARACTERSET', 'NLS_LANGUAGE',
'NLS_TERRITORY' );

Eso nos despliega la informacion necesaria para ubicar nuestros caracteres de datos, ejemplo:




Específicamente nuestra consulta nos permite conocer el “NLS_CHARACTER” el cual es derivado de la consulta anterior:



Al conocer nuestro "NLS_CHARACTER" debemos crear una variable de entorno:




 La misma debe ser una de "sistema":



En el nombre de la variable y el valor colocar lo siguiente:


Al hacer esto debemos reiniciar el TOAD (algunas veces el equipo) y esto hara que el TOAD visualice correctamente los caracteres debidos y con los que trabaja la base de datos.


viernes, 20 de noviembre de 2015

Auditoria de contraseñas en Oracle

Primeramente debemos activar la auditoria con la opcion "db,extended" para incluir las sentencias SQL.


Con la opcion anterior activada, realizamos la siguiente consulta:

SELECT *FROM dba_audit_session ORDER BY sessionid DESC;

La columna que nos interesa es la que se llama "ReturnCode", apartir de esa columna deducimos que:



Cabe destacar que si un usuario ingresa su contraseña 10 veces de manera incorrecta el usuario se bloquea automaticamente por 1 dia, segun el "default profile" que Oracle trabaja.

Para ver el "default profile" de los usuarios:

SELECT * FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_type = 'PASSWORD';
Se recomienda si es necesario realizar algun cambio, no realizarlo en el "default profile" sino crear un nuevo perfil y en él agregar lo requerido, hecho eso asignarlo al usuario debido para su correcta administración.

Sobre temas de passwords de Oracle puede observarse mas en la documentacion oficial:

https://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_user_accounts.htm#TDPSG20000


miércoles, 18 de noviembre de 2015

Transportable tablespaces


Transportable tablespace de NON-CDB Linux database a Pluggable database en Windows

  

Inspección:

El Origen:

set lines 150;
column PLATFORM_NAME format a30;
select PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM WHERE PLATFORM_ID =(SELECT PLATFORM_ID FROM V$DATABASE);





El destino





Caracteres de origen y destino:

     




Rutas de datafiles de origen y destino:


Creo “tablespace” de prueba en origen:













Se inserta data en ese “schema”.










Tomar en cuenta lo siguiente:


Tablespaces en container Windows


Datafiles en Container Windows







Tablepaces en PDB



Datafiles en PDB






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

En Servidor Origen:

Conexión RMAN en origen y puesta en read only del tablespace a pasar:





Comando RMAN
BACKUP TO PLATFORM 'Microsoft Windows x86 64-bit'
DEVICE TYPE DISK FORMAT '/u01/backups/TESTDATA1_TS.bkp'
DATAPUMP FORMAT '/u01/backups/TESTDATA1_TS_DMP.bkp'
TABLESPACE TESTDATA1;




Ultimas lineas de la salida RMAN:





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

En Servidor destino:


Copiamos el backup del servidor Linux al Windows, hecho lo anterior abrimos la consola de RMAN:



Conexion RMAN a la base de datos "pluggable":



Se realiza el restore con el comando:
RESTORE
FOREIGN TABLESPACE TESTDATA1 format 'C:\app\oracle\oradata\container\pluggable\%U'
FROM BACKUPSET 'C:\app\backups\TESTDATA1_TS.bkp'
DUMP FILE FROM BACKUPSET 'C:\app\backups\TESTDATA1_TS_DMP.bkp';

Aparace un error si el usuario test no está en la base de datos:





De nuevo el backup:


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

Revisamos el tablespace y datafile conectados al  CONTAINER:

sqlplus system/oracle@container



Nótese en la imagen anterior que la consulta busca tanto los datafiles de la ruta container + pluggable.

Observamos unicamente los tablespaces (en la conexion del "container")





Revisamos el tablespace y datafile conectados a la PLUGGABLE:



Observamos lo datafiles desde la conexion en "pluggable":




Nótese que esa consulta únicamente observa los datafiles de su contenido (pluggable)


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

Pasar a read write





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

Verificar data




Data en origen: 



Data en destino:




viernes, 13 de noviembre de 2015

Memoria dinamica (Memory ballooning) en VirtualBox

Como hemos visto en Hyper-V tenemos la opcion de asignar memoria dinamica a una maquina virtual.




En VirtualBox esta opcion no esta habilitada, por default la maquina virtual utiliza toda la memoria asignada por nosotros, sin embargo existe la posibilidad de convertir el uso de la memoria de la maquina virtual en dinamica utilizando la propiedad de "Memory Ballooning".

El unico prerequisito para implementar "Memory Ballooning" es instalar los Vbox Additions.

El primer paso es descubrir donde esta instalado VirtualBox, especificamente el archivo "VBoxManage.exe"


Copiamos la ruta, abrimos la consola de windows o linux y nos dirigimos a la ruta:


Ahora debemos ejecutar el siguiente comando:

VBoxManage modifyvm "<nombre huésped>" --guestmemoryballoon <megabytes>

Es importante conocer que los <megabytes> del comando anterior son los megas los cuales yo permite que sean utilizados de manera dinamica, o sea que la computadora u otra virtual los puede utilizar.

En mi caso yo tengo la siguiente maquina virtual:


Entonces realizo lo siguiente:



Cabe destacar que cuando ejecuto "modifyvm" modifico completamente la maquina virtual, sin embargo puedo ejecutar tambien:

"controlvm" en vez de donde dice "modifyvm".

Lo que permite que al reiniciar la maquina la propiedad de memoria dinamica se pierda y se continue normalmente.

Para deshabilitar la propiedad completamente se ejecuta:

  • VBoxManage controlvm "2012R2" guestmemoryballoon 0


Gracias.

viernes, 25 de septiembre de 2015

Aspectos básicos 12C Database In-Memory

Ok, vamos ahora a comentar un poco sobre lo que es y como configurar la tecnología In-Memory en Oracle.

Resulta ser que en resumidas cuentas al SGA se le agregó un "pool" estatico que ahora es llamado "In-Memory" de esta manera los objetos almacenados en este pool se les dice o se les conoce como datos en un "IM Column Store".

Tanto el "data buffer cache" como "in-memory" pueden convivir juntos, no es del todo cierto que la reciente tecnologia ha llegado para sustituir al "data buffer cache".

Al estar el dato, tabla y/o tablespace las consultas son mas "rápidas", mejorando así el tiempo de respuesta.

Pero, ¿cómo podemos ver si nuestra base de datos posee el parametro in-memory habilitado? Relativamente sencillo con el siguiente parametro:



Para habilitar nuestra base de datos a "In-memory", primero debemos tomar en cuenta nuestra memoria SGA actual, en una instalacion por default con la distribucion de memoria automatica es muy probable que la cantidad de la misma sea la siguiente:




Resulta ser que tenemos actualmente 700 Megas de memoria al igual que nuestro parametro de "max target", entonces vamos a realizar lo siguiente:

  1. A esos 700M los voy a aumentar hasta 1024M.
  2. Voy a restar los nuevos 1024M que tengo por los 700M que tenia anteriormente.
  3. Esa cantidad restante es la que voy a asignar a la seccion de memoria "In-Memory".



Hasta el momento todo bien...sin embargo a la hora de realizar un "shutdown  immediate" y un "startup" para que que los datos queden correctamente seteados en el spfile, obtengo el siguiente error:


Bueno, debido al error deberemos verificar la particion con el nombre "tmpfs" cuya ruta segun nuestro sistema operativo es "/dev/shm". Esta particion es un tradicional concepto de memoria compartida, "tmpfs" es un nombre común para una instalación de almacenamiento de
archivos temporales en muchos sistemas operativos Unix/Linux.

Por lo tanto, es un sistema de archivos, que mantiene todos los archivos en la memoria virtual.

Aumentando el espacio de esta particion de la siguiente manera:



Sera posible entonces levantar nuestra base de datos con los parametros anteriormente colocados:



Habilitado el parametro "In-Memory Area" los objetos deseados pueden crearse en este pool de memoria:



El uso de la caracteristica "In-memory" en bases de datos SQL Server, unicamente se hace presente en las versiones 2014, sin embargo existen features en 2012 BI que ya trabajaban con esa propiedad.

Gracias.






miércoles, 23 de septiembre de 2015

Aspectos básicos EM Express 12C Database

El proposito de esta publicacion es para brindar un poco de informacion sobre varios comandos y/o aspectos de la tecnologia Oracle Database 12C en cuanto a la administracion por medio de EM Express.

El comando "show con_name", nos permite saber en que base de datos nos encontramos ya sea en una pluggable o en un contenedor.




Para observar las diferentes bases de datos ya sean de tipo contenedor o "pluggable" en el enterprise manager express es posible que nos enfrentemos al siguiente caso:

Despues de instalar una CDB la cual contiene una PDB, el instalador nos muestra el siguiente mensaje:




Si nos dirigimos directamente al navegador y buscamos en él la URL obtenemos:




Debido a esto vamos a verificar si existe o no en nuestra base de datos el XML DB (lo siguiente lo podemos verificar conectados  al CDB):




Validando la informacion anterior se recomienda que el Enterprise Manager Express se configure tanto para el CDB como para el PDB.

Primeramente debemos conocer si la base de datos tiene un puerto de escucha para conexiones "http" o "https".





Como obervamos nuestra CDB aun no posee un puerto configurado, vamos a colocar lo siguiente:



  • Puerto 5501 para la conexion "https" en el CDB
  • Puerto 5502 para la conexion "https" en el PDB

Conectados aun en el CDB ejecutamos:

exec DBMS_XDB_CONFIG.SETHTTPSPORT(5501);

Conectados al PDB ejecutamos:

exec DBMS_XDB_CONFIG.SETHTTPSPORT(5502);

Si realizamos los "select" anteriores obtenemos las siguientes salidas:




Ahora que hemos configurado los puertos, verificamos de nuevo el EM Express y si encontramos en un servidor Windows Server 2012 deberemos configurar lo siguiente:

Primeramente para el servidor Windows, a este deberemos instalarle el feature llamado "Desktop Experience".






Es muy probable que tengamos que reiniciar el servidor. Despues de todo lo anterior deberemos habilitar las opciones SSL Y TSL de la navegacion para el Windows Internet Explorer:











Hecho lo anterior y aceptando el certificado de navegacion podremos acceder a nuestro Oracle Enterprise Manager Express para cada instancia ya sea la CDB o PDB (especificando el puerto debido en la URL):





Muchas gracias.