Newsletter- Noviembre 2011 Oracle Grid Infrastructure Contenido Página: 1 Oracle Grid Infrastructure 3 Mejores Prácticas Cursores 7 Oracle Hyperion Planning 5a. Ave. Editores 5-55 Zona14,Edificio Generales Euro Plaza Torre II, Nivel 12 Daniel Cacía Por: Augusto López alopez@datum.com.gt Pagina 1/10 Gerber Bautista Debbie Moran Francisco Barrundia Autores Contribuyentes Augusto López Johnatan Franco Daniel Cermeño A partir de Oracle Database 11g Release 2, los productos Oracle Clusterware y Automatic Storage Management se han unido para formar Oracle Grid Infrastructure. Una de las razones para este cambio es poder almacenar los CRS Files (OCR y Voting disk) en diskgroups de ASM. Con esto se deja de soportar el almacenar dichos archivos como raw devices siendo válidos únicamente ASM y Cluster Filesystem. Single Instance Database Para poder crear una base de datos 11.2 en ASM es obligatorio instalar previamente Grid Infrastructure. El software debe instalarse en un ORACLE_HOME distinto al de base de datos. El proceso de instalación incluye la creación de la instancia de ASM y un diskgroup. Esto implica que los discos a usar para ASM deben estar listos antes de hacer la instalación de Grid Infrastructure. Email:info@datum.com.gt Página 1
Real Application Clusters (RAC) Para poder crear una cluster database 11.2 es necesario instalar previamente el Grid Infrastructure. El software debe instalarse en un ORACLE_HOME distinto al de RAC. El proceso de instalación incluye: 1. La creación del cluster (instalación de Clusterware), 2. La creación de las instancias de ASM a través de los nodos del cluster, 3. La creación de un diskgroup de ASM visible a todos los nodos del cluster y 4. La creación de los CRS Files (OCR y Voting disk) dentro de este diskgroup. Una nueva característica de Grid Infrastructure es el SCAN (Simple Client Access Name). Este permite referenciar al cluster con un sólo nombre en lugar de referenciar a cada uno de los nodos a través de los nombres virtuales (nodo1-vip, nodo2-vip, etc.). Separación de roles Ya sea que se use para Single Instance o para Cluster Database, se recomienda que Grid Infrastructure sea instalado con un usuario propio, distinto al usuario propietario del software de base de datos. El objetivo de esto es separar las tareas de administración del storage (y cluster) de las tareas de administración de la base de datos. El usuario recomendado para instalar Grid Infrastructure tiene las siguientes características: nombre = grid grupo primario = oinstall grupos secundarios = asmadmin, asmdba, asmoper. El grupo asmadmin permite realizar tareas como montaje y desmontaje de diskgroups. Los grupos asmdba y asmoper permiten acceder a los archivos dentro de los diskgroups. Esto implica que el usuario dueño del software de base de datos (por lo general de nombre oracle) debe tener asignados los grupos asmdba y asmoper. Versiones previas de base de datos Los diskgroups de ASM creados con Grid Infrastructure son capaces de contener bases de datos de versiones 10.1, 10.2, 11.1 y 11.2. Por ejemplo, se puede tener un cluster con versión 11.2.0.1.0 de Grid Infrastructure, y dentro de él tener una cluster database versión 10.2.0.4 y otra con versión 11.2.0.1.0. Lo mismo es válido para Single Instance Database. Conclusiones Grid Infrastructure es la siguiente generación de ASM y Oracle Clusterware, esta vez combinados para ofrecer una solución integral. Ya sea que cree una base de datos nueva en versión 11.2 o que se migre desde una versión previa, si la base de datos se almacenará en ASM, el uso de Grid Infrastructure es obligatorio. Página 2
Mejores Prácticas En El Uso De Cursores Por: Ing. Johnatan Franco jfranco@datum.com.gt Cuando deseamos utilizar un mecanismo para acceder a los resultados de una clausula select registro a registro, podemos hacer uso de cursores. Un cursor, hablando desde el punto de vista interno a la Base de Datos, es un segmento de memoria utilizada para realizar operaciones con los registros devueltos tras utilizar el comando select. Ya que SQL no fue creado como un lenguaje orientado a nivel de registros, sino orientado a nivel de conjuntos, los cursores llegan a tener un efecto negativo en cuanto al rendimiento. Ya que: Usan bloqueos a nivel de página y/o tabla. Producen un sobre costo a nivel de líneas de procesamiento. Requieren mayor recurso de red. Recorrer registros del cursor: Oracle provee tres posibles formas para recorrer los registros del cursor, utilizando: 1. Un bucle con cursores explícitos: Open, Fetch y Close. 2. Cursores For-Loop. 3. Bulk Collect y luego recorrer la colección. Ahora nos preguntamos Qué método tomaríamos para optimizar el rendimiento de nuestra aplicación? Sin lugar a duda deberíamos de tomar el método: Bulk Collect, ya que nos permitirá reducir el número de accesos a disco. Además podemos equilibrar la utilización de la memoria contra las mejores de rendimiento mediante el uso de la clausula Limit, permitiendo leer los datos de múltiples filas en una o más colecciones. Pero todo tiene sus ventajas y desventajas, la desventaja de este método es que el consumo de memoria será mayor. Cerrando cursores: Al trabajar con cursores de manera explícita debemos de realizar cuatros tareas fundamentales: declarar el cursor, abrirlo (open), leer los datos (fetch) y cerrarlos (close). Esta última tarea, nunca se nos debe de pasar por alto, ya que con ella liberamos recursos tomados por el cursor. Existen formas para verificar si nuestro cursor aun está abierto y para ello utilizamos el atributo %ISOPEN, devolviéndonos un valor booleano según el estado en que se encuentre, devolverá un valor verdadero si se encuentra abierto, de lo contrario nos devolverá falso. A continuación mostraremos un ejemplo en código pl/sql de cómo utilizar el atributo %isopen, y de cómo deben de cerrarse los cursores con la clausula close como mejores prácticas en el uso de cursores Página 3
declare cursor micursor is select * from empleado where id<100 order by 1; begin. If micursor%isopen then close micursor; end if; end; / Utilizando Oracle Bulk Collect Cargaremos datos a nuestra tabla empleado código pl/sql utilizando la clausula Bulk Collect Tip técnico del día: CREATE OR REPLACE PROCEDURE CONSULTA_BULK_COLLECT IS TYPE spropietario IS TABLE OF VARCHAR2(30); TYPE snombre IS TABLE OF VARCHAR2(30); TYPE stipo IS TABLE OF VARCHAR2(19); l_spropietario spropietario; l_snombre snombre; l_stipo stipo; BEGIN dbms_output.put_line('ant es del Bulk Collect'); SELECT propietario, nombre_objeto, tipo_objeto BULK COLLECT INTO l_spropietario, l_snombre, l_stipo FROM all_objects; dbms_output.put_line('des pues del Bulk Collect'); Auditoria dentro de la base de datos: Para Habilitar la auditoria: AUDIT audit_option [ON schema.object_name] [BY username] [BY { SESSION ACCESS }] [WHENEVER { SUCCESSFUL NOT SUCCESSFUL }] Ejemplo: AUDIT SELECT, INSERT ON SCOTT.EMP; La tabla SYS.AUD$ contiene toda la información de auditoría para visualizarla: SELECT * FROM SYS.AUD$; Por Lic. Francisco Barrundia fbarrundia@datum.com.gt FORALL indx IN l_snombre.first..l_snombre.last INSERT INTO temp values (l_spropietario(indx), l_snombre(indx), l_stipo(indx)); dbms_output.put_line('despues de hacer todo' systimestamp); COMMIT; END; / Página 4
Oracle Hyperion Planning Por: Ing. Daniel Cermeño dcermeno@datum.com.gt Una empresa competitiva es aquella que logra sus objetivos en el menor tiempo posible, invirtiendo únicamente los recursos precisos para completarlos. No obstante lograr este fin no es una tarea sencilla si en la organización no se promueve la cultura de planificación. La planificación de las operaciones y las finanzas ofrece a la empresa la oportunidad de tener el control continuo sobre sus objetivos y sus recursos. Una empresa que planifica tiene mayor capacidad de respuesta y su funcionamiento es mucho más coordinado. Cada colaborador sabe qué hacer y cuando hacerlo porque existe un plan general visible a todos los interesados en el proceso de negocios. Aunque la planeación detallada y rigurosa ofrece grandes beneficios, la complejidad que en ocasiones conlleva esta actividad es posiblemente la principal razón por la que muchas organizaciones se ven desalentadas al implantar este tipo de prácticas. Oracle Hyperion Planning es una aplicación específicamente diseñada para hacer fácil el proceso de planificación operativa y financiera en todos los niveles de la organización. Oracle Hyperion Planning le da a su organización la capacidad de trazar un plan realista y preciso de sus operaciones y sus finanzas, invirtiendo el mínimo de tiempo y recursos en el proceso de planificación. Página 5
Por lo general las organizaciones realizan su proceso de planeación en hojas de cálculo dispersas. La poca integración de la información, la duplicación del trabajo y la falta de estándares en cuanto al manejo de los datos, provocan que el ciclo de planificación se alargue, que las previsiones sean imprecisas y convierte la planificación en un proceso ineficaz y de poca fiabilidad. Oracle Hyperion Planning en cambio, ofrece un entorno centralizado y totalmente integrado para la planificación y realización de presupuestos. Dicho entorno puede ser accedido desde un explorador web, o desde herramientas ofimáticas como Excel. Oracle Hyperion Planning provee una vista en profundidad de las operaciones del negocio y su impacto financiero asociado. Los modelos integrados de planeación operativa y financiera mejoran visiblemente la predictibilidad del negocio. Con Oracle Hyperion Planning los ciclos de planificación se sincronizan, es decir, puede ver en un solo sitio las previsiones de ingreso por ventas, la planificación de las campañas de mercadeo, e incluso los cotos y gestión de la mano de obra. Toda la planificación empresarial, integrada y sincronizada. Al elegir Oracle Hyperion Planning puede sacar provecho de las ventajas de planificar realista y rigurosamente, invirtiendo el mínimo de tiempo y recursos. Si desea revisar detalladamente las funciones de Oracle Hyperion Planning puede visitar la web oficial: http://www.oracle.com/us/solutions/ent-performance-bi/hyperion-planning-066537.html Página 6
Página 7