PDF de programación - Migrando una Base de Datos versión 10gR2 sobre HPUX hacia 11gR2 en AIX mediante Transportable Database

Imágen de pdf Migrando una Base de Datos versión 10gR2 sobre HPUX hacia 11gR2 en AIX mediante Transportable Database

Migrando una Base de Datos versión 10gR2 sobre HPUX hacia 11gR2 en AIX mediante Transportable Databasegráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 21 de Febrero del 2018)
228 visualizaciones desde el 21 de Febrero del 2018
189,1 KB
18 paginas
Creado hace 8a (18/05/2012)
Migrando una Base de Datos versión 10gR2 sobre HPUX hacia 11gR2 en AIX

mediante Transportable Database



Por Francisco Riccio



Introducción

El objetivo de este artículo es presentar un procedimiento validado de cómo realizar una
migración de Base de Datos versión 10.2.0.4 sobre una plataforma HP-UX B.11.31 (ia64
hp server rx3600) hacia una versión 11.2.0.3 en plataforma IBM AIX 7.1 (Power 750).

Transportable Database es la técnica que se utilizará para la migración entre plataformas
distintas, logrando un tiempo de indisponibilidad mucho menor a un export e import
datapump.



Pasos:

Los pasos descritos en este artículo están divididos en dos fases, las cuales son:

Fase 1: Se realizará la migración de la base de datos entre plataformas distintas.
Migraremos una base de datos versión 10.2.0.4 en HP-UX B.11.31 a versión 10.2.0.4 en
IBM AIX 7.1.

El origen se encuentra en filesystems de tipo VXFS y el destino trabajará con ASM. El
servidor destino cuenta con una instancia ASM versión 11.2.0.3. El diskgroup de ASM
disponible para albergar la base de datos debe tener el atributo compatible.rdbms con un
valor menor o igual a 10.2.

Como requisito en esta fase el servidor origen y destino deben trabajar inicialmente con la
misma versión de base de datos.

Fase 2: Una vez migrado la base de datos a la plataforma AIX 7.1 se realizará el upgrade
de base de datos de versión 10.2.0.4 a 11.2.0.3.

Como requisito debemos tener instalado el software de base de datos versión 11.2.0.3.











1

I. Fase 1:

A. Base de Datos Origen:

1. Validación de que ambos sistemas operativos tengan el mismo endian format.

En nuestro caso HP-UX IA (64 bit) y AIX-Based Systems (64-bit) tiene el mismo
valor de endian format por lo cual se puede proceder en la implementación.

2. Debemos validar si tenemos tablas externas, objetos directorios y BFILES en la



base de datos.

set serveroutput on;

declare x boolean;

begin x := dbms_tdb.check_external;

end;

/





2

Podemos apreciar que tenemos una serie de objetos listados, estos serán
trabajados en el punto I.B.12.

3. Colocar la base de datos origen en modo READ ONLY



4. El siguiente script tiene como finalidad validar que la base de datos cumpla con los

requerimientos necesarios para migrar hacia la otra plataforma que deseamos.
Cualquier error que se muestre debe ser corregido.



set serveroutput on

DECLARE

db_ready BOOLEAN;

BEGIN

db_ready := DBMS_TDB.CHECK_DB('AIX-Based Systems (64-bit)',

3



DBMS_TDB.SKIP_NONE);

END;

/







Como la salida del script no devuelve ningún mensaje de error procedemos a
ejecutar los siguientes puntos.

5. Copiar los datafiles que se encuentran en el servidor origen hacia el servidor

destino.

Mediante el comando SCP copiaremos los datafiles del servidor origen al destino.



6. Debemos identificar que datafiles contienen información de UNDO; donde serán
los únicos que le aplicaremos una conversión para que sean compatibles con el
nuevo sistema operativo.

select FILE_NAME from DBA_DATA_FILES

where TABLESPACE_NAME in

4



(select distinct TABLESPACE_NAME

from DBA_ROLLBACK_SEGS);



Cabe mencionar que siempre aparecerán en la lista los datafiles pertenecientes al
tablespace SYSTEM y de todos los tablespaces UNDO.

7. Copiaremos el PFILE de la base de origen al destino.



8. Creamos el script de recreación del control file y luego lo copiaremos al servidor

destino.



Se creará en archivo trace en nuestra carpeta de traces (USER_DUMP_DEST).



Realizamos la copia del archivo trace al otro servidor.











5

B. Base de Datos Destino:

1. Modificar el PFILE con la finalidad que ellos sean válidos en el nuevo ambiente.

Por ejemplo en nuestro caso configuraremos las nuevas ubicaciones de los
datafiles y del Flash Recovery Area en ASM. Asimismo habilitamos OMF.

2. Levantar en modo NOMOUNT con el PFILE copiado.







3. Realizamos la conversión de los archivos identificados en la sección I.5 mediante

el utilitario RMAN.

En esta migración estamos llevando los datafiles identificados hacia ASM ya con la
conversión realizada.

run{

CONVERT DATAFILE '/u01/oradata/ORCL/system01.dbf'

FROM PLATFORM 'HP-UX IA (64-bit)'

6



FORMAT '+DG_SEGA_DATA';

CONVERT DATAFILE '/u01/oradata/ORCL/undotbs01.dbf'

FROM PLATFORM 'HP-UX IA (64-bit)'

FORMAT '+DG_SEGA_DATA';

}



4. Procedemos a copiar el resto de datafiles hacia ASM.

