Beruflich Dokumente
Kultur Dokumente
Upgrading existing databases to the New Oracle 11gR2 (11.2.0.2.0) version using dbua
Hoy voy a compartirles la experiencia de migrar de version una base en RAC . (Tan sencillo como realizar la migracin de una Single Instance) Lo primero que vamos hacer es instalar los binarios de 11gR2 (11.2.0.2.0) que es la version a la cual estare migrando desde10gR2 (10.2.0.4.0).
Bajamos el software desde una de las paginas de oracle y procedemos a instalarlo en los paths que ya designamos. Finalizado esto vamos a proceder al paso ms importante que lo remarco abajo: Tomamos un Backup, No Olvidarnos! Una vez hecha esta tarea, me voy al $ORACLE_HOME/rdbms/admin de la base 11gR2 (11.2.0.2.0) :
$ cd /u01/app/oracle/product/11.2.0/db_oesm1n/rdbms/admin Ahora vamos a copiar el archivo utlu112i.sql en /tmp o en el $ORACLE_HOME/dbs 10gR2 (10.2.0.4.0) $ cp utlu112i.sql /u01/app/oracle/product/10.2.0/db_oesm1n/dbs Una vez realizada esta tarea vamos a loguearnos con privilegios a nuestra base que migraremos y ejecutaremos el archivo copiado.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, OLAP, Data Mining
SQL> spool upgrade_info.log SQL> @utlu112i.sql Oracle Database 11.2 Pre-Upgrade Information Tool 03-30-2012 12:15:57 Script Version: 11.2.0.2.0 Build: 001 . ********************************************************************** Database: ********************************************************************** --> name: --> version: --> compatible: --> blocksize: --> platform: OT2V1N 10.2.0.4.0 10.2.0.4.0 8192 Linux x86 64-bit
--> timezone file: V4 . ********************************************************************** Tablespaces: [make adjustments in the current environment] ********************************************************************** --> SYSTEM tablespace is adequate for the upgrade. .... minimum required size: 3312 MB --> UNDOTBS1 tablespace is adequate for the upgrade.
.... minimum required size: 142 MB --> SYSAUX tablespace is adequate for the upgrade. .... minimum required size: 66727 MB --> TEMP tablespace is adequate for the upgrade. .... minimum required size: 61 MB . ********************************************************************** Flashback: OFF ********************************************************************** ********************************************************************** Update Parameters: [Update Oracle Database 11.2 init.ora or spfile] Note: Pre-upgrade tool was run on a lower version 64-bit database. ********************************************************************** --> If Target Oracle is 32-Bit, refer here for Update Parameters: -- No update parameter changes are required. .
--> If Target Oracle is 64-Bit, refer here for Update Parameters: -- No update parameter changes are required. . ********************************************************************** Renamed Parameters: [Update Oracle Database 11.2 init.ora or spfile] ********************************************************************** -- No renamed parameters found. No changes are required. . **********************************************************************
Obsolete/Deprecated Parameters: [Update Oracle Database 11.2 init.ora or spfile] ********************************************************************** --> background_dump_dest "diagnostic_dest" --> user_dump_dest "diagnostic_dest" . 11.1 DEPRECATED replaced by 11.1 DEPRECATED replaced by
********************************************************************** Components: [The following database components will be upgraded or installed] ********************************************************************** --> Oracle Catalog Views [upgrade] VALID VALID VALID
[upgrade]
--> JServer JAVA Virtual Machine [upgrade] --> Oracle XDK for Java [upgrade]
--> Real Application Clusters --> Oracle Workspace Manager --> OLAP Analytic Workspace --> OLAP Catalog --> EM Repository --> Oracle Text --> Oracle XML Database --> Oracle Java Packages --> Oracle interMedia --> Spatial --> Data Mining --> Expression Filter
VALID
VALID VALID
[upgrade]
[upgrade]
VALID VALID
[upgrade]
********************************************************************** Miscellaneous Warnings ********************************************************************** WARNING: --> The "cluster_database" parameter is currently "TRUE" .... and must be set to "FALSE" prior to running a manual upgrade. WARNING: --> Database is using a timezone file older than version 14. .... After the release migration, it is recommended that DBMS_DST package .... be used to upgrade the 10.2.0.4.0 database timezone version .... to the latest version which comes with the new release. WARNING: --> Database contains INVALID objects prior to upgrade. .... The list of invalid SYS/SYSTEM objects was written to .... registry$sys_inv_objs. .... The list of non-SYS/SYSTEM objects was written to .... registry$nonsys_inv_objs. .... Use utluiobj.sql after the upgrade to identify any new invalid .... objects due to the upgrade. .... USER PUBLIC has 4 INVALID objects. .... USER ROS has 1 INVALID objects. WARNING: --> EM Database Control Repository exists in the database. .... Direct downgrade of EM Database Control is not supported. Refer to the .... Upgrade Guide for instructions to save the EM data prior to upgrade. WARNING: --> Your recycle bin contains 34 object(s). .... It is REQUIRED that the recycle bin is empty prior to upgrading
The command:
.... must be executed immediately prior to executing your upgrade. . ********************************************************************** Recommendations ********************************************************************** Oracle recommends gathering dictionary statistics prior to upgrading the database. To gather dictionary statistics execute the following command while connected as SYSDBA:
EXECUTE dbms_stats.gather_dictionary_stats;
To view existing non-default events execute the following commands while connected AS SYSDBA: Events: SELECT (translate(value,chr(13)||chr(10),' ')) FROM sys.v$parameter2 WHERE UPPER(name) ='EVENT' AND isdefault='FALSE'
Trace Events: SELECT (translate(value,chr(13)||chr(10),' ')) from sys.v$parameter2 WHERE UPPER(name) = '_TRACE_EVENTS' AND isdefault='FALSE'
********************************************************************** SQL> SQL> spool off SQL> quit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bit Production With the Partitioning, Real Application Clusters, OLAP, Data Mining and Real Application Testing options $ Como podemos observar la salida del spool nos deja un reporte de algunas tareas que deberamos ejecutar o controlar o tener en cuenta en caso de comenzar con la migracin de la base. De esa Salida yo comenc por compilar los objetos descompilados. En el caso de no hacerlo puede aparecernos este Warning donde se nos advierte que comenzara el upgrade con objetos sin compilar.
Entocences me logueo como admin. $ sqlplus / as sysdba Ejecuto un metascript que tengo armado y sobre el cual hay un articulo en el BLOG.
SQL> SELECT 'EXECUTE DBMS_UTILITY.COMPILE_SCHEMA(''' || owner || ''',FALSE) ;' FROM dba_objects WHERE status = 'INVALID'; 2 3
'EXECUTEDBMS_UTILITY.COMPILE_SCHEMA('''||OWNER||''',FALSE);' ----------------------------------------------------------------------------EXECUTE DBMS_UTILITY.COMPILE_SCHEMA('PUBLIC',FALSE) ; EXECUTE DBMS_UTILITY.COMPILE_SCHEMA('PUBLIC',FALSE) ; EXECUTE DBMS_UTILITY.COMPILE_SCHEMA('PUBLIC',FALSE) ; EXECUTE DBMS_UTILITY.COMPILE_SCHEMA('PUBLIC',FALSE) ; EXECUTE DBMS_UTILITY.COMPILE_SCHEMA('ROS',FALSE) ;
PL/SQL procedure successfully completed. Tenemos que controlar la version de TIME ZONE de nuestra Base. En el caso que el resultado del query sea menor que 4 entonces debemos aplicar el patch time zone patch 5632264 de forma manual. SQL> select * from v$timezone_file;
FILENAME
VERSION
------------ ---------timezlrg.dat 4
Ahora me voy a ver cuantos objetos tengo en la RECYCLEBIN SQL> PURGE DBA_RECYCLEBIN ;
DBA Recyclebin purged. Ejecutamos las estadsticas. SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; PL/SQL procedure successfully completed. Chequeo los tablespaces y sus espacios que tengo antes de comenzar la tarea. SQL> SELECT tablespace_name, round(sum(BYTES/1024/1024),0) FROM dba_data_files b WHERE tablespace_name NOT LIKE 'TEMP%' GROUP BY b.tablespace_name; De la salida general que no voy a mostrar, solo me interesa el tamao del tablespace SYSTEM TABLESPACE_NAME ROUND(SUM(BYTES/1024/1024),0)
20 rows selected.
SQL> Consulto cual es el datafile asociado a ese tablespace , por que debo agrandarlo segun la recomendacin. SQL> set line 150 SQL> col name format a80 SQL> set pages 200 SQL> select FILE#, NAME, BYTES/1024/1024 , TS# from v$datafile where NAME LIKE '%system%'; FILE# NAME ---------------------------------------------------------------------------------------- --------------- ---------BYTES/1024/1024 TS#
1 +DATA/ot2v1n/datafile/system.488.779216239 3070 0
1 row selected.
Database altered.
SQL> Ahora voy a desactivar el modo ARCHIVE de la base & el FLASHBACK. Entonces vamos a bajar el RAC y solo voy a montar una de la instancias. SQL> alter database mount ;
Database altered.
FLASHBACK_ON -----------------NO
Database altered.
Database altered.
SQL> quit Otro punto a tener en cuenta es la deregistracion del servicio de RAC antiguo, de lo contrario lo detectara al querer crear uno nuevo y nos arrojara el siguiente mensaje: CRS-2671 : Error processing attributte CARDINALITY Value 0
Ahora, por una de las recomendaciones del advisor, me dice que desactive el cluster, pero esto arrojara un error en la migracin. As que luego de desactivarlo y ver que el DBUA no puede avanzar, volv al punto original y funcion.
Cluster Inactivo: No me funciona el DBUA y me obliga a terminar el proceso de migracin sin haber tocado la base.
NAME
TYPE
VALUE
------------------------------------ ---------------------------------------cluster_database cluster_database_instances cluster_interconnects Este es error que aparece en el Instalador. boolean FALSE 1
integer string
NAME
TYPE
VALUE
------------------------------------ ---------------------------------------cluster_database cluster_database_instances cluster_interconnects SQL> quit Finalizada la implementacin de Cambios, en otra Terminal me logueo y seteo las variables de 11g y voy a proceder a crear el listener que utilizara el nuevo ambiente en 11g. $ . ot2v1n.sh.11g$ echo $ORACLE_HOME /u01/app/oracle/product/11.2.0/db_oesm1n $ echo $ORACLE_SID OT2V1N1$ cd $ORACLE_HOME $ cd bin/ $ ./netcaOracle Net Services Configuration: Configuring Listener:OT2V1N sdat2101lx... sdat2103lx... Listener configuration complete. Oracle Net Listener Startup: Listener started successfully. Oracle Net Services configuration successful. The exit code is 0 $ Bien, una vez que pasamos estos pasos procedemos a migrar. boolean TRUE 2
integer string
Primer Paso Tener un Backup, No Olvidarnos ! Ahora vamos a Ejecutar Con las variables de ambiente de 11GR2. Verificar que estn bien seteadas el ORACLE_HOME & ORACLE_BASE. $ORACLE_HOME/bin/dbua Ahora voy a poner las capturas de pantalla de lo que se hizo. 1) Comienza el Instalador.
3) Ac tenemos la posibilidad de elegir cantidad de procesos paralelos para poder tener una migracin ptima. Yo tena una base de 500GB y use los cuatro ncleos de mi CPU.
5) Yo elijo esta opcin por que tenamos grid control y quiero que se configure con agente del host..
10) Como paso final nos muestra un HTML con los resultados de la migracin.
Ya con este ltimo paso se termino nuestra migracin. Despus de finalizada la migracin, modifico el parmetro compatible. Esto se hace para que active las nuevas features de Oracle 11gR2. Veamos como esta ahora: SQL> sho parameter compatible
NAME
TYPE
VALUE
------------------------------------ ---------------------------------------compatible Los pasos serian: SQL> alter system set compatible='11.2.0' scope=spfile sid='*'; Ahora subo y bajo la base y revisamos nuevamente para ver si introducimos el cambio correctamente. SQL> sho parameter compatible string 10.2.0.4.0
NAME
TYPE
VALUE
No olvidarnos de activar el FLASHBACK & ARCHIVELOG MODE. Ahora subo el servicio con comandos srvctl & ya podemos decir que finalizamos exitosamente nuestra tarea.
Pero como inquieto que soy, verifico el status de los componentes de la base: SQL> set line 150 SQL> col COMP_NAME format a70 SQL> select comp_name,version, status from dba_registry;
--------------------------------------------------------------------------------------------------- ----------Oracle Enterprise Manager VALID OLAP Catalog 11.2.0.2.0 Spatial VALID Oracle Multimedia 11.2.0.2.0 Oracle XML Database 11.2.0.2.0 Oracle Text 11.2.0.2.0 Oracle Data Mining 11.2.0.2.0 Oracle Expression Filter VALID Oracle Rule Manager 11.2.0.2.0 Oracle Workspace Manager VALID Oracle Database Catalog Views 11.2.0.2.0 VALID VALID 11.2.0.2.0 VALID 11.2.0.2.0 VALID VALID VALID VALID 11.2.0.2.0 11.2.0.2.0
JServer JAVA Virtual Machine 11.2.0.2.0 Oracle XDK 11.2.0.2.0 Oracle Database Java Packages 11.2.0.2.0 OLAP Analytic Workspace VALID Oracle OLAP API VALID Oracle Real Application Clusters VALID 18 rows selected. 11.2.0.2.0 11.2.0.2.0 VALID 11.2.0.2.0 VALID VALID
SQL> Copio los siguientes componentes del ORACLE_HOME 10gR2 en el ORACLE_HOME 11gR2.
1. 2. 3. 4.
tnsnames.ora listener.ora (Merge) sqlnet.ora init$ORACLE_SID.ora (En RAC puede apuntar al ASM.)
Y finalmente tomo un backup inicial de la base de Datos ya migrada. Ahora puedo finalmente decir que concluyo la tarea exitosamente.