jueves, 8 de septiembre de 2011

Migracion 9i - 10g (10.2.0.5)

Saludos a los que pasen por aquí, he dejado el blog abandonado buen tiempo, pero ahora postearé mas seguido, hace unas semanas realice una migración de 9i (IBM AIX) a 10g (HP-UX 11).

Hay varias opciones a elegir sobre como realizar la migración, en este caso por tema de tiempo se utilizó export e import, fue por partes, un export por cada esquema y en el caso de los esquemas muy pesados, por tablas. Un consejo al hacer esto es realizar el export con solo data, sin contraints, estadisticas, triggers e índices, esto para agilizar la carga.

exp usuario/clave owner=esquema file=ruta/mi_dump.dmp log=mi_explog.log consistent=y constraints=n indexes=n triggers=n statistics=none

A partir de la versión 10g se puede usar datapump(expdp) las opciones de este comando son casi las mismas.

Otro punto importante es identificar las tablas particionadas, lob y vistas materializadas para luego crearlas en el nuevo ambiente antes de realizar el import, de lo contrario habran mensaje de error.

imp usuario/clave file=ruta/mi_dump.dmp log=mi_implog.log buffer=100000 full=y indexes=N constraints=n ignore=y commit=Y

Después de haber realizado la carga total de los datos, se crean los constraints, índices, triggers, procedures, entre otros. Teniendo en cuenta que la data no debe haber variado, se pueden crear los constraints con el parámetro novalidate para que no demoren.



PROBLEMAS DE RENDIMIENTO




Luego de haber migrado la bd por completo, se presentaron problemas de rendimiento con los procesos masivos que se ejecutan diariamente en la compañía, el nuevo servidor con 32gb de RAM tenia solo 100MB libres, oracle estaba configurado con 10GB y lo demás era manejo de SO. Se monitoreo la BD por 2 semanas buscando el origen del problema de rendimiento, al final se detectó que el filecache del sistema operativo estaba consumiendo 15GB de la RAM, para solucionar esto se cambio el valor de 2 variables de SO(filecache_min - filecache_max) con 5% y 8% respectivamente. Además, se elimino un índice de la tabla en donde se detectó habían demoras en consultas e inserciones. Con esto se pudo solucionar el inconveniente, se tuvo en cuenta que en los cambios de versión se presentan cambios en el optimizador, un caso un poco extraño, pero bueno para aprender.




Saludos




TOM


domingo, 4 de abril de 2010

Crear Volumenes Logicos en Linux( fdisk - pvcreate - vgcreate - lvcreate )

Tengo bien desatendido el blog por temas personales, pero esta vez colgare algo pequeño aunque bastante útil, es la creación de volúmenes lógicos. Son bastante útiles para almacenar archivos que están en constante crecimiento, ya que puedes agrandar el espacio de los volúmenes según sea necesario sin tener que mover los archivos a otro destino.

Paso 1:



-Se agregan los discos físicos al equipo, en este caso estoy haciendo pruebas con vmware server 7, le agregue 2 discos de 10 gb, aparte de los que uso para el sistema operativo(SO, TMP, SWAP)
-


Paso 2:

-Creamos una partición primaria de cada auno de los discos que hemos ingresado para el volume group, en mi caso tengo el disco sdd y sde, lo haremos con el comando fdisk



paso 3

-Preparamos las particiones a ingresar al volume group con el comando pvcreate


paso 4

-creamos el volume group con el comando "vgcreate" con nombre vgOracle


paso 5

-creamos los volúmenes lógicos con el comando "lvcreate", los nombre lvSoft y lvData


paso 6

-Formateamos los volúmenes lógicos lvSoft y lvData con formato ext3


paso 7

-Creamos las carpetas oracle y oracle_data que apuntarán a los volúmenes lógicos


paso 8

-Modificamos el archivo de particiones /dev/fstab con el comando vi y agrego las 2 ultimas lineas que muestro en la imagen.



por último reiniciamos :).

domingo, 25 de octubre de 2009

Crear una BD en Oracle 7

Saludos a todos, despues de un par de semanas me he podido dar el tiempo para hacer mi primera publicación(aparte de la bienvenida). Les dejo aqui un ejercicio que hice sobre como instalar un oracle 7 y crear una bd manual, espero les sirva. (Pondre los pantallazos luego)


INSTALACION DE WINDOWS NT

El sistema operativo usado es Windows NT Workstation 4.0, como en todos los windows la instalación es super sencilla, aqui les dejo el link de donde pueden conseguirlo y otro de una pequeña guia sobre como instalarlo.


Windows NT 4.0
http://www.taringa.net/posts/downloads/3029527/Windows-NT-4_0-Workstation-Espa%C3%B1ol-Booteable-SP6.html

Guia de instalación
http://moncayo.unizar.es/ccuz/proced.nsf/0/a1a16cc681bb00d3c1256906002f746c?OpenDocument

Una explicacion sencilla de como hacerlo es:

