martes, 24 de enero de 2012

ORACLE ASM

Saludos, este post lo dedicare para explicar de manera breve que es ASM, las ventajas de usar ASM y dar un pequeño ejemplo de la creación de una instancia simple ASM.
 ASM es Administración Automática de Almacenamiento o sus siglas en ingles Automatic Storage Management, es una nueva característica introducida desde la versión 10G cuyo objetivo es simplificar la administración de los archivos de base de datos como datafile, control file, spfile , log file y archive log.



Acerca de ASM (Administración Automática de Almacenamiento)  ASM Esta característica tiene como objetivo simplificar la administración de los archivos relacionados con la base de datos Oracle como: 

  • Database files
  • Control files
  • Online redo log files
  • Archived redo log files
  • Archivo Flash recovery area
  • Archivos RMAN 

Exceptiones:
  • Archivos tracer
  • Archivos log
  • Archivos del sistema operativo

ASM es un file system creado exclusivamente para los archivos de base de datos Oracle, esto permite a los administradores asignar estos archivos a grupos de discos en lugar de discos individuales. ASM nació de la funcionalidad Archivos Administrados por Oracle OMF(Oracle Managed File) que incluye balanceo y redundancia. 
 Esta utilidad ASM es administrada por una instancia Oracle tipo ASM. Esta instancia Oracle ASM no es una versión completa sino que es muy ligera, solo se necesita de estructuras de memoria SGA y procesos background para poder trabajar.