run{

CONVERT DATAFILE '/u01/oradata/ORCL/sysaux01.dbf'

FORMAT '+DG_SEGA_DATA';

CONVERT DATAFILE '/u01/oradata/ORCL/example01.dbf'

FORMAT '+DG_SEGA_DATA';

CONVERT DATAFILE '/u01/oradata/ORCL/users01.dbf'





7

FORMAT '+DG_SEGA_DATA';

}



5. Recreación del control file.

Modificaremos el archivo trace del control file que creamos en el punto I.7.

Para el siguiente caso se modificó la ubicación de cada datafile y redo log hacia
las nuevas ubicaciones en ASM.

CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS
NOARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3





8

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '+DG_SEGA_DATA/ORCL/redo01.log' SIZE 50M,

GROUP 2 '+DG_SEGA_DATA/ORCL/redo02.log' SIZE 50M,

GROUP 3 '+DG_SEGA_DATA/ORCL/redo03.log' SIZE 50M

-- STANDBY LOGFILE

DATAFILE

'+DG_SEGA_DATA/ORCL/system.258.783392853',

'+DG_SEGA_DATA/ORCL/undotbs1.257.257.783392853',

'+DG_SEGA_DATA/ORCL/sysaux.286.286.783393385',

'+DG_SEGA_DATA/ORCL/users.289.783393385',

'+DG_SEGA_DATA/ORCL/example.287.783393385'

CHARACTER SET WE8ISO8859P1

;



9

6. Abrimos la base de datos en modo RESETLOGS.

7. Creamos los tempfiles en ASM.



8. Luego procedemos a bajar la base de datos y la subiremos en modo upgrade.









10

9. Ejecutaremos el siguiente script: $ORACLE_HOME/rdbms/admin/utlirp.sql

Nota: Si la base de datos tiene instalado el componente de Java debemos ejecutar
el siguiente script antes de ejecutar el script utlirp.sql.

SQL> connect / as sysdba

SQL>

begin

update obj$ set status=5 where obj#=(select obj# from obj$,javasnm$

where owner#=0 and type#=29 and short(+)=name and

nvl(longdbcs,name)='oracle/aurora/rdbms/Compiler');

commit;

declare

cursor C1 is select

'DROP JAVA DATA "' || u.name || '"."' || o.name || '"'

from obj$ o,user$ u where o.type#=56 and u.user#=o.owner#;

ddl_statement varchar2(200);

iterations number;

previous_iterations number;

loop_count number;

my_err number;

begin

previous_iterations := 10000000;

loop

-- To make sure we eventually stop, pick a max number of iterations

select count(*) into iterations from obj$ where type#=56;

exit when iterations=0 or iterations >= previous_iterations;

previous_iterations := iterations;



11

loop_count := 0;

open C1;

loop

begin

fetch C1 into ddl_statement;

exit when C1%NOTFOUND or loop_count > iterations;

exception when others then

my_err := sqlcode;

if my_err = -1555 then -- snapshot too old, re-execute fetch query

exit;

else

raise;

end if;

end;

initjvmaux.exec(ddl_statement);

loop_count := loop_count + 1;

end loop;

close C1;

end loop;

end;

commit;

initjvmaux.drp('delete from java$policy$shared$table');

update obj$ set status=1 where obj#=(select obj# from obj$,javasnm$

where owner#=0 and type#=29 and short(+)=name and

nvl(longdbcs,name)='oracle/aurora/rdbms/Compiler');



12

commit;

end;

/



create or replace java system

/



Si deseamos validar que tenemos instalado el componente Java en nuestra base
de datos, ejecutamos el siguiente query el cual devolverá al menos una fila si está
instalado.



10. Ejecutaremos el siguiente script: $ORACLE_HOME/rdbms/admin/ catupgrd.sql.

11. Debemos reiniciar la base de datos en modo READ WRITE y ejecutamos el

siguiente script: $ORACLE_HOME/rdbms/admin/utlrp.sql

12. Actualización de los objetos identificados en el paso I.A.2

Por cada directorio y tabla externa que ha sido actualizado en el punto I.2 debe ser
reemplazado por directorios válidos en el nuevo servidor, asimismo es necesario
copiar el contenido de los directorios listados del servidor origen al destino.

Ejemplo:

Nuestro objeto directorio apunta a un directorio en el servidor origen que se
muestra a continuación:

Debemos crear el directorio en el servidor destino o en caso contrario realizar el
siguiente comando:



13



CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS ‘<nueva_ruta_dir>’;

Luego procedemos a copiar el contenido del directorio original al nuevo si es que
lo requerimos para nuestras aplicaciones.

Esto debemos realizar por cada elemento identificado.

Para identificar las tablas externas, podemos obtener con el siguiente query:

select directory_path||'/'||location Archivos

from dba_directories d, dba_external_locations l

where d.directory_name=l.directory_name;



Los objetos BLOB podemos obtenerlos con el siguiente query:

set serveroutput on;

set feedback off;

declare

type tcursor_ref is REF CURSOR;

v_cursor tcursor_ref;

v_sql varchar2(100);

v_bfile_loc bfile;

v_bfile_dir_name varchar2(30);

v_bfile_filename varchar2(250);

v_bfile_realpath varchar2(4000);

begin

for c in

(select owner,table_name,column_name

from dba_tab_cols where data_type='BFILE')

loop

dbms_output.put_line('External files en la columna: '||c.column_name||

14



', sobre la tabla: '||c.owner||'.'||c.table_name);

v_sql:='select '||c.column_name ||' fro
  • Links de descarga
http://lwp-l.com/pdf8950

Comentarios de: Migrando una Base de Datos versión 10gR2 sobre HPUX hacia 11gR2 en AIX mediante Transportable Database (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad