Buscar este blog

martes, 26 de julio de 2016

RMAN-05507

RMAN-05507: standby controlfile checkpoint is more recent than duplication point in time


Al realizar rman duplicate en Oracle 9i (9.2.0.8) para construir una Standby, los pasos a seguir son 
en este orden:


1. create standby controlfile (en la base primaria).

2. se mueve el controlfile standby hacia la base standby.

3. consideramos tener nuestro ambiente standby preparado (path, init.ora, +ASM, variables de ambiente, tnsnames, listener, etc).

4. startup nomount pfile.

5. correr script rman: para este ejemplo lo siguiente:









6. $ sh reco2_arcall.sh






ExplicacionAl ejecutar el script rman, nos muestra este error, el problema es 
que el controlfile standby esta en un punto mas reciente que la duplicacion al dataprotector 
(Respaldo en CINTA).

Para solucionar esto, lo que debemos hacer es re hacer nuevamente el control standby, pero esta vez
hacer unos switch de redolog (alter system switch logfile).

miércoles, 13 de julio de 2016

Liberación de memoria

Cuando tenemos una situación en que el servidor tiene mucha "memoria utilizada", sin embargo están prácticamente todas las aplicaciones abajo, y el kernel no ha liberado esta memoria.


  • esto es aplicable a un kernel sobre la versión 2.6.16



  • antes de ejecutar este comando, realice primero un "sync" para asegurar que todos los objetos en caché sean liberados



  • esto es una operación no-destructiva, los objetos "sucios" (dirty) no son liberables (al igual como trabaja ORACLE con sus componentes de memoria)



Por ejemplo:

 Captura_de_pantalla_2012-07-12_a_la_s__10.20.37.png

Simplemente realizamos:

# sync
# echo 3 > /proc/sys/vm/drop_caches
# echo 0 > /proc/sys/vm/drop_caches 

Y el sistema quedará:

 Captura_de_pantalla_2012-07-12_a_la_s__10.20.48.png

Significados

echo 0 > /proc/sys/vm/drop_caches 
Estado normal (no libera nada)
echo 1 > /proc/sys/vm/drop_caches 
Libera los pagecache
echo 2 > /proc/sys/vm/drop_caches 
Libera dentries e inodos
echo 3 > /proc/sys/vm/drop_caches 
Libera pagecache, dentries e inodos (Libera Todo)

Donde:
pagecache: Memoria caché de la paginación.

dentries: (Directory Entries) Representa la relación de forma estructurada que existe entre directorios-archivos.

inodes: Son nodos índice de archivos y directorios que usa el Sistema de Archivos para administrar las actividades posibles de dichos archivos y directorios guardados en disco o memoria. Contiene la metadata de los archivos y directorios: permisos, tamaño, propietario, última fecha de acceso, creación, modificación, etc…






Memoria RAM Linux

En el caso de Linux, el Sistema Operativo utiliza toda la memoria que no está siendo utilizada con el fin de poder acelerar las lecturas en disco, lo cual es conocido como memoria caché, o buffer. Esta memoria caché es liberada apenas se necesite memoria RAM para algún otro programa, por lo que si bien, no es memoria libre, pasa a serlo apenas se le necesite.

Tener la memoria RAM llena no implica que apenas se tenga que ejecutar algún otro programa, se recurra a la memoria Swap (de intercambio), ya que el Sistema Operativo sólo utilizará la Swap cuando efectivamente no exista físicamente más RAM disponible luego de haber eliminado todos los buffers.

No es de extrañarse entonces que cuando realizamos el comando "free", vemos que la RAM está siendo utilizada casi al 100,  para este ejemplo no esta siendo utilizada el total de la memoria:









En esta captura se puede analizar lo siguiente:

La memoria RAM total del servidor es de 8GB, el cual tiene usado 7.5GB y libres 600 MB,

Pero:
  • En buffer 4 MB
  • RAM Libre 26 MB
  • En cache 6980 MB

Lo cual nos indica que hay casi 7119 MB (libre + buffer + cache) de memoria RAM efectivamente disponibles para utilizar.

Existe un procedimiento para hacer una "liberación" de la memoria que está en buffers y caché, la cual te dejo detallada en el siguiente enlace: https://itlinux.zendesk.com/entries/21684691-liberacion-de-memoria.



lunes, 4 de julio de 2016

Oracle Streams 11Gr2

Setup Oracle Streams_SID_22598

Oracle 11gr2:

crear usuarios :

CHOLGUACO (MAPACHE) y ATACAMA71(GINETA)

####################
Step 1:
####################

Create Users & Setup Privileges

CREATE USER SADM IDENTIFIED BY SADM;
GRANT CONNECT, RESOURCE, DBA TO SADM;
GRANT SELECT_CATALOG_ROLE TO SADM;
GRANT UNLIMITED TABLESPACE TO SADM;
EXECUTE DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(GRANTEE => 'SADM');



####################
Step 2:
####################

Create database links at source and target databases

mapache =
  (DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS =
          (COMMUNITY = tcp.world)
          (PROTOCOL = TCP)
          (Host = 10.20.1.31)
          (Port = 1538)
        )
    )
    (CONNECT_DATA = (SID = mapache)
    )
  )


gineta =
(DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = tcp)
        (HOST = atacama) (PORT = 1545))
        (ADDRESS = (PROTOCOL = tcp) ))
        (CONNECT_DATA = (SID = gineta)))


