lunes, 26 de diciembre de 2011

RMAN "backup optimization" en acción


RMAN tiene varios parámetros que permiten configurar nuestra política de respaldo.

Con "BACKUP OPTIMIZATION" podemos acortar el tiempo y espacio ocupado por el  respaldo, ya que cuando está configurado no se respaldan archivos que ya existen como respaldos válidos en el destino.

Existe desde 9i, y por defecto no está habilitado. Ejemplo en 11.2 XE:

RMAN> SHOW BACKUP OPTIMIZATION;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name XE are:
CONFIGURE BACKUP OPTIMIZATION OFF; # default

Debemos habilitarlo explícitamente:

RMAN> CONFIGURE BACKUP OPTIMIZATION ON;

new RMAN configuration parameters:
CONFIGURE BACKUP OPTIMIZATION ON;
new RMAN configuration parameters are successfully stored

Cómo podemos ver su funcionamiento en la práctica?. Según el tipo de archivo a respaldar es el criterio usado para decidir si hay una copia idéntica. Los detalles en el manual (de 11.2).

En este ejemplo, se trata de copiar un backupset a un directorio local.

¿Para qué puede interesar hacer esto?. El caso más obvio es sacar respaldos fuera de la Flash Recovery Area cuando usamos ASM, para luego respaldarlos a cinta como parte de una política de respaldo externa a la base.

RMAN> backup as copy device type disk format '/respaldos/%U' backupset COMPLETED BETWEEN 'SYSDATE-2' AND 'SYSDATE-1';
skipping backupset key 342; already backed up 1 time(s)
skipping backupset key 343; already backed up 1 time(s)
skipping backupset key 344; already backed up 1 time(s)

Para forzar esta copia sin cambiar la configuración, se debe agregar la clausula FORCE a la sentencia:

RMAN> backup as copy device type disk format '/respaldos/%U' backupset COMPLETED BETWEEN 'SYSDATE-2' AND 'SYSDATE-1' FORCE;
Starting backup at 20/DEC/2011 19:45:49
using channel ORA_DISK_1
input backupset count=15078 stamp=770144640 creation_time=17/DEC/2011 19:45:00
channel ORA_DISK_1: starting piece 1 at 20/DEC/2011 19:45:52
channel ORA_DISK_1: backup piece +RECOVERY/prod/backupset/2011_12_17/nnndf0_backup_prod_1217110500_0.397.770144653
...

jueves, 22 de diciembre de 2011

Formato de fecha en comandos RMAN

Comparto un truco simple pero muy útil: incluir la hora en comandos RMAN que muestran o reciben fechas.


Por ejemplo, si queremos ver los archivos generados en un backup específico:

RMAN> list backup summary tag bkp_prod_121511060003;

List of Backups
===============
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
5234   B  F  A DISK        15-DEC-11       1       1       YES        bkp_prod_121511060003
5235   B  F  A DISK        15-DEC-11       1       1       YES        bkp_prod_121511060003

RMAN> exit

Recovery Manager complete.



La fecha en la que se generó, "Completion Time", no incluye la hora.

Para cambiar el formato, no se puede hacer a nivel de sesión:

RMAN> sql "alter session set nls_date_format=''dd/mm/yyyy hh:mi:ss''";

sql statement: alter session set nls_date_format=''dd/mm/yyyy hh:mi:ss''

RMAN> list backup summary tag bkp_prod_121511060003;

List of Backups
===============
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
5234   B  F  A DISK        15-DEC-11       1       1       YES        bkp_prod_121511060003
5235   B  F  A DISK        15-DEC-11       1       1       YES        bkp_prod_121511060003


La forma de hacerlo es usando la variable de ambiente NLS_DATE_FORMAT en el sistema operativo, fuera de la consola RMAN:

[oracle@oraculo ~]$ export NLS_DATE_FORMAT='DD/MON/YYYY HH24:MI:SS'

[oracle@oraculo ~]$ rman target /

Recovery Manager: Release 10.2.0.3.0 - Production on Wed Dec 21 20:31:46 2011

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

connected to target database: Ent11g (DBID=943234298)


RMAN> list backup summary tag bkp_prod_121511060003;

using target database control file instead of recovery catalog

List of Backups
===============
Key     TY LV S Device Type Completion Time      #Pieces #Copies Compressed Tag
------- -- -- - ----------- -------------------- ------- ------- ---------- ---
 5234   B  F  A DISK        15/DEC/2011 03:21:03 1       1       YES        bkp_prod_121511060003
 5235   B  F  A DISK        15/DEC/2011 03:52:47 1       1       YES        bkp_prod_121511060003

