Categories: Oracle 11g, Oracle11gR2

Oracle 11gr2 : Nueva característica Audit Trail Cleanup



Típico que un DBA pueda colocarle auditoría a una base de datos, ya sea, en Sistema Operativo o en base de datos a través de la tabla SYS.AUD$, incluso puede ir más allá y colocarle auditoría fina, la llamda FGA :)

Hasta allí , ninguna novedad, la novedad comienza cuando queremos hacer una mantención de esos archivos, ya sea borrar desde disco los trace, borrar desde las tablas de auditoría etc, ni hablar de generar un Job, casi siempre creamos una Shell y probablemente ni siquiera sepamos Shell Script..

Pues bien, les puedo comentar que desde Oracle11gr2 aparece un package llamado DBMS_AUDIT_MGMT, que puede hacer todas las labores pensadas para archivos de auditoría y más... ahora lo mejor :>> , está disponible en Oracle10gr2 (10.2.0.3 y 10.2.0.4) , si tal cual lo escuchan , disponible en estas versiones únicamente instalando un misero parche..



Todos los detalles de está gran facultad de Oracle, haciendo click en el siguiente link

Implementación y uso del Audit Trail Cleanup

Otros links interesantes
Usando el package DBMS_AUDIT_MGMT

Espero les sirva

by Ligarius
22.03.10. 14:57:04. 184 words, 8844 views. Categories: Instalación, Oracle11gR2 ,

Oracle 11gr2 : Como utilizar el comando ADRCI



Recuerden .... desde Oracle11gr1 , el archivo de alertas y el log del listener vienen como XML, entonces... ¿cómo lo vamos a ver cuando en Oracle12g sólo haya un XML y no el txt que conocemos?



Pues bien, he aquí la solución , simplemente un pequeño manual del uso del comando ADRCI , para Oracle11gr2 , aplicable para Oracle11gr1.

Manual de ADRCI en Oracle11gr2

También les puede servir el siguiente link

Oracle11gr2 : ¿Dónde están los trace y logs?


Espero les sirva

by Ligarius
17.03.10. 20:37:45. 89 words, 5494 views. Categories: Oracle11gR2 ,

Oracle11gr2 : Como crear diskgroups de distintas formas



En Oracle11gr2 , se pueden generar diskgroups de varias formas, he aquí la explicación :)





Forma 1 : Mediante utilitario ASMCA

Se ejecuta el utilitario asmca





Se carga la pantalla principal del asmca





Se ingresan los datos necesarios para la creación del diskgroups , si fuese necesario , se debe cambiar la ruta donde se descubren los raw devices





Al presionar ACEPTAR comienza a generar el Diskgroup





Y ahora podemos visualizar nuestro diskgroup recientemente generado








Forma 2 : Mediante utilitario ASMCMD

Tenemos que tener las variables de medioambiente apuntadas a nuestro home de Grid Infraestructure

[oracle@oracle11g bin]$ pwd
/u01/app/oracle/product/11.2.0/grid/bin
[oracle@oracle11g bin]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/grid



Llamamos al utilitario asmcmd

[oracle@oracle11g bin]$
[oracle@oracle11g bin]$ asmcmd

ASMCMD>



Generamos un archivo con tags para XML con los cuales generaremos el diskgroup, este archivo contiene lo siguiente

Para visualizar el archivo CLICK ACÁ


Procedemos a ejecutar ese archivo xml , mediante el comando mkgrp dentro del utilitario asmcmd

ASMCMD> mkgrp '/home/oracle/disk.xml'



Una vez creado el DiskGroup verificamos su metadata

ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 500 440 0 440 0 N DATA/

ASMCMD>



Forma 3 : Mediante utilitario SqlPlus

Validamos las variables de medio ambiente

[oracle@oracle11g ~]$ env | grep ORACLE
ORACLE_SID=+ASM
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid
[oracle@oracle11g ~]$



Nos conectamos a SQL*Plus

