Вы находитесь на странице: 1из 15

INFORMIX 11.

7 Memoria buffer fisicos: el sistema carga y lo lleva al physical Log LRU shared memory asigna uno espacio de memoria para su trabajo tamao inicial y si crece segmentos seguidos hay que revisar y es mejor reasigna r y no es tener demasiados y no debe ser mas de 2 o 3 Mensajes del sistema la mas recomendable share memory discos conceptos fisicos chunk (pedaso) donde se almacena la informacion es un dispositivo /dev/cooked fi le que crea en el sistema operativo es necesario trabajar en dispositivos crudos RAW Disk (no se ven, no pasa por si stema operativo, la adm la hace la base de datos y su rendimiento es mejor) en /dev/raw crwx rwx la c Raw lrwx rwx la l es un link C=Raw l=link d=directorio b=bloque Paginas: unidad basica de almacenamiento cuando se va a leer un dato el sistema va a la pagina y es configurable y es lo minimo que se lee es sistema lee y no trae el dato sino trae toda la pag ina difentes tipos de pagina: pagina de indices,control, remainer, blocks, tablespaces: conexion de paginas que pertencen a una tablas, espacios contiguos informacion dbsapces: grupo de chunk el chunk tiene tablas conjunto de espacios en discos qu e se asignan para una o varias dbspaces, puede haver muchos tblspaces extent pedasos de espacios ojo recordar el comando firtexten para reasingnacion de extent blob data types: texto o byte se almacenan en blobspace o permiten almacenar te xto libros, el almacenamiento es diferent se almacenan tipos de datos sean mas grandes se hacen paginas mas grandes blobpage mirroring: memoria share memory pasa a primary chunk si se cae pasa a mirror chu nk the logical logs: espacios contiguos para alamcenar transacciones

al reiniciar el sistema sube las transacciones que estan subiendo puede demorars e por terminar las transacciones en los logical logs en chekpoint pasa primero por physical y luego a logical checkpoints: todos los buffers son pasados a disco hay que reducir a lo minimo Modulo II hilo - thread: hilo es una secuencia de intrucciones que se executan en un proce so fisico del sistema un proceso internamente tiene multiples hilos proceso es oninit corriendo e sta haciendo varias tareas clases de procesadores virutales: - cpu - pio escribir al physicallog : configurable - lio escibir al logicallog configurable - AIO escribir a cualquier discpositivos chunks, en el sistema - ADT auditoria de la base UNICA Y EXCLUSIVAMETE CUANDO SE ARRANCA EL SISTEMA - MSC hacer diferentes tares - shm chare memory la c - tli - soc no trabajr con el tiempo de la maquina - AMD Conexiones: por sharememory o por sockets por sockets: manejar multiplexacion distribucion de datos, balanceo con funcione s diferentes I/O kernel mecanismo para sobrepasar una sobrecondicion del sistema operativo pa sar raw device I/o : con escritura dispositios como ver los procesos del sistema ipcs oninit quedan pegados en memoria del sist ema operativo cuando el motor se cae y vamos a subirno y no podemos por procesos pegados ipcrm -m memoria id ipcrm -s semaforos id Conexion del usuario: por share memory - server share - memory por stream pipe comunication - server - stream pipe connec tion por tcp/ip por sockets (procesadores) o TLI maquinas de confianza : hosts.equiv $home/rhosts en sqlhosts para optimizar options k=0, s=2, r=0, b=1072 k=keepalive: tiempo de conexion en segundos S=security: niveles de seguridad r=netrc: para que autentique o no

b=fuffer:

tamao del buffer

INSTALACION INFORMIX 11.7 son 6 Difrentes dbspaces root physical log logical log data configurable smartlarg objet= (32mb) configurable temporal =configurable dia 2 CONFIGURACION Y SUBIR INSTANCIA -areas de dos tipos raw device o coke -en informix se recomienda un chequeo de sistema operativo examiar el directorio $INFORMIXDIR/release definir parametros del kernel espacio disponible variables de ambiente que informix exige informixdir y informixserver sqlhost permite la conectividad en el sistema los archivos del sistema es importante copiar este directorio $IN FORMIXDIR/etc algunos parametros que son imprtantes semmni semmsl max number of semaphores available SISTEM V: shmmax MAXIUM SIZE OF SINGLE SHARED MEMORY SEGMENT shmseg maximum numero of segment a single process pude accesar shmmni BSD: shmsize shmmni para que suba informix se debe aplicar con estas caracteristicas creacon de cooked file touch file-name chmod 660 file-name chgrp informix file-name chown informix file-name ejem touch chmod chgrp chown ls -g /dev/chunk1 660 /dev/chunk1 informix /dev/chunk1 informix /dev/chunk1 /dev/chunk1