lunes, 19 de diciembre de 2011

Pasó otro OOW

Después de haber asistido a dos Oracle OpenWorld Latin America consecutivos, es inevitable comparar, y haber ido a éste con la expectativa de mejorar lo visto el año anterior.

No fue el caso en los temas que me interesan de bases de datos. Pero para compensarlo se vieron muchas más charlas de Java en el mismo evento (aunque con entrada separada). Como no es un tema que me interese, mi valoración del evento no es tan buena, aunque la gente que asistió interesada en desarrollo, seguramente va a opinar distinto.

En lo personal el evento fue muy importante, ya que presenté una charla por el UYOUG en el marco del User Group Form, que incluyo a continuación.

Es la misma que presenté en el primer evento del UYOUG en Montevideo, con ajustes menores para hacerla más entendible si se lee sin asistir a la charla, y el agregado de ejemplos a las transparencias (cosa que antes mostraba en mi notebook).


lunes, 5 de diciembre de 2011

Presentación en el OOW Latin America

Si andan por el Oracle OpenWorld Latin America en San Pablo, no se pierdan las presentaciones técnicas dadas por miembros de grupos de usuarios. http://www.oracle.com/openworld/lad-en/connect/face-to-face/user-groups/index.html

En particular la del miércoles :)


miércoles, 26 de octubre de 2011

Bind peeking (era OOW)

Oracle publicó el material de las charlas dadas en el reciente Oracle Open World, con acceso libre y gratuito.

Entre tantos temas interesantes que se presentan todos los años, quiero resaltar la presentación "Oracle Optimizer: Best Practices for Managing Optimizer Statistics" dada por integrantes del grupo de desarrollo del optimizador de Oracle. Ellos además publican artículos muy interesantes en su Blog: http://blogs.oracle.com/optimizer

En esta charla se explican muchos detalles técnicos, entre ellos el uso y gestión de histogramas, donde se menciona el parámetro oculto _optim_peek_user_binds para enfrentar los problemas de bind peeking que ocurren en 10g.

Este último es un problema muy conocido y con muchas referencias.
Una muy didáctica, y con una interesante discusión posterior es esta de Alex del Pythian Group.

Descuento que en el próximo Oracle OpenWorld Latin America en San Pablo vamos a tener la posibilidad de ver oradores muy buenos también, como ocurrió el año pasado.

Un saludo.

Nota 19/12/2011: actualicé el título de la entrada para reflejar mejor el contenido, ya que del OOW hablo en la siguiente entrada.

lunes, 5 de septiembre de 2011

11.2 XE es producción

El post anterior vino sin saber que la versión final se iba a publicar en pocos días.
Así que viene bien validar si sigue siendo un problema el reinicio.

Para no complicar la prueba, desinstalo la versión 11.2 beta y hago una instalación nueva:

oraculo:~ # rpm -qa | grep oracle
oracle-xe-11.2.0-0.5.x86_64

oraculo:~ # rpm -e oracle-xe-11.2.0-1.0.x86_64

oraculo:~ # unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
Archive: oracle-xe-11.2.0-1.0.x86_64.rpm.zip
creating: Disk1/
creating: Disk1/upgrade/
inflating: Disk1/upgrade/gen_inst.sql
creating: Disk1/response/
inflating: Disk1/response/xe.rsp
inflating: Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm

oraculo:~ # mv Disk1/* /local/soft/oracle/xe-112

oraculo:~ # cd /local/soft/oracle/xe-112

oraculo:/local/soft/oracle/xe-112 # rpm -Uvh oracle-xe-11.2.0-1.0.x86_64.rpm
Preparing... ########################################### [100%]

This system does not meet the minimum requirements for swap space. Based on
the amount of physical memory available on the system, Oracle Database 11g
Express Edition requires 2048 MB of swap space. This system has 1799 MB
of swap space. Configure more swap space on the system and retry the
installation.

error: %pre(oracle-xe-11.2.0-1.0.x86_64) scriptlet failed, exit status 1
error: install: %pre scriptlet failed (2), skipping oracle-xe-11.2.0-1.0

Ni este mensaje ni el manual de instalación dice explícitamente que los 2048 Mb de swap tienen que estar libres.
Reviso si ese es el problema:

oraculo:/local/soft/oracle/xe-112 # free
total used free shared buffers cached
Mem: 4048624 3653880 394744 0 27340 1556616
-/+ buffers/cache: 2069924 1978700
Swap: 2104476 262172 1842304