En la imagen anterior se muestra como una base de datos hace uso del repositorio ASM para almacenar los archivos Oracle, además se como interactúa con la instancia ASM. Por debajo vemos las dos unidades de disco que forman un grupo de discos administrado por la instancia Oracle ASM.
Funcionalidades:
  • Simplifica la administración de los archivos Oracle. Debido que a la base ASM se le presenta los grupos de discos para almacenar los archivos, estos por debajo pueden crecer, balancear y administrar de manera independiente y transparente. Por ejemplo, que pasaría si en una base de datos no ASM manejada por archivos del file system del sistema operativo nos estemos quedando sin espacio y nuestra base requiera de mas espacio, bueno, la tarea es agregar discos y agregar datafiles direccionados a las nuevas unidades agregadas, ahora en una base ASM esto es más simple, solo se tiene que agregar los discos al grupo de disco ASM y de forma automática se pondrá a disponibilidad el espacio a los grupos de discos.  


  • Manejo de redundancia dentro de los grupos de discos. Se puede agregar la redundancia para crear espejos de información de tal manera que se evite la perdida de información en caso de que falle uno de los discos.
  • Maneja archivos de gran tamaño.
  • Puede dar servicio a una o más servicios de base de datos residentes en el servidor. Esto quiere decir que solo necesitamos de una sola instancia ASM para brindar servicios a una o mas base de datos que residan en el servidor de la ASM.

  • Creación de una instancia ASM simple de manera manual.
    Como indique, ASM es un file system manjado exclusivamente por Oracle, como lo hace esto? Lo logra por medio de una instancia Oracle tipo ASM quien es el encargado de administrar el file system y proporcionar este servicio a otras bases de datos Oracle para que almacen sus archivos en el repositorio Oracle ASM intance.
    Previo a esto deberá estar instalado Oracle Database 10g o superior para poder realizar la creación de una instancia ASM simple en un sistema operativo windows.
    Nuestro ejercicio constará de:
    • Creación de los directorios
    • Creación de discos ASM con la utilidad ASMTOOL
    • Creación del CSS (Cluster Synchronization Services) requerido para ASM
    • Creación del archivo de parámetros de inicialización ini+ASM.ORA
    • Creación e iniciar la instancia ASM
    Asociar los discos ASM creados a la instancia ASM.El home donde trabajaremos es donde se instaló la base de datos Oracle que para mi caso es C:\Oracle\BDHome_1\10
     
    Creación de los directorios
    Estos directorios son para registrar los archivos log y tracer que se generará la instancia ASM
    C:\>mkdir C:\Oracle\BDHome_1\10\admin\+ASM\bdump
    C:\>mkdir C:\Oracle\BDHome_1\10\admin\+ASM\cdump
    C:\>mkdir C:\Oracle\BDHome_1\10\admin\+ASM\hdump
    C:\>mkdir C:\Oracle\BDHome_1\10\admin\+ASM\pfile
    C:\>mkdir C:\Oracle\BDHome_1\10\admin\+ASM\udump
    Creación de discos ASM con la utilidad ASMTOOL
    Lo ideal es presentar a la instancia ASM dispositivos RAW, pero como es una práctica podemos crear archivos que sirvan a la ASM con la utilidad ASMTOOL es una herramienta que nos permitirá crear en al file sytem unidades ASM para nuestra instancia.
    Esto puede crearse antes o después de crear la instancia ASM. Crear en la carpeta oraasmdisk en la unidad C antes de ejecutar en el cmd los comandos ASMTOOL
    C:\>asmtool -create c:\oraasmdisk\asmdsk01.asm 2048m
    C:\>asmtool -create c:\oraasmdisk\asmdsk02.asm 2028m
    Creación del CSS (Cluster Synchronization Services) requerido para ASM
    C:\>set ORACLE_HOME=C:\Oracle\BDHome_1\10\db_1\BIN
    C:\>localconfig.bat add
    Step 1:  creating new OCR repository
    Successfully accumulated necessary OCR keys.
    Creating OCR keys for user 'victor endara', privgrp ''..
    Operation successful.
    Step 2:  creating new CSS service
    successfully created local CSS service
    successfully added CSS to home

    Creación del archivo de parámetros de inicialización ini+ASM.ORA
    Abrimos un bloc de notas y guardamos la siguiente configuración en la ruta C:\Oracle\BDHome_1\10\db_1\database
    #Se indoca el tipo de instancia ASM
    instance_type=ASM
    #Nombre de la instancia
    DB_UNIQUE_NAME = +ASM
    #Ruta de donde tomara los discos
    ASM_DISKSTRING = 'C:\oraasmdisk\*'
    _ASM_ALLOW_ONLY_RAW_DISKS=FALSE
    remote_login_passwordfile=exclusive
    LARGE_POOL_SIZE = 16M
    #ruta en donde se crearan los tracer y logs
    BACKGROUND_DUMP_DEST ='C:\Oracle\BDHome_1\10\admin\+ASM\bdump'
    USER_DUMP_DEST = 'C:\Oracle\BDHome_1\10\admin\+ASM\udump'
    CORE_DUMP_DEST = 'C:\Oracle\BDHome_1\10\admin\+ASM\cdump'
    #Nombre del grupo de disco a crear
    ASM_DISKGROUPS='dgroup1'

    Crear e iniciar la instancia ASM
    Primero crearemos la instancia ASM indicando que arrancará con el archivo ini+ASM.ORA que creamos en el paso anterior.
    C:\>ORADIM -NEW -ASMSID +ASM -pfile 'C:\Oracle\BDHome_1\10\db_1\database\init+ASM.ora' -SYSPWD oracle -STARTMODE auto
    Instancia creada. 
    • NEW indicamos que agregaremos una nueva instancia
    • ASMSID indicamos el nombre de la instancia ASM
    • PFILE indicamos la ruta del archivo de inicialización con la que arrancará la instancia
    • SYSPWD indicamos la clave para crear el archivo password para ingresar posteriomente
    Una vez creada la instancia la iniciamos
    C:\>set oracle_sid=+ASM
    El error presenta es normal, ya que todavía no hemos presentados los discos al grupo
    C:\>sqlplus sys/oracle as sysdba
    SQL*Plus: Release 10.2.0.1.0 - Production
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Conectado a una instancia inactiva.
    SQL> startup
    Instancia de ASM iniciada
    Total System Global Area   88080384 bytes
    Fixed Size                  1247444 bytes
    Variable Size              61667116 bytes
    ASM Cache                  25165824 bytes
    ORA-15032: no se han realizado todas las modificaciones
    ORA-15063: ASM ha detectado un numero insuficiente de discos para el grupo de
    discos "DGROUP1"

    Asociar los discos ASM creados a la instancia ASM.
    Presentaremos los discos creados al grupo para que puedan ser usados como repositorios.
    SQL> create diskgroup dgroup1 normal redundancy disk
      2  'C:\oraasmdisk\asmdsk01.asm',
      3  'C:\oraasmdisk\asmdsk02.asm';
    Grupo de discos creado.
    SQL> startup force;
    Instancia de ASM iniciada
    Total System Global Area   88080384 bytes
    Fixed Size                  1247444 bytes
    Variable Size              61667116 bytes
    ASM Cache                  25165824 bytes
    Grupos de discos de ASM montados
    Consultemos es espacio disponible para el grupo
    SQL> select name, state, total_mb, free_mb from  V$ASM_DISKGROUP;
    NAME                           STATE         TOTAL_MB    FREE_MB
    ------------------------------ ----------- ---------- ----------
    DGROUP1                        MOUNTED           4076       3974
    Consultemos los discos asociados al grupo
    SQL> SELECT name, path FROM v$asm_disk;
    NAME          PATH
    ------------- ------------------------------------------
    DGROUP1_0000  C:\ORAASMDISK\ASMDSK01.ASM
    DGROUP1_0001  C:\ORAASMDISK\ASMDSK02.ASM

    Listo!!! Ahora ya tenemos nuestra instancia ASM básica disponible para presentarlo como almacenamiento.

    domingo, 15 de enero de 2012

    ORA-01031: insufficient privileges (DBD ERROR: OCISessionBegin)

    Error al ingresar ASMCMD "ORA-01031: insufficient privileges (DBD ERROR: OCISessionBegin)" Este error ocurre cuando no se tiene los privilegios o accesos necesarios a nivel del sistemas operativo.

    Para resolver este problema debes de asegurarte de:

    • Asegurate de que el usuario logoneado en el sistemas operativo tenga asociado el grupo ORA_DBA.
    • Que exista la siguiente configuración en el SQLNET.ORA: SQLNET.AUTHENTICATION_SERVICES = (NTS)