ejemplo en maquina .setcurso crear una nueva instancia seguir el ejemplo en creacion de raw devices crear link simbolicos ln /dev/rxy0f /dev/chunk2 chmod 660 /dev/chunk2

chgrp informix /dev/chunk1 chown informix /dev/chunk2 ls - l ????? archivo onconfig en $INFORMIXDIR/etc archivo onconfig onconfig=onconfig.online1 export ONCONFIG recomendacion onconfig.std No tocar VARIBLES DE AMBIENTE INFORMIXDIR PATH INFORMIXSERVER: dbservername o dbserveraliases ojo en onmonitor en parametros ---> inicializa (formatea la base o inicializa la base ) ONMONITOR ingresamos a INICIALIZAR ajustamos los siguientes parametros en esta pagina primary path donde esta el rooddbs mirror o no TAPE DEV /DEV/NULL hacer backup de nivel LOG TAPE DEV /DEV/NULL para hacer backup de logs phy log size de 50000 k define espacio en disco log. log size 10000 kbytes ---> Number of logical logs 6 para inicializar com o nimino debe ser la mitad o menos del phy log sizes Root offset = termino archivos tipo raw device el sistema operativo ve los dis cos como sda2,sda2,sda.... 0 Kybtes es la primera pista del disco para arrancar si arranco un nuevo dbspace iniciaria ejemplo el rootdbspace de 50 gb el nuevo dbspace inicia en 51 g y asi un nu evo iniciaria en 101 SHARED MEMORY PARAMETERS memoria compatida. server number: se puede tener varias instancias este parametro sirve para que r eserve la memoria compartida para cada instancia debe ser secuencial server name: nombre de la instancia server aliases: nombre de alias, protocolo de conexion dbspace temp: lista de archivo de dbspaces separados por, para que los procesos de usuarios se creen en esos dbspaces temp entre mas temporales mejo deadlock timeout: el sistema hace espera de un candado en un registro (abrazo m ortal) tiempo que la aplicacion espera para que obtener un candado sobre el regi stro forced residency: estar siempre fijo en la memoria Ram nom res segsize (k): es tamao de memoria virtual todos los procesos de usuarios que corren virtual heterogeneous commit: physical log buffer size: epacios de memoria que sea el doble del physical log max # of buffers: se puede manejar dbspace mayores de 2k 4k en el ejemplo de 5 0000 bloques de 2k tamao de paginas Resident shared memory size: me da el total de la memoria que estoy configurand o en un servidor de base datos dar el 80% de memoria fisica dbspace down option: en el es cuando se daa un dbspace y la parametrizacion es p