El método fácil de liberar el swap usado es deshabilitar y habilitar el área de swap.
Esto se puede hacer siempre que haya memoria RAM disponible. Sino, hay que agregar un archivo, usando dd/mkswap/swapon.

oraculo:/local/soft/oracle/xe-112 # swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda5                               partition       2104476 1176    -1

oraculo:/local/soft/oracle/xe-112 # swapoff /dev/sda5

oraculo:/local/soft/oracle/xe-112 # swapon /dev/sda5

oraculo:/local/soft/oracle/xe-112 # free
total used free shared buffers cached
Mem: 4048624 3872168 176456 0 38672 1576076
-/+ buffers/cache: 2257420 1791204
Swap: 2104476 0 2104476

Ahora sí, repetimos la instalación:

oraculo:/local/soft/oracle/xe-112 # rpm -Uvh oracle-xe-11.2.0-1.0.x86_64.rpm
Preparing... ########################################### [100%]
1:oracle-xe ########################################### [100%]
Executing post-install steps...

You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.

Configuramos, otra vez sin elegir inicio automático.

oraculo:/local/soft/oracle/xe-112 # /etc/init.d/oracle-xe configure

Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:
Confirm the password:

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:n

Starting Oracle Net Listener...Done

/etc/rc.status: line 70: test: 46 113: integer expression expected
Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.

Mirando el código de /etc/rc.status, el mensaje de error parece inofensivo, así que continúo como si no estuviera.

Valido si quedó levantada, y su configuración de inicio:

oraculo:/local/soft/oracle/xe-112 # ps -eaf | grep pmon
oracle 10758 1 0 16:41 ? 00:00:00 xe_pmon_XE
root 11720 8148 0 20:18 pts/1 00:00:00 grep pmon

oraculo:/local/soft/oracle/xe-112 # grep XE /etc/oratab
XE:/u01/app/oracle/product/11.2.0/xe:N

oraculo:/local/soft/oracle/xe-112 # grep DBENABLED /etc/sysconfig/oracle-xe
# ORACLE_DBENABLED:'true' means to load the Database at system boot.
ORACLE_DBENABLED=false

Ok, todo en orden y misma configuración que antes.
Funciona ahora el script de reinicio aunque hayamos elegido que no se inicie de forma automática?

oraculo:/local/soft/oracle/xe-112 # service oracle-xe stop
Shutting down Oracle Database 11g Express Edition instance.
Stopping Oracle Net Listener.

oraculo:/local/soft/oracle/xe-112 # ps -eaf | grep pmon
root 11860 8148 0 20:19 pts/1 00:00:00 grep pmon

Esta vez sí funciona.
Ahora hay que empezar a usarla en serio para ver todos los chiches nuevos!.

sábado, 27 de agosto de 2011

Usando la última versión de Oracle XE (11.2)

Oracle ofrece una edición gratiuta de la base de datos, llamada XE, que tiene algunos límites respecto a la versión comercial.

Desde Abril está disponible la última versión, 11.2 en beta y sólo para linux 64 bits o windows 32 bits.

En esta versión, los límites de recursos que puede utilizar son:
  • una sola instancia

  • una CPU

  • 11 GB de datos de usuario

  • 1 GB RAM



La instalación en Opensuse 11.4 es simple.


oraculo:/local/soft/oracle/oracle-xe # rpm -Uvh oracle-xe-11.2.0-0.5.x86_64.rpm
Preparing... ########################################### [100%]
1:oracle-xe ########################################### [100%]
Executing post-install steps...

You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.


En mi caso, ya tenía una instalación de oracle anterior y por lo tanto ya estaba creado el usuario oracle en el sistema operativo, instalados los paquetes necesarios y ajustados los parámetros del kernel.
En una instalación nueva sin estos, son unos pasos más siguiendo el manual, o usando el paquete orarun.

Hecha la introducción, me interesa comentar algo que encontré y no está tan claro: para bajar la base, el script provisto funciona sólo si está configurado el inicio autómatico. Sino, debe bajarse manualmente.

En mi instalación, respondí que no quería inicio automático de la base al momento de la configuración:


oraculo:/local/soft/oracle/oracle-xe # /etc/init.d/oracle-xe configure

Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:
Confirm the password:

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:n

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.



Una vez que está funcionando..


oraculo:/local/soft/oracle/oracle-xe # ps -eaf | grep XE | grep pmon
oracle 7663 1 0 01:50 ? 00:00:09 xe_pmon_XE

oracle@oraculo:/u01/app/oracle/product/11.2.0/xe/bin> sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Beta on Sun Aug 28 13:14:36 2011

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


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Beta

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Beta
PL/SQL Release 11.2.0.2.0 - Beta
CORE 11.2.0.2.0 Production
TNS for Linux: Version 11.2.0.2.0 - Beta
NLSRTL Version 11.2.0.2.0 - Production


