Hola Pedrito12: Tenemos montado en una base de datos un servidor de MTS y nos esta dando problemas. No se exactamente como tocarlo para configurarlo. El problema que nos da es que cuando aparece más de 1 proceso servidor y un proceso dispatcher, el sistema se bloquea, se agota y tarda mucho en devolver control a usuarios que manejan aplicativos. Gracias. Un saludo
1 respuesta
Respuesta de pedrito12
1
1
pedrito12, Actualmente estoy trabajando como Manager en una multinacional de...
Efectivamente el problema que me cuentas es bastante común en este tipo de instalaciones, y es más, apotaría algo a que en ese sistema tenéis varias instancias montadas que ocupan bastante memoria y todas con MTS, y una SGA bastante cortita. Bueno, en principio este problema se podría subsanar, añadiendo memoria física al servidor (solución más certera y eficaz..), también se podría probar a trabajar en alguna instancia sin MTS, y por último probar a configurar y hacer un tunning de todo el tema de SGA, MTS y demás... En el fichero de Init. Ora podremos ver la configuración del MTS. Presta atención a la entrada: MTS_MAX_Dispatchers, que no sea mayor de entre 5 y 10, ya que según oracle, acepta un máximo de 64 usuarios por dispatcher (aunque luego entren más..), también para MAX_SERVERS, y que respete la coincidencia de protocolo de red establecido en vuestra RED. Ya te comenté antes que para curarse en salud sería refereible aumentar la memoria física, pero en muchas ocasiones esto no es posible, y tenemos que buscar en otro sitio la solución. Como sabrás el MTS es recomendable cuando tenemos muchos usuarios en conexión a la base de datos, por ejemplo y dependiendo de las características de nuestro servidor, más de 1000 usuarios empieza a ser una cifra aceptable, aunque en ocasiones puede montarse en equipos que tiene que aguantar una carga de usuarios que execede lo recomendable para la cantidad de instancias, usuarios y sga, en relación a la memoria física disponible. Igujalmente te comento que tendrás que calcular que necesitamos 1kb adicional por conexión de usuario ue entre por mts en la memoria compartida, la cual guarda una relación de las conexiones y usuarios que acceden a la base de datos. Por ejemplo si nos conectamos 1000 usuarios a la B.DE entonces será reservado por lo menos : 1000kb adicionales de la shared_pool que te recomiendo sea más ya que podríamos tener problemas de acceso si se generase un alto numero de ordenaciones en SGA, las cuales si hubiese poca, se tendrían que hacer en disco, lo que produciría una gran cantidad de Wait I/O en el sistema, el cual podría disminuir notabilísimamente el acceso a disco, etc... En resumen, intenta aumentar la RAM del sistema; si no fuese posible, reduce alguna SGA un poco e intenta por la que reduzcas, acceder si MTS (a ver que ocurre..); por último configura, y haz alguna prueba tocando la configuración del MTS del init. Ora. También puedes ver que nivel de aciertos tienes en SGA, que índice de ordenaciones (sorts), que cantidad de SGA tienes libre (al momento de los parones...) y evaluar al final porqué se producen los errores. Podrás saber todo esto con lo siguientes scripts en SQL: Para Sort-Area_size: select name, value from v$sysstat where name like '%sort%'; El ratio que te devuelva en memory será las ordenanciones llevadas a cabo en memoria (son las buenas, las rápidas); el ratio en disk, será lo que ordena en disco, o lo lento; y rows, son el numero de rows que ha ordenado para devolver las consultas. Evidentemente debe ser mucho mayor el indice de memory que el de disk. Existen muchas más sentencias en SQL que nos pueden ayudar a saber si nuestra SGA está bien dimensionada o si por el contrario tenemos contención en algún lugar. En fin, suerte y al toro!