connect SADM/SADM@mapache
CREATE DATABASE LINK TST2 CONNECT TO SADM IDENTIFIED BY SADM  USING 'TST2';

connect SADM/SADM@gineta
CREATE DATABASE LINK TST1  CONNECT TO SADM IDENTIFIED BY SADM  USING 'TST1';



####################
Step 3:
####################

Create the queue at TST1 - Source Database

connect SADM/SADM@mapache
BEGIN
        DBMS_STREAMS_ADM.SET_UP_QUEUE (
        QUEUE_TABLE  => 'STRTEST',
        QUEUE_NAME   => 'C1_STREAM_Q1',
        QUEUE_USER   => 'SADM');
END;
/


Create the queue at TST2 (Target) ##
connect SADM/SADM@gineta
BEGIN
        DBMS_STREAMS_ADM.SET_UP_QUEUE (
        QUEUE_TABLE  => 'A1_STREAM_Q1_QT',
        QUEUE_NAME   => 'A1_STREAM_Q1',
        QUEUE_USER   => 'SADM');
END;
/

####################
Step 4:
####################

Create capture at source


Connect to TST1...
connect SADM/SADM@mapache
BEGIN
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
   schema_name         =>'JBOSS',
   streams_type        =>'CAPTURE',
   streams_name        =>'C1_STREAM',
   queue_name          =>'SADM.C1_STREAM_Q1',
   include_dml         =>TRUE,
   include_ddl         =>TRUE,
   source_database     =>'mapache');
END;
/


select *
  from ALL_OBJECTS
 where OBJECT_NAME = 'STRTEST';

####################
Step 5:
####################

Create apply process at target


connect SADM/SADM@gineta
BEGIN
        DBMS_STREAMS_ADM.ADD_SCHEMA_RULES (
        SCHEMA_NAME             => 'JBOSS',
        STREAMS_TYPE            => 'APPLY',
        STREAMS_NAME            => 'A1_STREAM',
        QUEUE_NAME              => 'SADM.A1_STREAM_Q1',
        INCLUDE_DML             => TRUE,
        INCLUDE_DDL             => TRUE,
        SOURCE_DATABASE         => 'mapache');
END;
/


BEGIN
  DBMS_APPLY_ADM.SET_PARAMETER(
    apply_name => 'A1_STREAM',
    parameter  => 'disable_on_error',
    value      => 'n');
END;
/

####################
Step 6:
####################

Create propagation at source


connect SADM/SADM@mapache
BEGIN
        DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES (
        SCHEMA_NAME             => 'JBOSS',
        STREAMS_NAME            => 'P1_STREAM',
        SOURCE_QUEUE_NAME       => 'SADM.C1_STREAM_Q1',
        DESTINATION_QUEUE_NAME  => 'SADM.A1_STREAM_Q1@gineta',
        INCLUDE_DML             =>  TRUE,
        INCLUDE_DDL             =>  TRUE);
END;
/

####################
Step 7:
####################

Instantiation at GINETA

At source MAPACHE...

SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
expdp SADM/SADM@TST1 SCHEMAS=EDW_APP_OWNER DIRECTORY=expadmin DUMPFILE=EDW_APP_OWNER.dmp logfile=EDW_APP_OWNER.log PARALLEL=4 FLASHBACK_SCN=<scn>


At Target GINETA...

impdp SADM/SADM@TST2 SCHEMAS=EDW_APP_OWNER DIRECTORY=expadmin DUMPFILE=EDW_APP_OWNER.dmp logfile=EDW_APP_OWNER.log PARALLEL=4

Check if schema instantiation is working fine..

select * from DBA_APPLY_INSTANTIATED_SCHEMAS;

connect SADM/SADM@gineta
declare
   v_scn number;
begin
    v_scn := 943015;
    dbms_output.put_line('Scn : ' || v_scn);
    dbms_apply_adm.set_schema_instantiation_scn(
                    source_schema_name => 'JBOSS',
                    source_database_name => 'mapache',
                    instantiation_scn => v_scn,
                    recursive => true);
end;
/

connect SADM/SADM@gineta
declare
source_scn number;
 begin
 source_scn := dbms_flashback.get_system_change_number();
 dbms_apply_adm.set_table_instantiation_scn@gineta
 ( source_object_name => 'jboss.STRTEST',
 source_database_name => 'mapache',
 instantiation_scn => source_scn);
 end;
 /


####################
Step 8:
####################

At target start apply

connect SADM/SADM@gineta
exec dbms_apply_adm.start_apply('A1_STREAM');

####################
Step 9:
####################

At source start capture

connect SADM/SADM@mapache
exec DBMS_CAPTURE_ADM.START_CAPTURE('C1_STREAM');




########################
STOP ORACLE STREAMS
########################


GINETA:


STEP 1. STOP THE APPLY PROCESS:

BEGIN
  DBMS_APPLY_ADM.STOP_APPLY(
    apply_name => 'A1_STREAM');
END;
/


STEP 2. STOP THE CAPTURE PROCESS

BEGIN
  DBMS_CAPTURE_ADM.STOP_CAPTURE(
    capture_name => 'C1_STREAM');
END;
/



MAPACHE:

STEP 3. STOP THE PROPAGATION PROCESS:

BEGIN
  DBMS_PROPAGATION_ADM.STOP_PROPAGATION(
    propagation_name => 'P1_STREAM');
END;
/