..cuando intentamos bajarla, no lo hace:


oraculo:/local/soft/oracle/oracle-xe # service oracle-xe stop

oraculo:/local/soft/oracle/oracle-xe # ps -eaf | grep XE | grep pmon
oracle 7663 1 0 01:50 ? 00:00:09 xe_pmon_XE


Revisando el código de /etc/init.d/oracle-xe se puede ver a partir de la línea 644 que la bajada depende de la configuración escrita en /etc/sysconfig/oracle-xe ($CONFIGURATION):


stop)
if test -f "$CONFIGURATION"
then
if test "$ORACLE_DBENABLED" != "true"
then
exit 0
fi
else
echo "Oracle Database 11g Express Edition is not configured. You must run
'/etc/init.d/oracle-xe configure' as the root user to configure the database."
exit 0
fi
stop
;;


Comprobamos que entramos en el segundo if ($ORACLE_DBENABLED):


oraculo:> grep DBENABLED /etc/sysconfig/oracle-xe
# ORACLE_DBENABLED:'true' means to load the Database at system boot.
ORACLE_DBENABLED=false



La solución simple es bajarla manualmente, y no olvidarse de bajar el listener.

Sino, habilitar el inicio automático:


oraculo: # service oracle-xe enable

oraculo:> grep DBENABLED /etc/sysconfig/oracle-xe
# ORACLE_DBENABLED:'true' means to load the Database at system boot.
ORACLE_DBENABLED=true

oraculo: # service oracle-xe stop
Shutting down Oracle Database 11g Express Edition instance.
Stopping Oracle Net Listener.

oraculo: # ps -eaf | grep XE
root 22607 7011 0 13:00 pts/0 00:00:00 grep XE


miércoles, 24 de agosto de 2011

Variables de paquetes edicionados

¿Que ocurre con los valores de las variables públicas en paquetes que tienen varias ediciones?

Esta fue una pregunta del público (gracias Victoria!) al final de mi charla sobre 11gR2 en la JIAP, explorando las posibilidades de la nueva funcionalidad Edition-Based Redefinition (EBR).

Aprovecho a desarrollar un ejemplo simple que muestra este comportamiento, donde se comprueba que cada edición del paquete mantiene su estado. Está aclarado en el manual aquí.

Esto es algo más a considerar si pensamos usar EBR para hacer actualización de versiones de aplicativos y minimizar el tiempo en que la aplicación está fuera de línea.

Este ejemplo es usando 11.2.0.2 enterprise:

1) Levantamos la base:


oracle@oraculo:~> sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Wed Aug 24 00:02:33 2011

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


Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area 1043886080 bytes
Fixed Size 2233088 bytes
Variable Size 645926144 bytes
Database Buffers 390070272 bytes
Redo Buffers 5656576 bytes
Database mounted.
Database opened.

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE 11.2.0.2.0 Production
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production


Creamos usuario para hacer la prueba

SQL> create user pru identified by pru;

User created.

SQL> grant dba to pru;

Grant succeeded.


Habilitamos EBR:

SQL> ALTER USER pru ENABLE EDITIONS;

User altered.

SQL> conn pru/pru
Connected.


Creamos el paquete PP con la variable VN y un par de procedimientos para incrementar y mostrar su valor:

SQL> create or replace package pp as
-- variable pública
vn number;
--procedimientos que usan la variable
procedure muestro;
procedure suma (n in number);
end;
/

Package created.

SQL> create or replace package body pp as
procedure muestro is
begin
dbms_output.put_line('vn vale: '||pp.vn);
end;
procedure suma (n in number) is
begin
pp.vn := nvl(pp.vn,0) + n;
end;
end;
/

Package body created.


Vemos en que edición quedó creado:

SQL> select edition_name, name, max(line)
from DBA_SOURCE_AE
where name = 'PP'
group by edition_name, name;

EDITION_NAME NAME MAX(LINE)
------------------------------ ------------------------------ ----------
ORA$BASE PP 13


Cargamos el valor 5 en la variable:

SQL> set serveroutput on;
SQL> exec pp.suma(5);

PL/SQL procedure successfully completed.

SQL> exec pp.muestro;
vn vale: 5

PL/SQL procedure successfully completed.


Ahora creamos una nueva edición y trabajamos en ella:

SQL> create edition e0;

Edition created.

SQL> ALTER SESSION SET EDITION = e0;

Session altered.