[oracle@oracle11g ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Sat Mar 13 23:31:36 2010

Copyright (c) 1982, 2009, Oracle. All rights reserved.

SQL> conn / as sysasm
Connected.



Y generamos un DiskGroup

SQL> r
1* create diskgroup data external redundancy disk '/dev/raw/raw1','/dev/raw/raw2','/dev/raw/raw3','/dev/raw/raw4','/dev/raw/raw5'

Diskgroup created.

SQL> r
1* select group_number , name , state , total_mb from v$asm_diskgroup

GROUP_NUMBER NAME STATE TOTAL_MB
------------ ------------------------------ ----------- ----------
1 DATA MOUNTED 500



Nota : Nos tenemos que conectar con el nuevo rol de asm llamado sysasm , pues conectados como SYSDBA nos dará un error de privilegios

SQL> create diskgroup data external redundancy disk '/dev/raw/raw1','/dev/raw/raw2','/dev/raw/raw3','/dev/raw/raw4','/dev/raw/raw5';
create diskgroup data external redundancy disk '/dev/raw/raw1','/dev/raw/raw2','/dev/raw/raw3','/dev/raw/raw4','/dev/raw/raw5'
*

ERROR at line 1:
ORA-15260: permission denied on ASM disk group





Forma 4 : Mediante utilitario ASMCA

También se puede generar un diskgroup en formato silent, no es muy recomendado, pero sepan que existe.


Verificamos las variable de medio ambiente

[oracle@oracle11g bin]$ env | grep ORACLE
ORACLE_SID=+ASM
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid
[oracle@oracle11g bin]$



Ejecutamos el comando asmca -silent

[oracle@oracle11g bin]$ asmca -silent -createDiskGroup -diskgroupname DATA -redundancy external -compatible.asm '11.2.0.0.0' -compatible.rdbms '11.2.0.0.0' -disk '/dev/raw/raw5'
-disk '/dev/raw/raw1' -disk '/dev/raw/raw2' -disk '/dev/raw/raw3' -disk '/dev/raw/raw4'

El grupo de discos DATA se ha creado correctamente.



Realizamos la validación del nuevo DiskGroup generado

[oracle@oracle11g bin]$ asmcmd

ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 500 440 0 440 0 N DATA/

ASMCMD>

ASMCMD> quit
[oracle@oracle11g bin]$





Referencias :
Utilitario ASMCMD
Utilitario ASMCA



Espero les sirva.


by Ligarius
16.03.10. 13:38:44. 606 words, 5609 views. Categories: Base de datos, Oracle11gR2, ASM (Automatic Storage Management) ,

Utilizando las métricas de Oracle para generar gráficos



Siempre existe la necesidad de mostrar información de manera gráfica, bien lo dice el dicho "Un dibujo vale más que mil palabras" , por ende , mostrar nu gráfico de comportamiento de algún componente de nuestra base de datos, se agradece mucho más que mostrar información de forma plana.

Para ello nos centraremos en la actividad de las vistas relacionadas a las métricas, disponibles desde Oracle10gr1 en adelante



La vista V$SYSMETRIC muestra la métrica de sistema capturada en un intervalo de 15 y 60 segundos , algunos datos importantes en esta vista

V$SYSMETRIC.BEGIN_TIME : Fecha de inicio del intervalo
V$SYSMETRIC.END_TIME : Fecha de término del intervalo
V$SYSMETRIC.INTSIZE_CSEC : Centésimas de segundo en el intervalo
V$SYSMETRIC.METRIC_NAME : Nombre de la métrica
V$SYSMETRIC.VALUE : Valor de la métrica
V$SYSMETRIC.METRIC_UNIT : Descripción de la unidad de medida, en otras palabras , como se calcula el valor de la métrica

La gracia principal de esto es que podemos capturar información de mucha utilidad y generar gráficos "para el jefe" , ¿cómo así? , pues bien ... analicemos un dato que es extremadamente importante y aparece en todos lugares , el Buffer Cache Hit Ratio

Con esta consulta sobre la V$SYSMETRIC podemos consultar el hit ratio del database buffer cache

SQL> r
1 select to_char(BEGIN_TIME,'dd-mm-yyyy hh24:mi:ss') "Fecha Inicio" ,
2 to_char(END_TIME,'dd-mm-yyyy hh24:mi:ss') "Fecha Termino" ,
3 INTSIZE_CSEC ,
4 GROUP_ID ,
5 METRIC_ID ,
6 METRIC_NAME ,
7 VALUE ,
8 METRIC_UNIT
9 from v$sysmetric
10* where metric_name like '%Buffer Cache Hit Ratio%'


Y podríamos recopilar información como la que sigue

Fecha Inicio Fecha Termino INTSIZE_CSEC GROUP_ID METRIC_ID METRIC_NAME VALUE METRIC_UNIT
------------------- ------------------- ------------ ---------- ---------- ------------------------- ------- ----------------------------------------
11-11-2009 20:11:15 11-11-2009 20:12:15 6000 2 2000 Buffer Cache Hit Ratio 100.00 % (LogRead - PhyRead)/LogRead
11-11-2009 20:12:45 11-11-2009 20:13:00 1500 3 2000 Buffer Cache Hit Ratio 100.00 % (LogRead - PhyRead)/LogRead


El problema principal (si se le puede llamar problema) es que sólo muestra 2 puntos y con eso, claramente no sabremos la tendencia de nuestra base de datos , por ende necesitamos más puntos, ¿de dónde obtenerlos?, pues del historial de esa vista , la V$SYSMETRIC_HISTORY

1 select to_char(BEGIN_TIME,'dd-mm-yyyy hh24:mi:ss') "Fecha Inicio" ,
2 to_char(END_TIME,'dd-mm-yyyy hh24:mi:ss') "Fecha Termino" ,
3 INTSIZE_CSEC ,
4 GROUP_ID ,
5 METRIC_ID ,
6 METRIC_NAME ,
7 VALUE ,
8 METRIC_UNIT
9 from v$sysmetric_history
10 where metric_name like '%Buffer Cache Hit Ratio%'
11* order by 1


Acá nos muestra la última hora de las métricas que necesitamos visualizar , lo cual ya se puede sentir como algo más elaborado , o sea, "les presentamos el comportamiento del Database Buffer Cache durante la última hora" , suena bien , está vista nos entrega información de la última hora con un total de registros de 74

Y si queremos tener una curva algo más prolongada, quizás, el último mes del Database Buffer Cache, pues allí debemos consultar la vista DBA_HIST_SYSMETRIC_HISTORY

La información viaja así ...... después de una hora en memoria en las vistas V$SYSMETRIC y V$SYSMETRIC_HISTORY , el proceso Background MMON descarga la información de estás vistas al diccionario de datos , esa información la encontramos en la vista DBA_HIST_SYSMETRIC_HISTORY

Si piensan un poco , lo anterior es lo que sucede cuando el MMON captura la información estadística desde la SGA , o sea, son los Snapshots del AWR , entre más Snapshots existan , la curva puede ser más amplia cuando analicemos información estadística, que interesante!!!

La forma en que pueden realizar los gráficos mediante la información proveniente de estas tablas, la pueden encontrar muy detallada, paso a paso en el siguiente artículo

B)B)B)Graficar en Excel información proveniente desde StatspackB)B)B)

Hay que extrapolar un poco , la información en este caso no viene del Statspack , proviene de las vistas de Oracle, pero para el caso, es aplicable 500%

¿Qué otra información es útil como métrica?

La verdad muchas otras, como por ejemplo

* CPU Usage Per Sec
* Disk Sort Per Sec
* Host CPU Utilization (%)
* Leaf Node Splits Per Sec
* Library Cache Hit Ratio
* Memory Sorts Ratio
* PGA Cache Hit %
* Physical Reads Per Sec
* Redo Generated Per Sec
* Soft Parse Ratio
* Etc,etc.

La información está , es llegar y graficar :yes:

Mayor descripción de la vista V$SYSMETRIC

De la vista V$SYSMETRIC_HISTORY

Y de la vista DBA_HIST_SYSMETRIC_HISTORY

Espero que les sirva


by Ligarius
20.01.10. 16:40:17. 770 words, 10605 views. Categories: Oracle 11g, Oracle 10g, Tuning / Performance, Oracle11gR2 ,

Oracle11gr1 y Oracle11gr2 : Ha ocurrido un error , ¿Dónde están los logs y traces?



Imagínense el siguiente error

[oracle@SQL]$ sqlplus usuario/password

SQL*Plus: Release 11.2.0.1.0 Production on Thu Dec 10 20:58:22 2009

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> start file
select COUNT(*)
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 887
Session ID: 134 Serial number: 162

SQL>


Tratamos de hacer un trace, se cae, tratamos de generar un evento de traceo , se cae y así , por siempre y para siempre..

Lo mejor es abrir un caso en Oracle, ellos debiesen solucionarlo |-| (no siempre es así, pero les tengo fé)