1- Bootean desde un disco de inicio.
2- Con partition Magic u otro software crean particiones en fat16 o ntfs(si lo hacen en fat32 les va a mandar error).
3- en la pantalla DOS se ubican sobre el disco que contiene WINNT
4- ejecutan d:\i386\winnt /x /b /s:d:\i386
5- despues de eso iniciara la instalacion, despues de la copia de archivos mandara a reiniciar, en mi caso tuve un problema aqui, despues de reiniciar no reconocia el boot.ini, es decir no continuaba la instalcion del sistema, decia que no habia SO, hice un jugarreta medio sonsa, pero fue la unica solucion que se me ocurrio en el momento, no he pensado en otra. Lo arregle isntalando 1ro un windows 98 en una particion fat32 y en otra NTFS instale el windows NT, despues de eso levanto normal.


INSTALACION DE ORACLE 7


Si no tienen el instalador de Oracle 7, comenten pidiendolo y les paso el link.

En este Caso es bastante sencilla, inicia el instalador y le dicen que componentes van a instalar.
Por defecto te crea una bd llamada ORCL.

1- Se selecciona el lenguaje para la instalación



2- Se ingresa la ruta del Oracle Home


3- Se selecciona el tipo de instalacion, en este caso server


4-Se muestra el progeso de la instalación



CREAR BD MANUAL


1- Se crea el pfile, se puede tomar como base el de la bd creada por defecto ORCL, para el ejemplo, la nueva bd se llamará PROD.




2- Se crea el servicio para windows, con el siguiente codigo

ORADIM73 -NEW -SID PROD -INTPWD oracle -STARTMODE AUTO -PFILE D:\ORANT\DATABASE\INITPROD.ORA

3- Para ver el estado de los servicio ejecutar "net start" en la consola cmd.

4- Si el servicio no se encuentra iniciado, ejecutar el comando "net start OracleServiceProd"

5- Se establecen las variables de ambiente

set ORACLE_SID=PROD
set LOCAL=2:PROD

6- En la consola de cmd ejecutar "svrmgr23"

7- En la linea de comando de svrmgr23, ejecuta el siguiente codigo:

STARTUP NOMOUNT PFILE=D:\ORANT\DATABASE\Initprod.ORA

8- Luego que la bd se encuentra en estado nomount, ejecutar el script de creadion de base de datos:

SPOOL CREATE_PROD_DB.LOG
@create_db.sql

Contenido del archivo:



CREATE DATABASE PROD_DB
LOGFILE 'D:\ORANT\DATABASE\LOG1PROD.ORA' SIZE 1M,
'D:\ORANT\DATABASE\LOG2PROD.ORA' SIZE 1M,
'D:\ORANT\DATABASE\LOG3PROD.ORA' SIZE 1M,
'D:\ORANT\DATABASE\LOG4PROD.ORA' SIZE 1M
MAXDATAFILES 100
DATAFILE 'D:\ORANT\DATABASE\SYS1PROD.ORA' SIZE 20M
NOARCHIVELOG
CHARACTER SET WE8ISO8859P1;




9- Si hay algun error de script, corregir. Utilizar para ver errores de SO, n es el numero de error
HOST NET HELPMSG n

10- Para crear los tablespaces adicionales y rollback segments, ejecutar el script
create_ad_db.sql

Contenido del archivo:

-- Create additioanal tablespaces ...

-- USER_DATA: Create user sets this as the default tablespace
-- TEMPORARY_DATA: Create user sets this as the temporary tablespace
-- ROLLBACK_DATA: For rollback segments

create tablespace user_data
datafile 'D:\ORANT\DATABASE\usr1prod.ora' size 3M reuse autoextend on
next 5M maxsize 150M;
create tablespace rollback_data
datafile 'D:\ORANT\DATABASE\rbs1prod.ora' size 5M reuse autoextend on
next 5M maxsize 150M;
create tablespace temporary_data
datafile 'D:\ORANT\DATABASE\tmp1prod.ora' size 2M reuse autoextend on
next 5M maxsize 150M;
alter rollback segment rb_temp online;

-- Change the SYSTEM users' password, default tablespace and
-- temporary tablespace.

alter user system temporary tablespace temporary_data;
alter user system default tablespace user_data;

-- Create 16 rollback segments. Allows 16 concurrent users with open
-- transactions updating the database. This should be enough.

create public rollback segment rb1 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb2 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb3 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb4 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb5 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb6 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb7 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb8 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb9 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb10 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb11 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb12 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb13 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb14 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb15 storage(initial 50K next 50K)
tablespace rollback_data;
create public rollback segment rb16 storage(initial 50K next 50K)
tablespace rollback_data;

11- Para crear catalogo ejecutar catalog.sql y catproc.sql, ubicados en oracle_home/rdbms73/admin

12- Ejecutar spool off y revisar el archivo para ver errores.

13- Cambiar clave a sys y a system

14- Actualizar el ORACLE_SID en el registro(regedit)
-ejecutar desde linea de comando regedt32
-\\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
-cambiar el ORACLE_SID por PROD




martes, 6 de octubre de 2009

Mi Primer Post

Hola a todos como dice el título este es mi primer post, acbao de abrir este blog, el tema de este sera full productos ORACLE y algo de software libre como linux, tengo algunos conocimientos al respecto, mas no soy un experto, por ahora solo tengo la certificación OCA 11g, pronto la OCP y en un futuro cercano el OCE RAC 10g. En la medida de lo posible ire ingresando post con situaciones que me ocurran o algun ejercicio que realice para compartir conocimientos, todas las preguntas y comentarios son bienvenidos.

Saludos y bienvenidos :)



TOM