Category: Oracle11gR2

Error al crear una BD en Oracle Exadata



Estaba creando una base de datos , en un ambiente de Oracle Exadata, o sea, una base en RAC 11gr2 , con ASM y que maneja la información por Cell Storage, aunque para los efectos .....es lo mismo que Oracle 11gr2 Stand Alone con Filesystem:>>

Y me apareció este error



La forma de solucionarlo fue cambiando el parámetro COMPATIBLE de la instancia , pasando de un valor 11.2.0.0.0 a un valor 11.2.0.2.0 y asunto arreglado




Me encanta el Exadata ... B)

by Ligarius
10.07.12. 12:31:49. 77 words, 4243 views. Categories: Base de datos, Oracle11gR2, Oracle Exadata ,

¿Reconstruir o no un índice? (rebuild or not rebuild an index?)



Index Rebuild ¿es necesario?



Leyendo un artículo de Oracle sobre la reconstrucción de los índices , indica que rara vez es necesario hacer un rebuild de los índices, es más ... indica que la política de reconstruir índices está muy "embebida" en los DBAs y a veces reconstruyen sin siquiera haber realizado un pequeño análisis estadisticos del índice.

¿Por qué no se debiese reconstruir un índice?
Pues simplemente porque un índice de B*Tree es en sí una estructura que se auto-balancea y que se auto-mantiene por sí misma.

Por ejemplo siempre escuchamos que las DMLs dejan "orificios" en el índice que no son llenados y desbalancean el índice.

Pues eso no es tan así, pues cada vez que se produce un borrado de datos, se genera un leaf node vacío, el cual será sí o sí reutilizado.

¿Cuáles son las mayores justificaciones para hacer un rebuild a un índice?

  • Fragmentación del índice
  • Crecimiento del índice y su espacio "borrado" no es reutilizado
  • Factor de clustering del índice está fuera de sincronización

    En muchos de los casos , se mantiene el balanceo y sin fragmentación , debido a que las entradas (leafs) son reusadas.

    Las DMLs resultan en un slot libre que pueda estar alrededor de un bloque de índice. Pero estos "espacios libres" tipicamente son rellenados

    El índice de clusterización refleja como los datos en la tabla son ordenados respecto a su
    llave de indexación.

    La reconstrucción de un índice nunca va a influenciar en el factor de clustering, para esto se debiese llevar a cabo una reorganización de la tabla



    ¿Cuáles son los costos de reconstruir un índice?

    Pues son muchos y por ello se debiesen tener en cuenta los siguientes aspectos

    1.- Casi todos los scripts dependen de los datos de la tabla INDEX_STATS, la cual se carga con el comando

    ANALYZE INDEX ... VALIDATE STRUCTURE;

    El problema de este comando es que deja la tabla en un modo de bloqueo exclusivo, mientras se analiza el índice. Para índices muy grandes esto puede ser dramático, pues cualquier DML sobre la tabla en el período de análisis, no va a poder ser llevado a cabo.


    2.- La actividad de redo y la performance en generar se ven afectadas como resultado directo de la reconstrucción del índice.

    Cada vez que se realiza una DML sobre un índice, este índice va evolucionando ya sea por los splits que se van produciendo como por el crecimiento mismo del índice.
    Mientras el índice es reconstruído, es empaquetado y comprimido, cada bloque con los leaf nodes es reorganizado, sin embargo , con las DMLs que se están produciendo este reordenamiento afectan al empaquetamiento que tiene el índice por la reconstrucción del mismo.

    Todo lo anterior redunda en que hay muchísima más actividad de REDO, el hecho de que se produzcan splits produce que haya más I/O y uso de CPU .


    3.- Un INDEX COALESCE es el comando preferido en vez de la reconstrucción, pues posee las siguientes ventajas

  • No requiere 2 veces el tamaño del índice en Storage
  • Siempre es online
  • No reestructura el índice, pero trata de recombinar de la mejor forma los bloques donde se encuentran los leaf nodes (datos), esto evita por ejemplo el overhead del punto 2

    Todo lo anterior , es para indicar que no es recomendable colocar como política corporativa la reconstrucción de índice y que se debe hacer en casos muy excepcionales


    ¿Qué es un Index Block Split?
    Es un evento que sucede cuando un bloque de datos de índices no puede contener más información, lo que debe hacer es migrar toda esa info a bloques nuevos, y dejar en el bloque original los punteros de esos bloques, eso implica que se produce un nuevo nivel dentro del índice.

  • by Ligarius
    23.06.12. 22:42:59. 648 words, 16515 views. Categories: Base de datos, Oracle 11g, Oracle 10g, Oracle11gR2 ,

    NO uses el comando crs_stat en 11gr2 , por favor





    Al momento de chequear los recursos en un RAC 11gr2 , con el típico comando crs_stat , aparece lo siguiente
    [oracle@server01 ~]$ crs_stat -t
    Name Type Target State Host
    ------------------------------------------------------------
    ora.DATA.dg ora....up.type ONLINE ONLINE server01
    ora.FRA.dg ora....up.type ONLINE ONLINE server01
    ora....ER.lsnr ora....er.type ONLINE ONLINE server01
    ora....N1.lsnr ora....er.type ONLINE ONLINE server01
    ora....TING.dg ora....up.type ONLINE ONLINE server01
    ora.asm ora.asm.type ONLINE ONLINE server01
    ora.cvu ora.cvu.type ONLINE ONLINE server02
    ora.gsd ora.gsd.type OFFLINE OFFLINE
    ora....network ora....rk.type ONLINE ONLINE server01
    ora.oc4j ora.oc4j.type ONLINE ONLINE server02
    ora.ons ora.ons.type ONLINE ONLINE server01
    ora....SM1.asm application ONLINE ONLINE server01
    ora....01.lsnr application ONLINE ONLINE server01
    ora....a01.gsd application OFFLINE OFFLINE
    ora....a01.ons application ONLINE ONLINE server01
    ora....a01.vip ora....t1.type ONLINE ONLINE server01
    ora....SM2.asm application ONLINE ONLINE server02
    ora....02.lsnr application ONLINE ONLINE server02
    ora....a02.gsd application OFFLINE OFFLINE
    ora....a02.ons application ONLINE ONLINE server02
    ora....a02.vip ora....t1.type ONLINE ONLINE server02
    ora....ry.acfs ora....fs.type ONLINE ONLINE server01
    ora.scan1.vip ora....ip.type ONLINE ONLINE server01
    ora.wcpdb.db ora....se.type ONLINE ONLINE server01
    [oracle@server01 ~]$



    Pues bien , si se fijan en lo que respecta a base de datos e instancia , sólo aparece la siguiente línea

    ora.wcpdb.db ora....se.type ONLINE ONLINE server01

    Y dice claramente que la base de datos está arriba, pero cuando se trata de un RAC puede haber quizás sólo una instancia arriba y la base igual estará como ONLINE y disponible.



    Esto es un comportamiento normal del comando crs_stat , el no mostrar las instancias en un RAC 11gr2, ya que este comando está obsoleto en esa versión, tal cual lo dice Oracle

    http://docs.oracle.com/cd/E11882_01/rac.112/e16794/crsref.htm#CWADD91146



    Por ende, para evitarse inconvenientes es que debiesemos ocupar el comando crs_ctl

    http://docs.oracle.com/cd/E11882_01/server.112/e25494/restart006.htm#ADMIN13262



    Un ejemplo claro del uso de este comando en contraposición con el comando crs_stat , es la visualización de los recursos, mientras en 11gr2 no se visualizan las instancias con el comando crs_stat , pues con el comando crsctl sí..

    [oracle@server01 ~]$ crsctl stat res -t
    --------------------------------------------------------------------------------
    NAME TARGET STATE SERVER STATE_DETAILS
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.DATA.dg
    ONLINE ONLINE server01
    ONLINE ONLINE server02
    ora.FRA.dg
    ONLINE ONLINE server01
    ONLINE ONLINE server02
    ora.LISTENER.lsnr
    ONLINE ONLINE server01
    ONLINE ONLINE server02
    ora.OCRVOTING.dg
    ONLINE ONLINE server01
    ONLINE ONLINE server02
    ora.asm
    ONLINE ONLINE server01 Started
    ONLINE ONLINE server02 Started
    ora.gsd
    OFFLINE OFFLINE server01
    OFFLINE OFFLINE server02
    ora.net1.network
    ONLINE ONLINE server01
    ONLINE ONLINE server02
    ora.ons
    ONLINE ONLINE server01
    ONLINE ONLINE server02
    ora.registry.acfs
    ONLINE ONLINE server01
    ONLINE ONLINE server02
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.LISTENER_SCAN1.lsnr
    1 ONLINE ONLINE server01
    ora.cvu
    1 ONLINE ONLINE server02
    ora.oc4j
    1 ONLINE ONLINE server02
    ora.server01.vip
    1 ONLINE ONLINE server01
    ora.server02.vip
    1 ONLINE ONLINE server02
    ora.scan1.vip
    1 ONLINE ONLINE server01
    ora.nadius.db
    1 ONLINE ONLINE server01 Open
    2 ONLINE ONLINE server02 Open



    Acá se visualizan ambas instancias arriba , para la base de datos

    ora.nadius.db
    1 ONLINE ONLINE server01 Open
    2 ONLINE ONLINE server02 Open



    Espero les sirva

    by Ligarius
    11.06.12. 07:23:07. 573 words, 7551 views. Categories: Oracle11gR2, Real Application Cluster ,

    Sesión muere en medio de un ALTER DATABASE OPEN RESETLOGS



    Hace un par de semana esta haciendo una migración de una base de datos (cambio de servidores), en la aplicación de los archives, todo funcionó sin problemas.. por ende había que ejecutar el imponderable

    ALTER DATABASE OPEN RESETLOGS;



    Años atrás, en un Oracle9i , se me cayó el Putty con el cual estaba conectado a la base , se cayó justo en medio de un ALTER DATABASE OPEN RESETLOGS, de hecho , era una recreación del CONTROLFILE y para mi sorpresa cuando me volví a conectar , la base nunca más levanto ... y estaba inservible, con corrupción en los datafiles :( desde ee día, cada vez que hago un RESETLOGS rezó mucho :>>

    Pues bien, durante está migración... se desconecto la VPN y se vino abajo la sesión justo en medio de un RESETLOGS, solté esfinter en esos precisos instantes jejejejejeje y me dije "murió la base de 1,2TB de SAP" , me puse pálido y reconecte... obviamente la desesperación me hizo rejecutar el comando ALTER DATABASE OPEN RESETLOGS y ante mi sorpresa, apareció este mensaje

    SQL> alter database open resetlogs;
    alter database open resetlogs
    *
    ERROR at line 1:
    ORA-01154: database busy. Open, close, mount, and dismount not allowed now



    A esta altura no sabía si reír o llorar , pues claramente la base estaba haciendo algo, pero cuando buscaba en Google, muchos de los resultados eran algo oscuros |-|

    Volví a ejecutar el mismo comando, como para cerciorarme del drama y felizmente aparece este mensaje

    SQL> alter database open resetlogs;
    alter database open resetlogs
    *
    ERROR at line 1:
    ORA-01531: a database already open by the instance



    La base estaba abierta :>> , ¿pero como tanta maravilla?



    Chequee el archivo de alertas y aparece lo siguiente

    alter database open resetlogs
    ORA-1154 signalled during: alter database open resetlogs...
    Clearing online redo logfile 1 complete
    Clearing online redo logfile 2 /oracle/BD1/origlogA/log_g2m1.redo
    Clearing online log 2 of thread 1 sequence number 12061
    Sun May 20 10:21:09 2012
    Clearing online redo logfile 2 complete
    Clearing online redo logfile 3 /oracle/BD1/origlogB/log_g3m1.redo
    Clearing online log 3 of thread 1 sequence number 12062
    Clearing online redo logfile 3 complete
    Clearing online redo logfile 4 /oracle/BD1/origlogB/log_g4m1.redo
    Clearing online log 4 of thread 1 sequence number 12063
    Sun May 20 10:21:26 2012
    Clearing online redo logfile 4 complete
    Clearing online redo logfile 5 /oracle/BD1/origlogA/log_g5m1.redo
    Clearing online log 5 of thread 1 sequence number 12055
    Clearing online redo logfile 5 complete
    Clearing online redo logfile 6 /oracle/BD1/origlogB/log_g6m1.redo
    Clearing online log 6 of thread 1 sequence number 12056
    Sun May 20 10:21:42 2012
    Clearing online redo logfile 6 complete
    Clearing online redo logfile 7 /oracle/BD1/origlogB/log_g7m1.redo
    Clearing online log 7 of thread 1 sequence number 12057
    Clearing online redo logfile 7 complete
    Clearing online redo logfile 8 /oracle/BD1/origlogA/log_g8m1.redo
    Clearing online log 8 of thread 1 sequence number 12058
    Sun May 20 10:21:59 2012
    Clearing online redo logfile 8 complete
    Clearing online redo logfile 9 /oracle/BD1/origlogB/log_g9m1.redo
    Clearing online log 9 of thread 1 sequence number 12059
    Clearing online redo logfile 9 complete

    ---> Acá se produce la caída de la sesión , pero sigue trabajando en Background

    Sun May 20 10:21:59 2012
    Clearing online redo logfile 8 complete
    Clearing online redo logfile 9 /oracle/BD1/origlogB/log_g9m1.redo
    Clearing online log 9 of thread 1 sequence number 12059
    Clearing online redo logfile 9 complete
    Resetting resetlogs activation ID 3582998122 (0xd590366a)
    Online log /oracle/BD1/origlogB/log_g1m1.redo: Thread 1 Group 1 was previously cleared
    Online log /oracle/BD1/mirrlogB/log_g1m2.redo: Thread 1 Group 1 was previously cleared
    Online log /oracle/BD1/origlogA/log_g2m1.redo: Thread 1 Group 2 was previously cleared
    Online log /oracle/BD1/mirrlogA/log_g2m2.redo: Thread 1 Group 2 was previously cleared
    Online log /oracle/BD1/origlogB/log_g3m1.redo: Thread 1 Group 3 was previously cleared
    Online log /oracle/BD1/mirrlogB/log_g3m2.redo: Thread 1 Group 3 was previously cleared
    Online log /oracle/BD1/origlogB/log_g4m1.redo: Thread 1 Group 4 was previously cleared
    Online log /oracle/BD1/mirrlogB/log_g4m2.redo: Thread 1 Group 4 was previously cleared
    Online log /oracle/BD1/origlogA/log_g5m1.redo: Thread 1 Group 5 was previously cleared
    Online log /oracle/BD1/mirrlogA/log_g5m2.redo: Thread 1 Group 5 was previously cleared
    Online log /oracle/BD1/origlogB/log_g6m1.redo: Thread 1 Group 6 was previously cleared
    Online log /oracle/BD1/mirrlogB/log_g6m2.redo: Thread 1 Group 6 was previously cleared
    Online log /oracle/BD1/origlogB/log_g7m1.redo: Thread 1 Group 7 was previously cleared
    Online log /oracle/BD1/mirrlogB/log_g7m2.redo: Thread 1 Group 7 was previously cleared
    Online log /oracle/BD1/origlogA/log_g8m1.redo: Thread 1 Group 8 was previously cleared
    Online log /oracle/BD1/mirrlogA/log_g8m2.redo: Thread 1 Group 8 was previously cleared
    Online log /oracle/BD1/origlogB/log_g9m1.redo: Thread 1 Group 9 was previously cleared
    Online log /oracle/BD1/mirrlogB/log_g9m2.redo: Thread 1 Group 9 was previously cleared
    Sun May 20 10:22:07 2012
    Setting recovery target incarnation to 2
    Using SCN growth rate of 16384 per second
    Sun May 20 10:22:07 2012
    Assigning activation ID 3598614581 (0xd67e8035)
    LGWR: STARTING ARCH PROCESSES
    Sun May 20 10:22:07 2012
    ARC0 started with pid=19, OS id=11493
    ARC0: Archival started
    LGWR: STARTING ARCH PROCESSES COMPLETE
    ARC0: STARTING ARCH PROCESSES
    Sun May 20 10:22:08 2012
    ARC1 started with pid=20, OS id=11495
    Sun May 20 10:22:08 2012
    ARC2 started with pid=21, OS id=11497



    O sea, la sesión se cae , pero sigue en background el RESETLOGS trabajando y recreando los redologs

    Moraleja... .trabajen con VNC B)

    by Ligarius
    02.06.12. 11:20:28. 886 words, 3329 views. Categories: Oracle11gR2 ,

    Oracle RAC 11gr2 y el servicio ora.gsd OFFLINE



    Cuando realizamos la instalación del Grid Infraestructure para un Oracle RAC 11gr2, vemos el estado de los servicios y nos percatamos de que hay un servicio OFFLINE, un servicio llamado ora.gsd :|



    Lo podemos apreciar con el nuevo comando para chequear servicios y recursos
    [oracle@servidor01 bin]$ ./crsctl status resource -t
    --------------------------------------------------------------------------------
    NAME           TARGET  STATE        SERVER                   STATE_DETAILS
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.LISTENER.lsnr
                   ONLINE  ONLINE       servidor01
                   ONLINE  ONLINE       servidor02
    ora.OCRVOTING.dg
                   ONLINE  ONLINE       servidor01
                   ONLINE  ONLINE       servidor02
    ora.asm
                   ONLINE  ONLINE       servidor01               Started
                   ONLINE  ONLINE       servidor02               Started
    ora.gsd
                   OFFLINE OFFLINE      servidor01
                   OFFLINE OFFLINE      servidor02
    ora.net1.network
                   ONLINE  ONLINE       servidor01
                   ONLINE  ONLINE       servidor02
    ora.ons
                   ONLINE  ONLINE       servidor01
                   ONLINE  ONLINE       servidor02
    ora.registry.acfs
                   ONLINE  ONLINE       servidor01
                   ONLINE  ONLINE       servidor02
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.LISTENER_SCAN1.lsnr
          1        ONLINE  ONLINE       servidor01
    ora.cvu
          1        ONLINE  ONLINE       servidor01
    ora.oc4j
          1        ONLINE  ONLINE       servidor01
    ora.servidor01.vip
          1        ONLINE  ONLINE       servidor01
    ora.servidor02.vip
          1        ONLINE  ONLINE       servidor02
    ora.scan1.vip
          1        ONLINE  ONLINE       servidor01
    [oracle@servidor01 bin]$



    O lo podemos visualizar con nuestro comando de tantas batallas, el crs_stat -t

    [oracle@servidor01 bin]$ ./crs_stat -t
    Name           Type           Target    State     Host
    ------------------------------------------------------------
    ora....ER.lsnr ora....er.type ONLINE    ONLINE    servidor01
    ora....N1.lsnr ora....er.type ONLINE    ONLINE    servidor01
    ora....TING.dg ora....up.type ONLINE    ONLINE    servidor01
    ora.asm        ora.asm.type   ONLINE    ONLINE    servidor01
    ora.cvu        ora.cvu.type   ONLINE    ONLINE    servidor01
    ora.gsd        ora.gsd.type   OFFLINE   OFFLINE
    ora....network ora....rk.type ONLINE    ONLINE    servidor01
    ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    servidor01
    ora.ons        ora.ons.type   ONLINE    ONLINE    servidor01
    ora....SM1.asm application    ONLINE    ONLINE    servidor01
    ora....01.lsnr application    ONLINE    ONLINE    servidor01
    ora....a01.gsd application    OFFLINE   OFFLINE
    ora....a01.ons application    ONLINE    ONLINE    servidor01
    ora....a01.vip ora....t1.type ONLINE    ONLINE    servidor01
    ora....SM2.asm application    ONLINE    ONLINE    servidor02
    ora....02.lsnr application    ONLINE    ONLINE    servidor02
    ora....a02.gsd application    OFFLINE   OFFLINE
    ora....a02.ons application    ONLINE    ONLINE    servidor02
    ora....a02.vip ora....t1.type ONLINE    ONLINE    servidor02
    ora....ry.acfs ora....fs.type ONLINE    ONLINE    servidor01
    ora.scan1.vip  ora....ip.type ONLINE    ONLINE    servidor01



    Si nos fijamos , para ambos casos el servicio ora.gsd aparece OFFLINE :(

    ¿Qué significa eso? ¿Es algún problema?

    La verdad no, no es un problema tal como lo indica la nota Oracle
    GSD Is Used Only if 9i RAC Database is Present [ID 429966.1]



    En el fondo, este servicio se usa única y exclusivamente si hay presente una versión 9i de Oracle, puesto que con este servicio se atienden las peticiones de los requisitos de los clientes que usan esa versión de la base.



    Por defecto en Oracle11gr2 este servicio viene deshabilitad0, aparece como target OFFLINE y como status OFFLINE, no entorpeciendo las actividades del Grid Infraestructure


    Entonces... dont worry be happy :)

    by Ligarius
    08.05.12. 12:35:06. 473 words, 10308 views. Categories: Oracle11gR2, Real Application Cluster ,

    << 1 2 3 4 5 6 >>