ara que pare, suba number of page cleaners: son treads con funcion limpiar espacios en memoria que no se estan utilizando stack size (k): tamao de la memoria que se asigna a cada cliente o conexion de u suario a la base de datos optical cache Size : segmento de moria para leer imagenes transaction timeout: espera un tiempo en transacciones index page fill factor: estructura de una pagina deje llenar una pagina hasta u n 90% no la llene un apuntador add segSize: para crear un nuevo segmento de memoria en caso de crecion de un n uevo usuario que requiera Total Memory: si le doy 0 que tome toda la que el sistema requiera importante t ener en cuenta en caso de desbordamientos de memoria (puede controlar) PERFORMANCE TUNING PARAMETERS multiprocessor machine: para manejar varios procesadores num proces to affinity: proc num start with: para esto es en lumero de procesadores fisicos y cuantos core son ejemlo 2 cualcore cuantos ejemp 2 procesadores cualcore total 8 procesadores x2 que da el servidor = 1 6 cpu vps: 1 es el corazon del manejo de instancia yo puedo usar AIO vps: blanco cuando se usa con raw device y esta habilitado kernelIO (kAIO) si tengo 10 dbspaces el automaticamente los crea es un parametro AUTOMATICO Y ES DEFAULT Single CPU vp: N Disable Priority Aging: N cuando se configura un so para bd el oninit toman rec urso de memoria y procesador (administra prioridad sobre el sistema operativo) off line recovery threads: ejem 10 cuando se cae la instancia el proceso de sub ir el physical log y lo sube a memoria y luego de los log empieza a subir y hace un rollback on Line Recovery threads: ej 1 cuando esta arriba el proceso hace lo mismo pero solo se da 1 pra que no consuma maquina Num of LRUS queques: 8 se relaciona con number of page cleaners va hasta 512 LRU MAX DIRTY: ejem 60 se maneja en % cuando llegan ejemplo al 60% 3800 de 6.60 0 EN LOS buffers por cola TENER ENCUETNA DISTRIBUCION EQUITATIVA LRU MIN DIRTY: ejem 50 se maneja en % los dos anteriores es para manejar en memoria para consultas, depende de dat os de usuairos, datos etc CHECKPOINT INTERVAL: es el tiempo que el sistema hace syncronizacion entre memo ria y maquina ejemlo 300 seg num of read aheand page: ej 64 tiempos de trae datos de lectura Read ahead threshol: ej 16 lectura nettype settings para configurar por protocolos se conecten cuantos por usuarios que van por cp u ipcshm 50 usuarios cpu, soctcp 50 usuarios net, un treads 50 usuarios a 100 por threads DATA REPLICATIONS PARAMETERS : replicacion HDR Altar disponibilidad interval: ej 30 timeout: ej 30 auto: 0 lost & found: /data/ibm/informix/demo/demo_on/dr.lostfound

idxauto: 0 DIAGNOSTIC PARAMETROS messge log consoloe msgs alarm program lo anteior para almaecena los logs dump share memory: N para temas de soporte y debe estar apagado porque llena l os filsystem dump gcore: N dump core: N dump count: 1 dump directory: /opt/IBM/informix/tem PDQ MAX PDW PRIORITY: maximo 100---> soporta la ultimate definela prioridad a recur sos en procesos este parametro es de cuidado quien coge primero coge el 100 espe ra la cola decision support querys desicion support memory kbytes maximun decision support scans: 1048576 dataskip: off optimizer hint:2 se debe hacerlo por costo, hay otras opciones por defecto, ind ice Non PDQ query Memory: 128 se advierte fque no se debe tocar formatea la base DEBE SUBIR LA BASE MENU PRINCIPAL POR MODE SE SUBE LA BASE ONMONITOR STATUS PROFILE OJO REVISAR AMPLIAR LA CAPACIDAD DE PAGINAS PARA MEJORAR LAS Y ESCRITURA LECTUR AS PAGINAS DE 2K HAGO 8 LECTUAS Y SI TENGO DE 16K TENGO UNA LECTURA EN LOGS TENER EN CUENTA EL % DE USUADO SI LLEGA A 75% SE ESTA HACIENDO CHEKPOINT Y TOCA AMPLIAR ESPACIO EN PAGINAS O SUBIR MEMORIA EN INDIVIDUAL LOGS FILES FLAGS: U EN USO B BACKUP C NORMAL L DONDE SE HIZO EL ULTIMO BACKUP A ADICION HAY QUE REVISAR LOS LOG Dia 21 de septiembre modo mantenimientos comandos para administrar el sistema instancia:memoria, procesador, discos offset: chown espacio en disco los cuket file no crece se hace con rawdevice

