Tagged: Bases de Datos RSS

  • Juanjinio 10:35 on 29/09/2009 Permalink | Reply
    Tags: Bases de Datos, , Recyclebin   

    Como recuperar una tabla si fue eliminada de la BD sin acudir a un datapump o rman 

    Aca una leve explicación de como se utilice el FLASHBACK para recuperar una tabla que “accidentalmente” se eliminó de la BD para NO tener que acudir a recuperar un respaldo completo de la BD, 1 o 2 TB por una mísera tabla si no tenemos un export o un datapump a mano.-

    Bien creamos las tablas de pruebas (OJO, el ejemplo está realizado bajo el esquema PASO_NOV08 pero se que se puede hacer desde SYSTEM de igual modo)

    SQL> create table TEST2 as select * from AAA_CLIENTES_DIRECCIONES;
    Table created.

    Validamos que la papelera de reciclaje no tenga datos.

    SQL> show recyclebin
    S
    QL>

    Validamos cuantas tablas llamadas TEST hay:

     SQL> 
      1  select owner, segment_name, segment_type, tablespace_name, bytes/1024/1024 mb
      2  from dba_segments
      3  where segment_type=’TABLE’ and owner=’PASO_NOV08′
      4* and segment_name like ‘TEST%’ 

    OWNER                          SEGMENT_NAME         SEGMENT_TYPE       TABLESPACE_NAME              MB
    —————————— ——————– —————— ——————– ———-
    PASO_NOV08                     TEST                 TABLE              PASO_NOV08                    2
    PASO_NOV08                     TEST2                TABLE              PASO_NOV08                  728

     Ahora eliminamos la tabla, con un DROP TABLE.-

     SQL> drop table TEST2;

    Table dropped.

    SQL> drop table test;

    Table dropped.

     Veamos que pasó con las tablas TEST del esquema de prueba…

     SQL> 
      1  select owner, segment_name, segment_type, tablespace_name, bytes/1024/1024 mb
      2* from dba_segments where segment_type=’TABLE’ and owner=’PASO_NOV08′ and segment_name like ‘TEST%’ 

    no rows selected

     NO HAY TABLAS, en donde están? Hay que revisar la papelera de reciclaje de la BD para esto

     SQL> show recyclebin

    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
    —————- —————————— ———— ——————-
    TEST             BIN$dLiZjsuLgKLgQ6wQABSAog==$0 TABLE        2009-09-29:09:43:47
    TEST2            BIN$dLiZjsuKgKLgQ6wQABSAog==$0 TABLE        2009-09-29:09:43:30

     Los objetos ahora se encuentran bajo la papelera de reciclaje.- 

    SQL> select owner, object_name, type, original_name, droptime, can_undrop, can_purge from dba_recyclebin;

     

    OWNER        OBJECT_NAME                    TYPE     ORIGINAL_NAME    DROPTIME            CAN CAN

    ———— —————————— ——– —————- ——————- — —

    PASO_NOV08   BIN$dLiZjsuKgKLgQ6wQABSAog==$0 TABLE    TEST2            2009-09-29:09:43:30 YES YES

    PASO_NOV08   BIN$dLiZjsuLgKLgQ6wQABSAog==$0 TABLE    TEST             2009-09-29:09:43:47 YES YES

     

    Sin embargo, las tablas originales físicamente se encuentran bajo el tablespace de origen… Es decir cuando se eliminan las tablas, estás se cambian de nombre a “BIN$xxx” y lógicamente bajan a estar dentro de la papelera de reciclaje.

     SQL> 
      1  select owner, segment_name, segment_type, tablespace_name, bytes/1024/1024 mb
      2  from dba_segments
      3  where segment_type=’TABLE’ and owner=’PASO_NOV08′
      4* and segment_name in (select object_name from dba_recyclebin) 

    OWNER      SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME              MB
    ———- —————————— —————— ——————– ———-
    PASO_NOV08 BIN$dLiZjsuLgKLgQ6wQABSAog==$0 TABLE              PASO_NOV08                    2
    PASO_NOV08 BIN$dLiZjsuKgKLgQ6wQABSAog==$0 TABLE              PASO_NOV08                  728

    OK, pero como las recuperamos?…

     

    SQL> flashback table TEST to before drop; 

    Flashback complete. 

    SQL> flashback table TEST2 to before drop; 

    Flashback complete. 

    SQL> show recyclebin

     

    Una vez que se aplica el Flashback a la tabla, podemos recuperarla y listar su contenido o seguir trabajando sin problemas.- 

    SQL> select owner, segment_name, segment_type, tablespace_name, bytes/1024/1024 mb
      2  from dba_segments
      3  where segment_type=’TABLE’ and owner=’PASO_NOV08′
      4  and segment_name like ‘TEST%’; 

    OWNER      SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME              MB
    ———- —————————— —————— ——————– ———-
    PASO_NOV08 TEST                           TABLE              PASO_NOV08                    2
    PASO_NOV08 TEST2                          TABLE              PASO_NOV08                  728

    Bien, con lo anterior se puede recuperar la tabla, pero con el mismo nombre y si la tabla se creó de nuevo con datos que le sirven al negocio, pero necesito la tabla que se borró? Podemos recuperarla con otro nombre.

    SQL> flashback table TEST2 to before drop rename to TEST3;

    Flashback complete.

     SQL> select owner, segment_name, segment_type, tablespace_name, bytes/1024/1024 mb
      2  from dba_segments
      3  where segment_type=’TABLE’ and owner=’PASO_NOV08′
      4  and segment_name like ‘TEST%’;

    OWNER      SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME              MB
    ———- —————————— —————— ——————– ———-
    PASO_NOV08 TEST                           TABLE              PASO_NOV08                    2
    PASO_NOV08 TEST3                          TABLE              PASO_NOV08                  728

     Pero que sucede si la tabla que se eliminó con la sentencia DROP realmente se quiere eliminar de la BD?

     NOTA: Al hacer esto la papelera se libera y la tabla realmente se elimina.-

     eviso la papelera, y sigue ahí, que hacer? Purgar la tabla para que se elimine definidamente, como hacer esto? De 2 manera: 

    1.- Al momento de hacer el drop se debe incluir la sentencia PURGE:

     SQL> drop table TEST purge; 

    Table dropped.

     Al revisar la papelera, ésta se encuentra vacía.-

     SQL> show recyclebin

    SQL>

     2.- La tabla se elimina, de manera normal (DROP TABLE XXXXXX), y ahora vaciamos la tabla a purgar de la papelera de reciclaje: 

    SQL> select owner, segment_name, segment_type, tablespace_name, bytes/1024/1024 mb
      2  from dba_segments
      3  where segment_type=’TABLE’ and owner=’PASO_NOV08′
      4  and segment_name like ‘TEST%’; 

    OWNER      SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME              MB
    ———- —————————— —————— ——————– ———-
    PASO_NOV08 TEST3                          TABLE              PASO_NOV08                  728
     

    SQL> drop table TEST3; 

    Table dropped. 

    SQL> show recyclebin

    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
    —————- —————————— ———— ——————-
    TEST3            BIN$dLiZjsuXgKLgQ6wQABSAog==$0 TABLE        2009-09-29:10:09:47 

    SQL> purge table “BIN$dLiZjsuXgKLgQ6wQABSAog==$0″; 

    Table purged. 

    SQL> show recyclebin

     

     Saludos

     
  • Juanjinio 12:37 on 14/09/2009 Permalink | Reply
    Tags: Bases de Datos, ,   

    Larry Ellison Live Webcast: Oracle and Sun Product Announcement 

    Para los que les gusta revisar webcast, aca hay unos que está fresquito y viene desde el mismimo CEO de Oracle Corp. :P

    EXADATA pero ahora entre SUN y ORACLE, se veía venir esta noticia y hace unas semanas lo estaban anunciando en las noticias corporativas de Oracle.

    Pueden revisar el Webcast aca

    Pueden revisar la noticia aca

    Larry Ellison Invites You to a Live Oracle and Sun Product Launch

    Announcing the World’s First OLTP Database Machine with Sun FlashFire Technology

    Attend this exclusive live Webcast to see Oracle CEO Larry Ellison unveil an innovative new product, the world’s first OLTP database machine with Sun FlashFire technology. Don’t miss this opportunity to learn firsthand how the partnership between Oracle and Sun can benefit your business now, and in the future.

    Tuesday, September 15, 2009, 1:00 p.m. PT/4:00 p.m. ET

     
  • Juanjinio 01:15 on 21/04/2009 Permalink | Reply
    Tags: Bases de Datos, , RMAN   

    RMAN NO SE CONECTA POR PRIVILEGIOS INSUFICIENTES 

    En mas de una oportunidad cuado es necesario configurar por primera vez Rman en una instancia, al intentar ingresar a RMAN se cae… Uno revisa los privilegios y no hay problema …

    server orcl $ cat backup_BD_sin_delete.rmn
    connect target rman/rman@orcl;
    run {
    crosscheck archivelog all;
    allocate channel t1 type ‘SBT_TAPE’;
    allocate channel t2 type ‘SBT_TAPE’;
    send ‘NSR_ENV=(NSR_CLIENT=SERVER,
    NSR_SERVER=SERVER_RESPALDO)’ ;
    backup filesperset 2 database plus archivelog;
    sql ‘alter system archive log current’;
    release channel t1;
    release channel t2;
    }

    SERVER ORCL $ rman target rman/rman@ORCL;

    Recovery Manager: Release 10.2.0.4.0 – Production on Sat Apr 18 19:04:25 2009

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

    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-00554: initialization of internal recovery manager package failed
    RMAN-04005: error from target database:
    ORA-01031: insufficient privileges

    Recuerden que para que un respaldo RMAN se ejecute es necesario que la cuenta de BD tenga privilegios de SYSDBA, para esto es necesario

    SERVER ORCL $ export ORACLE_SID=ORCL
    SERVER ORCL $ sqlplus “/as sysdba”

    SQL*Plus: Release 10.2.0.4.0 – Production on Sat Apr 18 19:05:18 2009

    Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

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

    SQL> select * from v$pwfile_users;

    USERNAME                       SYSDB SYSOP
    —————————— —– —–
    SYS                            TRUE  TRUE

    SQL> grant sysdba to RMAN;

    Grant succeeded.

    Revisemos si la cuenta RMAN ahora tiene privilegios de SYSDBA…

    SQL> select * from v$pwfile_users;

    USERNAME                       SYSDB SYSOP
    —————————— —– —–
    SYS                            TRUE  TRUE
    RMAN                           TRUE  FALSE

    SQL> exit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    Finalmente es necesario verificar si es posible realizar la conexión …

    SERVER ORCL $ rman target rman/rman@ORCL;

    Recovery Manager: Release 10.2.0.4.0 – Production on Sat Apr 18 19:08:02 2009

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

    connected to target database: ORCL (DBID=31134823333)

    Excelente … conectividad a RMAN lista !!!

     
  • Juanjinio 13:18 on 20/04/2009 Permalink | Reply
    Tags: Bases de Datos, Eventos Oracle,   

    Seminarios presenciales de Oracle en Santiago 

    En el mes de Abril hay 2 eventos de tecnología Oracle que se realizaran en el Hotel Ritz Carton, (El alcande 15, El Golf, a 1 cuadra del metro El Golf)

    Seminario Business Intelligence – Oracle

    Oracle es su Mejor Socio Estratégico:Posee el Conjunto Más Completo de Aplicaciones para la Inteligencia de Negocios para todas las áreas e integrantes de su organización.

    En tiempos de incertidumbre financiera, la toma de decisiones es crucial y debe estar basada en la información organizacional.

    Empresas de todas las industrias dependen de la información para tomar sus decisiones. A menudo, la información que necesitan es difícil de obtener dado que no reside en sus sistemas departamentales o simplemente está fragmentada en diferentes aplicaciones.

    A pesar de que las funciones de la empresa como ventas, marketing, operaciones, finanzas y recursos humanos están interconectadas, los datos que producen y almacenan no lo están.

    Para que una empresa alcance un desempeño óptimo, la información debe fluir a través de sus fronteras funcionales. Por ejemplo, los profesionales de ventas, marketing y servicios necesitan información de los departamentos de finanzas, recursos humanos y producción para ayudarles a realizar una mejor gestión con sus clientes.

    Controle la información y procesos en forma segura y fiable, adopte decisiones asertivas y ágiles en forma oportuna. Mejore con Oracle sus procesos, rendición de cuentas, transparencia, capacidad de predicción de ingresos y costos, flexibilidad y la escalabilidad.

    * ¿Cómo utilizar alertas e inteligencia anticipadas, informes empresariales, Inteligencia productiva en tiempo real y análisis portátil?

    Oracle Chile lo invita a conocer la respuesta a muchas de sus interrogantes.

    Mas información en:

    http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=91059&src=6646152&src=6646152&Act=17

    Fusion Middleware Seminar – Oracle 2009

    La agenda definitiva será informada a la brevedad.

    Esta actividad esta orientada a:

    • Ejecutivos : CIO´s, CEO´s, CFO’s, CMO’s.
    • Directores y Gerentes de TI / IS. Gerentes de Infraestructura, de Proyecto y Business Planners. Jefes, de Proyectos, Operaciones, Analistas de negocios, Arquitectos, Desarrolladores.

    Profesionales responsables de Unidades funcionales como finanzas, marketing, Diseño, Publicidad y ventas.

    Temas a tratar:

    • Casos de referencia y experiencias de clientes.
    • WebLogic, BPM , SOA, BPM, portales, etc.

    Mas información en:

    http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=91041&src=6646366&src=6646366&Act=17

    Fuente:

    http://events.oracle.com

     
  • Juanjinio 13:01 on 20/04/2009 Permalink | Reply
    Tags: , Bases de Datos,   

    Oracle compra Sun Microsystem 

    Asi como lo leen desde ambos portales web http://www.oracle.com y http://www.sun.com la noticia se anuncia, hoy se dió a la luz la compra de la compañia de sistemas operativos y java por parte del lider de las bases de datos.

    El comunicado indica que se podría realizar la compra por casi U$ 10 dolares por acción, por un total no menor de U$ 7.4 billones.

    De llegar a buen puerto, con esta fusión será posible tener un abanico no menor de tecnologías integradas en un único proveedor. Habrá que tener cuidado con el monopolio comercial. Ahora se podrá tener Storage, servidores, Solaris/Linux, BD, Fusión Middleware, Java y aplicaciones de desarrollo, Fusión applications, Enterprise Manager.-

    Mas información en:

    http://www.oracle.com/sun/index.html

    http://www.sun.com/aboutsun/media/presskits/2009-0420/index.jsp

    Mas detalles:

    http://www.oracle.com/sun/sun-general-presentation.pdf

    Webcast con el comunicado:

    http://phx.corporate-ir.net/playerlink.zhtml?c=67786&s=wm&e=2180970

    Fuentes: http://www.oracle.comhttp://www.sun.com

     
    • Juanjinio 20:21 on 20/04/2009 Permalink

      …. Wow

  • Juanjinio 16:59 on 29/09/2008 Permalink | Reply
    Tags: Bases de Datos,   

    Mover índices a otro tablespace 

    Muchas veces para disminuir la contención de disco por I/O es necesario tener los objetos en tablespaces diferentes ya sea para data y para indices, para esto primero que todo deben existir estos tablespaces (se crean con la sentencia CREATE TABLESPACE).

    Para el ejemplo los tablespaces ya existen

    Tablespaces para Tabla y para Indices

    Para mover objetos que no correspondan al tipo de datos que se almacena en cada tablespace, por ejemplo hay tablas que están almacenadas en tablespaces de índices y viceversa se debe determinar primero que todo identificar estos objetos, y para esto podemos usar el script

    select owner, tablespace_name,segment_type, count(segment_type)
    from dba_segments
    group by tablespace_name,owner,segment_type
    order by 1 asc

    Tabla de objetos
    Tabla de Objetos

    Si nos fijamos bien en la tabla anterior, podemos ver que hay índices que estan en el tablespace “DATOS“, “LABORATO_DATA” y “USERS” en donde se registran 2, 11 y 31 índices respectivamente.

    Ahora bien estos índices encontrados anteriormente son candidatos para que sean movidos a su ubicación correcta, es decir al tablespaces de índices “LABORATO_INDEX

    Para mover estos índices a otro tablespaces se deben identificar, se puede usar la siguiente query:

    select owner, tablespace_name,index_name from dba_indexes
    where owner='LABORATO'
    and tablespace_name in ('DATOS', 'USERS','LABORATO_DATA')
    order by 2,3 asc

    OBS: Aca usé el nombre del Owner y los tablespaces que había determinado anteriormente, aca dependerá de cada instancia

    El resultado de los índices es el siguiente:

    Indices que deben ser movidos

    Una vez que ya tenemos estos indices identificados, procedemos a generar la consulta que los va a mover.

    Para mover un índice de un tablespace a otro se usa la siguiente consulta:

    Alter index NOMBRE_INDICE rebuild tablespace TBS_DESTINO;

    OBS: El movimiento de índices (sin mover tablas) se usa para mover estos objetos de ubicación. Si uno quiere mover tablas de un tablespace a otro, necesariamente deberá mover y recrear los indices asociados a las tablas, ya que sino estos índices quedaran en estado invalido

     
  • Juanjinio 17:47 on 22/09/2008 Permalink | Reply
    Tags: Bases de Datos,   

    Job de limpieza de Log de Transancciones 

    Por lo general el Log de transacciones siempre está creciendo cada cierto tiempo, dependiendo obviamente de si la BD es muy transaccional o no, es por eso que para evitar que el Log de transacciones crezca mucho y se llene el disco es mejor dejar programada una tarea que se encargue de esta labor, para esto se debe realizar lo siguiente:

    1.- Detectar cual es el FileId del Log de Transacciones de la BD que deseamos automatizar. Para el ejemplo la bd se llama “BD_Amin”, para saber cual es el FileId es necesario ejecutar el comando desde el Query Analyzer

    sp_helpdb BD_Amin

    Lo que nos dará la siguiente salida:

    Salida comando sp_helpdb

    Observar que el campo “usage” indica el tipo de archivo que tiene cada base de datos, para nuestro ejemplo el tipo es “Log Only“, de aquí se obtiene el “FileId“, que será “2″

    1.- Luego se debe crear un JOB desde el Sql Server Enterprise. En donde se debe tener en cuenta el “FileId” que se obtuvo en el punto 1.

    El detalle del JOB será:

    -- Shrink
    use BD_Amin
    go
    checkpoint
    go
    dump tran BD_Amin with no_log
    go
    dbcc shrinkfile (2,0) --ldf

    2.- Luego en la pestaña “Programaciones” se podrá ingresar la programación del JOB.-

    3.- Por último revisar que en la pestaña “Notificaciones” se encuentre habilitado el campo “Escribir en el registro de sucesos de aplicación de Windows”, de esta manera podemos saber su historial.-

    Saludos

     
  • Juanjinio 19:37 on 09/09/2008 Permalink | Reply
    Tags: Bases de Datos, ,   

    Privilegios de usuarios de BD 

    Este script te permite saber que permisos tienen los usuarios de BD. Es bastante util porque indica los privilegios “poderosos” que por motivos de seguridad NO deberían ser otorgados

    select grantee, privilege, admin_option
    from sys.dba_sys_privs
    where (privilege like '% ANY %'
    or privilege in ('BECOME USER', 'UNLIMITED TABLESPACE')
    or admin_option = 'YES')
    and grantee not in ('SYS', 'SYSTEM', 'OUTLN', 'AQ_ADMINISTRATOR_ROLE',
    'DBA', 'EXP_FULL_DATABASE', 'IMP_FULL_DATABASE',
    'OEM_MONITOR', 'CTXSYS', 'DBSNMP', 'IFSSYS',
    'IFSSYS$CM', 'MDSYS', 'ORDPLUGINS', 'ORDSYS',
    'TIMESERIES_DBA')
    /

     
  • Juanjinio 19:30 on 09/09/2008 Permalink | Reply
    Tags: , Bases de Datos,   

    Determinar Tablespaces fragmentados 

    Este script permite ver que Tablespaces están fragmentados y el tipo de fragmentación que tiene.

    SELECT dfsc.tablespace_name tablespace_name,
    DECODE (
    dfsc.percent_extents_coalesced,
    100,
    (DECODE (
    GREATEST ((SELECT COUNT (1)
    FROM dba_free_space dfs
    WHERE dfs.tablespace_name = dfsc.tablespace_name), 1),
    1,
    'No Frag',
    'Bubble Frag'
    )
    ),
    'Possible Honey Comb Frag'
    )
    fragmentation_status
    FROM dba_free_space_coalesced dfsc
    ORDER BY dfsc.tablespace_name;

     
  • Juanjinio 19:24 on 09/09/2008 Permalink | Reply
    Tags: Bases de Datos,   

    Crecimiento mensual de una instancia 

    Este script te permite ver el crecimiento de la instancia en Mb desde el último reinicio de la BD

    set pagesize 50000
    select to_char(creation_time, 'RRRR Month') "Mes",
    sum(bytes)/1024/1024 "Crecimiento en MB"
    from sys.v_$datafile
    where creation_time > SYSDATE-365
    group by to_char(creation_time, 'RRRR Month')

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
esc
cancel