Rendimiento en El Motor Oracle

download Rendimiento en El Motor Oracle

of 5

description

oacle

Transcript of Rendimiento en El Motor Oracle

  • Rendimiento en el motor Oracle

    El uso de la memoria es un factor fundamental para el rendimiento de la instancia, no debe ser muypequea pero tampoco muy grande.Igualmente, es crtico para el rendimiento de la instancia el estado de los objetos (Segmentos yPL/SQL).AUTOMATIC MEMORY MANAGEMENTExisten dos sabores de memoria Oracle, la PGA que es privada para la sesin y la SGA que escompartida para todos los procesos.En 9i fue posible implementar un manejo automtico de la PGAEn 10g fue posible implementar el manejo automtico de la SGA.En 11g podemos dar manejo automtico a las dos areas de memoriaToda la memoria que Oracle utiliza es memoria virtual, Oracle no podr saber si la memoria que estautilizando es RAM o es SWAP (Paginada), la paginacin debe ser evitada puesto que degradaconsiderablemente el rendimiento.Cuando un server process se instancia, hace uso de la PGA, para almacenar informacin como:

    Tablas temporalesOrdenamientos de registrosMerging BitmapsVariablesCall Stack

    Alguna informacin de la PGA indiscutiblemte deber hacerse en memoria, pero para otrasestructuras, tales como las tablas temporales, Oracle podr hacer uso del almacenamiento en disco,sin embargo, esto degradara el rendimiento de nuestros procesos.Cada sentencia SQL que se ejecute dentro del motor, necesitara SGA (Shared Pool) y una minimacantidad de PGA. Sin estas, oracle no podr ejecutar la sentencia.Tipicamente, existen tres etapas para la asignacin de memoria:

    Optimal: Es aquella donde Oracle puede ejecutar todo el proceso en memoria sin tener que acudira segmentos temporales en el disco. (Input data & Auxiliary Data en memoria)One-pass: Es cuando la memoria es insuciente para la ejecucin optima en memoria.Multipass: Es el evento menos eciente, es cuando tiene la menor cantidad de memoria. Y tieneque hacer uso intensivo de los segmentos temporales en disco.

    Rendimiento en el motor Oracle | Road to OCA & OCP https://oraclehelper.wordpress.com/2010/03/19/rendimiento-en-el-mot...

    1 de 5 29/08/2015 11:37

  • One-pass: Es cuando la memoria es insuciente para la ejecucin optima en memoria.Multipass: Es el evento menos eciente, es cuando tiene la menor cantidad de memoria. Y tieneque hacer uso intensivo de los segmentos temporales en disco.

    Comentar Ejemplo, Ultimo prrafo pagina 3.Conceptos: Shared SQL Area (SGA-Shared Pool), Private SQL Area(PGA)El escenario ideal es que todas las sentencias encajen dentro de la categora OPTIMAL, sin embargo,esto es casi imposible, en DWH, debido al tamao de las tablas, se requerira de Gigabytes dememoria. Por lo tanto, en muchos ambientes llegar al escenario de one-pass ser lo mejor que sepueda conseguir.Multipass deber ser prevenido si es posible.Oracle recomienda utilizar la administracin automtica de la PGA, la denicin ja para esta area,esta disponible solo por backward compatibility.Con la administracin automtica de la PGA, Oracle reparte memoria por demanda, oracle esperaque en solo una sesin requiera memoria no negociable al mismo tiempo (Sorts..etc). Cada sesinrequerir una cantidad mnima para almacenar lo el estado de la sesin, el resto ser pasada a lasotras sesiones, de tal forma que cada sesin obtenga la memoria que necesite. Al menos esa es laesperanza.One-pass: No es bueno, pero es inevitable.Multipass: Terrible, desatroso, apague y vmonos, toca llorar por hardware ante el administrador delsistema, o obligar a los desarrolladores a otimizar (alivianar) los SQL.WORKAREA_SIZE_POLICY, por default estara setiado en AUTO, lo cual implica que oraclerepartira memoria por demanda a las sesiones, la cantidad de memoria con la que oracle cuenta pararepartir, es la especicada en el parametro PGA_AGGREGATE_TARGET.Este ultimo parmetro, por lo general deber ser mayor a 10MB y se recomienda este en un tamaocorrespondiente al 20% del tamao del SGA. Lo cual no es camisa de fuerza, igual hay quemonitorear y ajustar.SGA MEMORY MANAGEMENTLa SGA contiene muchas estructuras de memoria, las cuales pueden ser dimensionadasindependientemente, estas son:

    Shared PoolDatabase Buer CacheLarge poolStreams PoolJava PoolLog Buer

    Como regla general, la asignacin del tamao de las estructuras de memoria correspondientes allarge pool, java pool y streams pool no estan sujetas a negociacin, bien sea que ma memoria esnecesitada o no. Si estas estructuras estan muy pequeas entonces habr error. Si estan sobredimensinada, pues estaremos desperdiciando memoria, ya que no tendremos benecio derendimiento.El tamao del shared pool, database buer cache y log buer si es negociable, si el tamao es menoral necesitado, no habr error, pero si se degradara el rendimiento del sistema. Sin embargo, con elshared pool especcamente, si esta sub-dimensionado podemos tener errores.

    Rendimiento en el motor Oracle | Road to OCA & OCP https://oraclehelper.wordpress.com/2010/03/19/rendimiento-en-el-mot...

    2 de 5 29/08/2015 11:37

  • El tamao del shared pool, database buer cache y log buer si es negociable, si el tamao es menoral necesitado, no habr error, pero si se degradara el rendimiento del sistema. Sin embargo, con elshared pool especcamente, si esta sub-dimensionado podemos tener errores.No se deben asignar tamaos gigantescos a estas estructuras de memoria, ya que podra estarimplicndonos hacer swaping. Lo cual daara el rendimiento de la base de datos.El log Buer no es auto ajustable, es decir, su tamao no esta sujeto a negociacin. El tamao del logbuer es determinado de manera ja al iniciar la instancia y no es auto administrable.Los parmetros para implementar una administracin manual de las estructuras de memoria son:SHARED_POOL_SIZEDB_CACHE_SIZELARGE_POOL_SIZESTREAMS_POOL_SIZEJAVA_POOL_SIZEPara habilitar la administracin automtica de la memoria, se deben dejar estasvalores en el defecto,o en Cero (0) y denir el parmetro SGA_TARGET. Dentro de el valor de esta parmetro debe estarel tamao que se asignara el LOG_BUFFER, el cual ser jo y no autoadministrable.AUTOMATIC MEMORY MANAGEMENTLa administracin automtica de la memoria le permite administrar la memoria como un todo, estose logra deniendo el parmetro MEMORY_TARGET. Este toma la administracin automtica de laPGA habilitada por el parametro PAG_AGGREGATE_TARGET y tambin la administracinautomtica de la SGA habilitada por el parmetro SGA_TARGET.AMM no es solo una herramienta para administrar, realmente entrega grandes benecios derendimiento a los motores. Esto debido las conguraciones estticas no se adaptan de la maneraeciente a las demandas de procesamiento que se presentan en los diferentes momentos de looperacin del negocio.Tipicamente la transaccionalidad no necesitara mucha PGA, pero si Database Buer Cache, encambio, el procesamiento de consultas SQL si requerir de bastante PGA pero no tanto buer cache.Por supuesto toda esta administracin de memoria se hace dentro de las restricciones de tamaosdenidas por los parmetros mencionados anteriormente.Es importante tener en cuenta que el tamao correspondiente al LOG_BUFFER es estatico. No puedeser auto administrado, y su tamaa ser restado del parmetro que me dene el total del SGA.El parmetro MEMORY_TARGET es dinamico, y puede ser ajustado sin bajar la instancia, perosiempre el valor de este parmetro deber estar dentro del limite impuesto por otro parmetro, estees: MEMORY_MAX_TARGET. Este ltimo, si es esttico.Hacer el ejercicio de la pgina 7 con mucha atencinUSE MEMORY ADVISORSRecordar el proceso de MMON y el AWR. Los advisors son herramientas que calculan y proyectan elefecto de cambiar los tamaos de las estructuras de memoria (SGA y PGA). El uso de AMM facilita eluso de los Advisor para tomar decisiones sobre las asignaciones de memoria. Se pueden ver a travsdel EM.

    Rendimiento en el motor Oracle | Road to OCA & OCP https://oraclehelper.wordpress.com/2010/03/19/rendimiento-en-el-mot...

    3 de 5 29/08/2015 11:37

  • Recordar el proceso de MMON y el AWR. Los advisors son herramientas que calculan y proyectan elefecto de cambiar los tamaos de las estructuras de memoria (SGA y PGA). El uso de AMM facilita eluso de los Advisor para tomar decisiones sobre las asignaciones de memoria. Se pueden ver a travsdel EM.Pagina 9, se muestran querys, revisar los textos que hacen las descripciones en el documento deOracle.Los Advisors no estarn habilitados si las estadsticas no estn habilitadas en modo TYPICAL o ALL.Solucionando problemas con los objetos InvlidosIdealmente, en una base de datos todos los objetos deben estar en estado valido, dependiendo de lacusa del estado invalido, este puede pasar a estado valido la prxima vez que se utilice.Los ndices invlidos se pasan a validos reconstruyndolos, esto no es un proceso automatico.Los objetos que pueden estar invlidos son: Procedimientos, funciones, triggers, paquetes, objetos yvistas.Cuando se compilan, se verican las dependencias del objeto con otros, incluso bajando al nivel decolumna.La instruccin para compilarlos es alter object_type objet_name compile;Existe una vista en la cual podemos observar las dependencias de un objeto. Esta vista esDBA_DEPENDENCIES.Oracle nos provee un utilirario para la recompilacion de los objetos de manera masiva, dichoutilitario se encuentra en $ORACLE_HOME/rdbms/admin/utlrp, este script debe ser ejecutado comosysdba.Indices InutilizablesA diferencia de los otros objetos que se invalidan y que oracle auto recompila cada vez que seacceden, lo ndices que se hace inutilizables deben ser reparados explcitamente por el DBA.Una de las razones mas comunes para que le pase esto a un ndice, es cuando se mueve una tabla.Esto ya que los rowids quedan sirviendo para nada.Antes de 10g, la forma de detectar un ndice inutilizable era a travs del error que nos arrojaba laejecucin de la sentencia sql. Despues de Oracle 10g, cuando esto sucede, es decir cuando se intentaacceder una tabla que tiene un ndice inutilizable, el optimizador genera un nuevo plan de ejecucinel cual no utiliza ndices, de tal forma, que las consultas sern siempre satisfactorias.El parmetro que determina este comportamiento es SKIP_UNUSABLE_INDEX, el cual por defectoesta denido en TRUE.ATENCION: La excepcin para este comportamiento es cuando el ndice es necesario para forzar unconstraint, por ej, uno primary key. En este caso, la tabla ser bloqueda para DMLs.Si se quiere operar como en versiones anteriores a Oracle 10g, se debe congurar el parmetroSKIP_UNUSABLE_INDEXES=FALSE.Nota: Cuando un ndice se esta reconstruyendo, se requiere espacio de almacenamiento adicional.La instruccin REBUILD permite ser usada con NOLOGGING, TABLESPACE, NOLOGGING, pordefecto el ndice ser reconstruido en el tablespace actual, pero se puede mover a travs del uso de lainstruccin TABLESPACE.

    Rendimiento en el motor Oracle | Road to OCA & OCP https://oraclehelper.wordpress.com/2010/03/19/rendimiento-en-el-mot...

    4 de 5 29/08/2015 11:37

  • La instruccin REBUILD permite ser usada con NOLOGGING, TABLESPACE, NOLOGGING, pordefecto el ndice ser reconstruido en el tablespace actual, pero se puede mover a travs del uso de lainstruccin TABLESPACE.IMPORTANTE: Durante la reconstruccin del ndice, la tabla ser bloqueada para las DMLs.Con NOLOGGING se indica que la creacin del ndice no genere REDO LOG, pero con esto, se deberespaldar el tablespace inmediatamente, de tal forma que el tablespace pueda ser restaurado a travsde RMAN, de lo contrario el tablespace no quedara respaldado. Sin embargo, el no usarNOLOGGING, hara que la reconstruccin del ndice sea ms rpida.Los ndices siempre tienden a volverse lentos, principalmente si se hace muchos deletes y updatessobre las columnas indexadas

    Posted in Administracion

    Categories

    AdministracionArquitecturaBackup y recuperacionDesempeoPL/SQLSeguridad

    Rendimiento en el motor Oracle | Road to OCA & OCP https://oraclehelper.wordpress.com/2010/03/19/rendimiento-en-el-mot...

    5 de 5 29/08/2015 11:37