estados de oparcion del sistema Off-line informix esta fuera esta abajo, solo esta activo para accesar a las are as de disco y es oncheck -pr: le variables de ambiente tengo este onconfig y lee el prim er dispositivo que esta en rootdbs y lee paginas reservadas, es util en sentido permite tener a cceso a informacion estando offline saca la estructura de configuracion del sistema Quiescent: Trabaja el usuario informix de mantenimiento, actividades de checkeo de backup existe SingleUser perimite hacer todo, modificacion de bases de datos On-line: el modo donde el sistema Opera multiusuaior de trabajo shutdown: bajar la base Recovery: susede que subamos o se presenta una caida y el sistema empieza el pro ceso de recuperacion En el sistema Operativo hay procesos Oninit que cumplen tareas especificas para identificar los procesos de procesos con ipcs -mop: OJO la recomendacion la base de datos debe subirse con el usuairo I nformix o usuario root atraves de onmonitor se tienen los estados de startup on-line Gracefull-shutdown : que mantenga los usuarios conectados y si reinician no pued an subir recovery: restore una base, subir la base oninit: subir el motor oninit -s: subir de uns estado offline a un estado Quicent oninit -i: inicializa el rootdbspace (ojo no tocarlo reinicia la instancia o for matea) oninit -p: borra tablas temporales hace que el recovery sea mas rapido oninit -y: bajar o cambiar el estado onmode -k: en modo offline lleva el sistema a un modo inmediate-shutdown y llema a modo offline de mantenimiento onmode -m: de quiescent onmode -j: singleuser onmode -s lleva a shutdown onmode -u: inmediate - shutdown onmdoe -y: no pregunte TALLER singleUser: para tareas de solo el usuario Informix como crear tablas, dbexpor t, indixes quicent: generar proceso de adicionar logs, take-offline: baja el motor de una y pasa a estado offline graceful-shutdown: espera a que los usuarios se desconecten y no deja conectar nuevos usuarios

para chequear usarios y candados en onmonitor status ---> userthread -->ctrolw da ayudas para analisar que est a pasando se revisan los procesos que estan cursando en el sistema ojo revisar detenida mente rollback en la columna de user thead status revisar detenidamente ya que estan espe rando procesos importante para pasar a usuarios singleuser el comando es onmode -j para pasar de singleuser a online el comando es onmode -m lo pasa a usuario quiescent para pasar de online a que salgan pero esperando a que se desconecten los usua iors onmode -s para bajar de una onmode -k para saver como sube procesos de la base oninit -v con onstat -m me muestra que esta haciendo le log

MONITOREO que esta pasand en el sistema, abrazos mortales se utilizan 3 comandos sistem monitoring interface (SMI) onstat: permite ver los procesos de memoria, cache, buffers, tiene ventajas no causa carga a la base porque estamos leyendo memoria oncheck: se ve disco el si puede bloquear la base de datos.es un reparador com o parametro genernado costo de poder bloquear la base - SMI (SYSTEM MONITORING INTERFACE) sysmaster: base de datos es creada automaticamente las carga en el diccionario cache en estas tablas no se pueden hacer niveles de aislamiento (para mejorar l a concurrencia) no se operaciones que nos modifiquen que alteren, inserten o hacer operac iones de esta base select rowid no aplica las tablas sysdatabases: databases in the server systabnames: tables withn a base syslogs: logical log information sysdbspaces: dbspace informacion syschunks: chunk informacion syslocks: lock information sysvpprof: vp information masss revisar estructuras de cada tabla y hacer join (armar querys para revisar y tom ar analisis)

ONSTAT: llegar a la memoria y estructuras estar la base arriba y no acceso a la datos en disco y pude ser problema s de red o disco en estos casos hay que reiniciar la instancia (ipcs segmentos de memoria despues sige el comando ipcrm -m o -s con aid para matar esos procesos) cuando no baja bien la base y toca matar procesos a traves de ipcs, TENER CUIDADO luego eliminar procesos de sistema operativo onstat -i: el sistema queda en un estado interactivo onstat - : opera para on-line, off-line, shutdown, recovery, ckpt (chekpoint) oncheck: colocar candados en los recursos que se usan se dan dos opciones oncheck -c =chequee oncheck -p =print con el comando oncheck -cc es para revisar el catalogo y tomar correcciones para ver el puerto en informix con el comando: env |grep INFORMIX ambiente grafico taller creacion de espacios a traves de onmonitor y grafico crear rootdbs a 2k se va a dejar de 500 mg physdbs a 2k = 50m logsdbs a 2k = 100m tem1dbs a 2k = 50 m tem2dbs a 2k = 50 m datos1dbs a 2 k =100 Mg datos2dbs a 4k = 100 Mg datos3dbs a 8 k = 100 Mg datos4dbs a 16k = 100 indidbs a 16k = 100 Mg ind2dbs a 16k = 100 Mg ahora definir tamaos comando para ver espacios onstat -d ejemplo tengo 2040 k y size 250000 = 500 m egas debo crear el archivo los archivos en /data/Ibm/informix/demo/curso/ comando toch para crear physdbs logsdbs ..... al crearlos se revisan con ls -lsa *.dbs luego dar permisos chown 660 *.dbs tambien asignar a grupo chgrp informix:informix *.dbs con onmonitor se va a crear physdbs, tem1dbs onspace logsdbs tem2dbs oat datos1dbs .... a oat por linea de comandos crear en dbspaces ejemplo crear un logsdbs con mirror onspaces -c -d logsdbs -k 2 -p /data/IBM/informix/demo/curso/logsdbs -o 0 -s 100000 -m /data/IBM/informix/demo/curso/logsmir 0 comando ls -lsa nos muestra tamaos