No creamos nada todavía, así que el paquete sigue siendo el original.
¿Cuanto vale la variable?. Sumamos uno y vemos:

SQL> exec pp.suma(1);

PL/SQL procedure successfully completed.

SQL> exec pp.muestro;
vn vale: 1

PL/SQL procedure successfully completed.


No se mantiene el valor que cargamos en la edición anterior (5), sino que se inicializó en esta edición.

Validamos en qué edición estamos trabajando:

SQL> SELECT SYS_CONTEXT('USERENV', 'CURRENT_EDITION_NAME'),
SYS_CONTEXT('USERENV', 'SESSION_EDITION_NAME')
FROM DUAL;

SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
--------------------------------------------------------------------------------
SYS_CONTEXT('USERENV','SESSION_EDITION_NAME')
--------------------------------------------------------------------------------
E0
E0


Ahora cambiamos el código del paquete en esta edición, para poder diferenciarlo del anterior.

El texto desplegado incluye "2.0" y suma el doble de lo que se pide.
SQL> create or replace package pp as
vn number := 0;
procedure muestro;
procedure suma (n in number);
end;
/

Package created.

SQL> create or replace package body pp as
procedure muestro is
begin
dbms_output.put_line('vn 2.0 vale: '||pp.vn);
end;

procedure suma (n in number) is
begin
pp.vn := nvl(pp.vn,0) + n*2;
end;
end;
/

Package body created.



Comprobamos las versiones existentes del paquete

SQL> select edition_name, name, max(line)
from DBA_SOURCE_AE
where name = 'PP'
group by edition_name, name;

EDITION_NAME NAME MAX(LINE)
------------------------------ ------------------------------ ----------
ORA$BASE PP 13
E0 PP 13


Nuevamente incrementamos la variable global del paquete en esta edición

SQL> exec pp.suma(1);

PL/SQL procedure successfully completed.

SQL> exec pp.muestro;
vn 2.0 vale: 2

PL/SQL procedure successfully completed.


En resumen:
  • valía 5 en la edición ORA$BASE.
  • 1 en E0 cuando no se había cambiado.
  • luego de crear la nueva versión en E0 las variables se inicializan, y ahora vale 2.
Vuelvo a la edición original e incremento de nuevo para confirmar que mantiene su valor

SQL> ALTER SESSION SET EDITION = ORA$BASE;

Session altered.

SQL> exec pp.suma(1);

PL/SQL procedure successfully completed.

SQL> exec pp.muestro;
vn vale: 6

PL/SQL procedure successfully completed.


jueves, 18 de agosto de 2011

Presentación sobre 11gR2

Ayer comenzaron las jornadas anuales de la Asociación de Informáticos de la Administración Pública (AsIAP) en Montevideo, evento más conocido como la JIAP.

Propuse una charla sobre 11gR2 en nombre del UYOUG, que fue aceptada y presenté ayer.

Les dejo la presentación.


Saludos.

domingo, 31 de julio de 2011

¿Que nos mantiene ocupados?

Todavía no encontré la rutina que me permita mantener este blog actualizado. Y no es por falta de material para compartir, sino las muchas cosas que están pasando este año.

La más reciente es la más destacada hasta ahora, por el esfuerzo que fue mucho, y por el gran éxito: el UYOUG OTN Tour Montevideo.

Fueron más de 100 asistentes, siete expositores extranjeros que dieron charlas de excelente nivel, y el privilegio de compartir unos días con mejores personas.

Como ya tratamos de decirlo en las entrevistas a pesar de los nervios, estamos muy agradecidos con todos los que entendieron que este tipo de eventos no es algo de todos los días en nuestro medio, y que deben ser apoyados para que tengan continuidad.
Así que una vez más: gracias a todos los que se arrimaron a pesar del mal tiempo, a las empresas que nos auspiciaron, a OTN y los expositores que vinieron.

Tenemos planes de hacer un evento local antes de fin de año, así que en breve habrán novedades.

En estos días vamos a publicar todas las presentaciones en el sitio.
Mientras, les dejo la mía.




Saludos

sábado, 16 de abril de 2011

Referencia interactiva de 11.2

Desde hace unos meses está disponible para bajar e instalar una referencia interactiva sobre la versión 11.2 de la base de datos Oracle.
El nombre oficial es "Oracle Database 11g: Interactive Quick Reference".

Tiene un diagrama de arquitectura de procesos y memoria, el detalle de los procesos background y de las vistas internas DBA_*.

Hay que estar registrado en OTN (es gratuito), y para linux hay que usar el .swf, que ocupa 2.5Mb.