Y cuando vamos al ORACLE_BASE, nos damos cuenta :>> de que no existe, claro estamos en 11gr2 XX(

Nos colocamos el machete en la boca y nos metemos a los directorios de log y trace (llamado diag) y nos encontramos con muchos de ellos

[oracle@SQL]$ ls -ltr
total 136
drwxr-x--- 2 oracle oinstall 4096 Nov 6 00:17 hm
drwxr-x--- 2 oracle oinstall 4096 Nov 6 00:17 alert
drwxr-x--- 2 oracle oinstall 4096 Dec 10 20:37 metadata
drwxr-x--- 2 oracle oinstall 4096 Dec 10 20:37 ir
drwxr-x--- 4 oracle oinstall 4096 Dec 10 20:58 incident
drwxr-x--- 8 oracle oinstall 12288 Dec 10 20:58 cdump
drwxr-x--- 2 oracle oinstall 4096 Dec 10 20:58 sweep
drwxr-x--- 2 oracle oinstall 20480 Dec 10 20:58 stage
drwxr-x--- 2 oracle oinstall 4096 Dec 10 20:58 lck
drwxr-x--- 4 oracle oinstall 4096 Dec 10 21:09 incpkg
drwxr-x--- 4 oracle oinstall 69632 Dec 10 21:20 trace
[oracle@SQL]$ pwd
/u01/app/oracle/diag/rdbms/inst1/inst1
[oracle@SQL]$


Es ahora donde nos entra la desesperación y nos preguntamos ¿Qué #$"°| le envíamos a Oracle?

Pues bien , allí es donde ingresa el ADRCI, el utilitario para hacernos la vida más fácil con la nueva estructura de diagnóstico que nos provee Oracle

He aquí un pequeño ejercicio

1.- Nos conectamos al adrci

[oracle@SQL]$ adrci

ADRCI: Release 11.2.0.1.0 - Production on Thu Dec 10 21:03:05 2009

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

ADR base = "/u01/app/oracle"
adrci>


2.- Verificamos los ORACLE_HOME existente (son mas de 1 ya que estamos trabajando con el DIAG)

adrci> show homes
ADR Homes:
diag/tnslsnr/maq1/listener
diag/rdbms/inst1/inst1
adrci>


3.- Para poder trabajar con el adrci, se debe por obligación seleccionar uno de estos ORACLE HOMES

adrci> set homepath diag/rdbms/inst1/inst1
adrci>
adrci> show homes
ADR Homes:
diag/rdbms/inst1/inst1
adrci>


4.- Una vez seleccionado nuestro ORACLE_HOME, procedemos a ver los "problemas" e "incidentes"
Sólo como introducción , pues generaré un post al respecto, un problema genera múltiples incidentes y un problema es casi siempre crítico, o sea, solucionando el problema se acaban los incidentes (suena a ITIL :)) )

adrci> show problem

ADR Home = /u01/app/oracle/diag/rdbms/inst1/inst1:
*************************************************************************
PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1 ORA 7445 [_intel_fast_memcmp()+30] 275 2009-12-10 20:58:26.261000 -03:00
1 rows fetched


5.- Aparece claramente el problema, un error ORA-07445, ahora queremos ver los incidentes que ha originado ese problema

adrci> show incident

ADR Home = /u01/app/oracle/diag/rdbms/inst1/inst1:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
251 ORA 7445 [_intel_fast_memcmp()+30] 2009-12-10 20:41:07.496000 -03:00
275 ORA 7445 [_intel_fast_memcmp()+30] 2009-12-10 20:58:26.261000 -03:00
2 rows fetched

adrci>

Como se puede apreciar, ha generado varios incidentes , pero sólo necesitamos uno de ellos como para comenzar a procesar la información y poder "empaquetar" todos los archivos necesarios.

6.- Para ello , tomamos el INCIDENT_ID que necesitamos y ejecutamos el siguiente comando

adrci> ips pack incident 275 in /home/oracle
Generated package 2 in file /home/oracle/ORA7445_i_20091210210936_COM_1.zip, mode complete
adrci>


7.- Una vez ejecutado el comando , tenemos un zip con TODA LA INFORMACIÓN necesaria para soporte Oracle y casi ... no nos despeinamos :D

Más información del ADRCI

Espero les sirva...

by Ligarius
14.12.09. 07:39:59. 610 words, 13016 views. Categories: Oracle 11g, Tuning / Performance, Oracle11gR2 ,

<< 1 2 3 4 5 6 7 8 9 10 >>