----------- jueves 22 de Septiembre------------sitio en internet www.oninit.com www.iiug.org comando oncheck -pT basedatos: comando se demora en ejecucion genera impacto sob re usuarios porque se demora proque revisa la estructura de la base en disco nos da informacion de paginas libres, paginas ocu padas,indices, etc con este comando enviarlo a un archivo --- sistemas de tipos de fallas para recuperar system crash, que se nos valla la luz, dao de un disco, o falla por algun punto d eterminado mecanismos de Solucion: Fast recovery son dos fases ---> physical recovery y log ical recovery physical recovery: guarda datos antes logical logs : se guarda la transaccion funciona en bases transaccionales

onlog es una herramienta para hacer un rastreo de cambios en la base o sistema - disk mirroring: respaldo este funciona cuando inicializo la base, despues ya no puedo se puede cuando se activa el mirror y luego se arregle el principal tiene que sincronizar ondbspacedown es una parametro de configuracon cuando determina que accion es 0: continue un chunk no contiene el rootdbs, logical log, o physical log es m arcaddo es down 1: abort: aborta los servicios 2: wait: defecto

rootdbs debe tener mirror - restore de backup: ontape. on-archive, on_bar ontape= 0 toda la informacion 1 copia de toda la data de cambios desde el ultimo ni vel =0 2 copia cambios de lo que tiene el 1 con otape se guarda en un archivo el backup, se puede hacer sobre un directorio: debe estar configurada la isntanc ia IFX_ONTAPE_FILE_PREFIX backupcomfaboy_S0_L0_fecha backupcomfaboy_S0_L1_fecha en onconfig configuramos la siguiente linea TAPEDEV /data/IBM/informix/demo/curso

hacemos por fuera # IFX_ONTAPE_FILE_PREFIX=copi a export IFX_ONTAPE_FILE_PREF IX hacemos env reviso que haya quedado en el achivo copia hay que darle permisos en copia 777 tambien se puede hacer en una nube OJO CUANDO SE HAGA CAMBIOS EN CONFIGURACIN DE INFORMIX SACAR NIVEL 0 - data replication BACKUP DE LOG: hay dos formas: cuando lo llamo o tambien cuando lo configuro para que haga lo gs con continuos backup: copia continua de logs en el sistema ---RESTAURACION TALLER CREACION BASE DATOS DE SISTEMA dbaccessdemo -log stores -dbspace rootdbs ENTER ----------- physical Disk Space chunk estructuras en disco rawDevice path =/dev/rxy0y offset =0 kbytes size = 10000 kybytes =10 Mg maneja una definicion por SO

piece of RawDevice path= /dev/rxy0f offset=5000 kbytes size=10000 kybtes otros dispositivos /dev/chunk1 unix(cooked) file path =/dev/chunk1 offset=0 kybts size = 10000 kytes Basic Unit of I/O: paginas ---- extent extent growth

comando para tener en cuenta de extents oncheck -pT extents: tblspace maximo 3 extens ---- logical collection of chunk : dbspace comando dfragmen 0j0 es importane usar kio el sistema operativo kio activarlo desde sistema operativo se activa desde base de datos y se prende en la sescion que arranque informix y se debe setiar en las variable de ambiente onstat -g ioa >mm este comando nos indica que valores estan activos kio como ejemplo (procesadore s virtuales )

------ DIA VIERNES Concurrencia: select staments = lo que son lecturas se manejan nivels de aislamiento: Dirty read: es el normal que usamos sin colocar candado en una consulta no me interesa que esten trabajando (lectura susia) toma una foto y me da la informacion se da para buscar una referencia de datos, un estim ado no datos reales poruqe esta leyendo y escribiendo datos no muy serteros se t endria Committed read: El sistema lee las filas de la BD despues de haber preguntado de haber un candado, el sistema va y mira si hay un candado y espera o envia un error si el candado esta abierto en el registro deja hacer la consul ta o si no espera cursor stability: Es el que por defenco tomamos cuando usamos cursores el sist ema coloca candado sobre cursores es tema de diseo y optimizar que se hace de acuerdo al negocio como un cierre contable te ner en cuenta que depende de esto puede bloquear la base repeatable read: coloca un candado en todas las consultas este a diferencia no esta relacionado con un cursor en otras bases de datos: set set set set isolation isolation isolation isolation to to to to dirty read; committed read; cursor stability; repeatable read;

cuando termina la sesion termina, ojo debe serrar la sesion porque segueria bloq ueada la maquina por bloqueada la base update concurrencia database level table level page level: es por default row level: se recomienda usar este nivel key level una forma de controlar los candados set lock mode to wait; permite al sistema set lock mode to not waith;

set lock mode to wait 20; ---- deadlock detection como detectar cuando hay un bloqueo por registro, base (famosos abrazos mortales) deteccion abrazo mortal: key value locking - a method of B + tree locking where eth key being, update, insert or delete tipos de querys que se requieren crear un base de datos base datos Buffered logging maneja en la parte de disco y en parte logica en ella se define cuanto en mem oria y cuanto en disco cuando hace tansacciones en el buffer en el log y cuando se llena el log se v a a disco unbuffered logging : hace lo mismo en el buffere peor cuando haga commit llev a disco es aplicado a base de datos transaccionales de alto cons ulta base datos Ansi: instrucciones metidas dentro de una transaccion pero son menos usadas maneja privilegios a nivel de tablas create crear tablas se deben definir nombre de tabla definir el tamao inicial de la tabla definir el dbspace a ubicar los extent se dan en k page 2k tamao total de tabla esta en bit sumatoria 128 b eje granularidad database tabla pagina registro (row) key

un extent tiene minimo 8 paginas para almacenar la estructura basica para inic iar con un extent ejerciio create table orders ( order_num serial not null, sss char ssss serial in dbspace1 EXTENT SIZE 64

NEXT SIZE 32 LOCK MODE row; base sysmaster: puedo mirar el estado de las bases datos acceso temporal ---------- por linea de comando oncheck -pe ind1dbs podemos ver datos tambien d el estado de fragmentacion de una tabla ----- ESTADISITICAS es un proceso fundamental en rendimiento, performanst de las bases de datos --- update update update update update update statistics statistics statistics statistics statistics statistics comando low, medium, low, medium, low, medium, low, medium, for procedure high, high, for table; high, for table tabname; high, for table tabname (colname); procedure_name """ es importante """

se tocan tablas: systables, sysindexes, syscolumns inices closter: es un indice que en el sistema compacta y deja organizado funciona sobre un indice debe operarse en reportes para tablas que no tienen movimiento update statisttics medium dentro de las mejores practicas debe ser low,medium,hig y procedure -----que son distribuciones en los procedimietos de estadisticas : lee datos, o rganiza y distribuye con estas distribuciones guarda los planes de statistics medium: para todas las columnas que no tienen indices statistics high: el principal es la llame es la primera columna de un indice index, tambien cuando tengo dos indices que inician porla misma columna statistics lown: para las tablas que no tienen indices o forman parte de proc esos de indices compuestos borrar distribution de statistics update statistics low drop distributions update statistics low for table orders (order_num) drop distributions; ----------- logs monitorero de logs onstat -g seg : nos da onstat -g men onmode -F : liberar memoris libera segmentos que no estamos usando onstat -l : f:fee b backup c: currently u en uso A newly add L contains laste checkpoint onstat -D nos da infomacion de que esta en escritura o lectura tipos de bloqu e onstat -g sql0 :lista todos los sqls que estan corriendo

onstat -g ses todas las seciones numero de hilos que etamos usando y memoria onstat -g ses ej sesion revisar sort_0 hilos de procesos duros onstat -g sql: onstat -u: monitoreo de usuarios en flags una L esta haciendo una espera onstat -k estan candados en el candado en lista de esperas onmode -z sierra la sesion onstat -p : en ovlock todos los ovuserthreds ovbuff reviasr para referencia de aumento

cuando tenemos muchos segmenteos de memoria es necesario ampliarlos

Вам также может понравиться