Mostrando entradas con la etiqueta administración. Mostrar todas las entradas
Mostrando entradas con la etiqueta administración. Mostrar todas las entradas

jueves, 30 de julio de 2015

Instalación y administración Tomcat 7 en Windows

Instalación


Si quieres instalar Tomcat como ejecutable, no como servicio, en tu máquina windows.

Baja el fichero .zip correspondiente de 32 o 64 bits. Desde https://tomcat.apache.org/download-70.cgi

Descomprimelo en una carpeta. Por ejemplo: c:\tomcat7

Abre una consola de windows.

Establece las variables de entorno donde tengas instalado el jdk

set PATH=%PATH%;C:\Program Files\Java\jdk1.7.0_71\bin
set JAVA_HOME=C:\Archivos de programa\Java\jdk1.7.0_71

Dirigete a c:\tomcat7\bin y ejecuta startup.bat

Y ahora abre un navegador con la dirección: http:\\localhost:8080

Voila!

Si quieres parar Tomcat, en la misma consola de windows donde ejecutaste startup.bat, solo tienes que ejecutar shutdown.bat

Consola de administración

Edita el fichero c:\tomcat7\conf\tomcat-users.xml para que tenga la forma:


Accede a la siguiente dirección y cuando pida contraseña utiliza la definida en el anterior fichero:

http://localhost:8080/manager


Ampliación de memoria

Si tienes problemas de memoria al arrancar las aplicaciones, tienes que crear un fichero con nombre setenv.bat en el directorio c:\tomcat7\conf

set "CATALINA_OPTS=%CATALINA_OPTS% -Dfile.encoding=UTF8 -Xmx2048m -XX:MaxPermSize=512m"

Cambio de Puerto

Editar el fichero c:\tomcat\conf\server.xml cambiar el puerto 8080 por ejemplo por el 7001:


               < Connector port="7001" protocol="HTTP/1.1" connectionTimeout="20000"
               redirectPort="8443" />

Si además queremos tener dos tomcat arrancados en la misma máquina habremos de cambiar el puerto 8005 y el puerto 8009:

               < Server port="8015" shutdown="SHUTDOWN" />

               ....
               < Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />




martes, 27 de mayo de 2014

Script migración tablas sueltas

Script de apoyo para mover el contenido una serie de tablas de una base de datos a otra.
Toma el contenido de las tablas tabla1..tabla4 y lo vuelca en /tmp/fichero.dump sin tomar la estructura de la tabla.
Utiliza unas tablas auxiliares para guardar el contenido de las tablas que tienen relaciones con tabla1..tabla4.
Vacía las tablas tabla2_related1..tabla2_related3 con relaciones sobre las tablas que estamos moviendo.
Posteriormente vacía las tablas destino tabla1..tabla4 y despues las rellena con el contenido del fichero /tmp/fichero.dump
Por último restaura el contenido de las tablas con relaciones, utilizando la cópia almacenada en las tablas auxiliares.
Espero que os pueda servir de ayuda en alguna ocasión.


#Volcado de las tablas originales deseadas (primero las maestras luego las dependientes)
pg_dump -U -h -p --inserts --data-only -t tabla1  >  /tmp/fichero.dump
pg_dump -U -h -p --inserts --data-only -t tabla2 >> /tmp/fichero.dump
pg_dump -U -h -p --inserts --data-only -t tabla3 >> /tmp/fichero.dump
pg_dump -U -h -p --inserts --data-only -t tabla4 >> /tmp/fichero.dump

#Borrado de las auxiliares
psql -h -U -p -c "drop table schema.aux_tabla2_related1"
psql -h -U -p -c "drop table schema.aux_tabla2_related2"
psql -h -U -p -c "drop table schema.aux_tabla2_related3"

#Relleno de las auxiliares
psql -h -U -p -c "create table schema.aux_tabla2_related1 as select * from schema.tabla2_related1"
psql -h -U -p -c "create table schema.aux_tabla2_related2 as select * from schema.tabla2_related2"
psql -h -U -p -c "create table schema.aux_tabla2_related3 as select * from schema.tabla2_related3"

#Borrado de las relacionadas
psql -h -U -p -c "delete from schema.tabla2_related1"
psql -h -U -p -c "delete from schema.tabla2_related2"
psql -h -U -p -c "delete from schema.tabla2_related3"

#Borramos el contenido de las tablas deseadas
psql -h -U -p -c "delete from schema.dictionary"
psql -h -U -p -c "delete from schema.tabla4"
psql -h -U -p -c "delete from schema.tabla2"
psql -h -U -p -c "delete from schema.tabla1"

#Rellenamos las tablas deseadas
psql -h -U -p <  /tmp/fichero.dump
#Restauramos las relacionadas
psql -h -U -p -c "insert into schema.tabla2_related1 select * from schema.aux_tabla2_related1"
psql -h -U -p -c "insert into schema.tabla2_related2 select * from schema.aux_tabla2_related2"
psql -h -U -p -c "insert into schema.tabla2_related3 select * from schema.aux_tabla2_related3"


lunes, 30 de septiembre de 2013

Consulta de Bloqueos en PostgreSql > 9.2 y como matar procesos

Para las versiones de Postgres 9.2 o superiores podéis crear una vista que facilitará la consulta de los procesos que actualmente tiene bloqueos en vuestro sistema:

CREATE OR REPLACE VIEW public.procesos_bloqueantes(
    blocking_pid,
    blocking_user,
    blocking_query,
    blocked_pid,
    blocked_user,
    blocked_query,
    age)
AS
  SELECT kl.pid AS blocking_pid,
         ka.usename AS blocking_user,
         ka.query AS blocking_query,
         bl.pid AS blocked_pid,
         a.usename AS blocked_user,
         a.query AS blocked_query,
         to_char(age(now(), a.query_start), 'HH24h:MIm:SSs' ::text) AS age
  FROM pg_locks bl
       JOIN pg_stat_activity a ON bl.pid = a.pid
       JOIN pg_locks kl ON bl.locktype = kl.locktype AND NOT bl.database IS
         DISTINCT
  FROM kl.database AND NOT bl.relation IS DISTINCT
  FROM kl.relation AND NOT bl.page IS DISTINCT
  FROM kl.page AND NOT bl.tuple IS DISTINCT
  FROM kl.tuple AND NOT bl.virtualxid IS DISTINCT
  FROM kl.virtualxid AND NOT bl.transactionid IS DISTINCT
  FROM kl.transactionid AND NOT bl.classid IS DISTINCT
  FROM kl.classid AND NOT bl.objid IS DISTINCT
  FROM kl.objid AND NOT bl.objsubid IS DISTINCT
  FROM kl.objsubid AND bl.pid <> kl.pid
       JOIN pg_stat_activity ka ON kl.pid = ka.pid
  WHERE kl.granted AND
        NOT bl.granted
  ORDER BY a.query_start;

Una vez localizados los procesos que están produciendo el bloqueo y que sentencia están ejecutando, podemos tomar la decisión de eliminarlos si llevan demasiado tiempo en ejecución y no nos importa perder él resultado de la acción que estaban ejecutando. El identificador de proceso a matar es el "blocking_id" de la vista:

select pg_cancel_backend ( blocking_pid );

lunes, 3 de septiembre de 2012

Estadísticas de acierto de la cache

Es muy interesante saber en nuestra base de datos cuantas veces encontramos en la caché el resultado de las consultas. Si tenemos valores altos, seguro que no accedemos al disco a buscar los resultados y por lo tanto nuestra base de datos está funcionando bien.

Vamos a ver el porcentaje de acierto a nivel de base de datos:

SELECT d.datname, pg_database_size(d.datname), SUM(pg_stat_get_db_blocks_hit(d.oid)) / SUM(pg_stat_get_db_blocks_fetched(d.oid)) AS hit_rate
FROM pg_database d
GROUP BY d.datname
HAVING SUM(pg_stat_get_db_blocks_fetched(d.oid)) > 0

Pero aún más interesante es ver el resultado a nivel de tabla:

select t.schemaname, t.relname, heap_blks_hit*100/(heap_blks_hit+heap_blks_read) as BCHR
from pg_statio_user_tables t
where t.heap_blks_read > 0

Si tus tablas más accedidas tienen valores superiores a 95% todo va bien.


Sino revisa tus valores de "shared_buffers" y "effective_cache_size", si son correctos quizá tengas que revisar tus sentencias o aumentar tu memoria.

Referencias:
http://blog.kimiensoftware.com/2011/05/postgresql-vs-oracle-differences-4-shared-memory-usage-257

martes, 28 de agosto de 2012

Reemplazar cadena en ficheros recursivamente

Busca a partir del directorio, recursivamente en todos los ficheros y cambia "lo_que_busco" por "lo_cambio_por_esto":

for i in `grep -l -R "lo_que_busco" ./directorio`; do sed 's/lo_que_busco/lo_cambio_por_esto/g' -i $i; done;

Trucos ssh

Conexión sin contraseña a un servidor ssh:


En el servidor origen de la conexión:


$ ssh-keygen -t rsa


El contenido del fichero resultante ~/.ssh/id_rsa.pub, hay que añadirlo al final del fichero ~/.ssh/authorized_keys, del usuario con el que quiero conectarme en el servidor destino donde quiero conectarme.

Copiar la llave id_rsa.pub al servidor remoto a traves de: ssh_copy_id id_rsa.pub usuario_remoto@servidor_remoto


Nota: en el servidor destino tiene que estar activados los siguientes parámetros del /etc/ssh/sshd_config


RSAAuthentication yes
PubkeyAuthentication yes




Copiar directorios


Copiar un directorio remoto vía ssh, con compresión y recursividad

scp -rC usuario@servidor.com:/origen ./destino

miércoles, 8 de febrero de 2012

Monitorización Linux

Quien está conectado y que está haciendo
w [user_name]
17:24:24 up 88 days, 17:12, 5 users, load average: 0,09, 0,07, 0,08
USER TTY   FROM         LOGIN@ IDLE   JCPU  PCPU  WHAT
gme  pts/0 paco.bit.mad 09:35  0.00s  0.61s 0.00s w
wdev pts/1 fe.bit.mad   Fri10  5days  0.01s 0.01s -bash
gme  pts/2 fe.bit.mad   Fri11  27:06m 6.31s 6.28s ./gmeser
wdev pts/5 paco.bit.mad 09:35  7:48m  0.01s 0.01s -bash
gme  pts/7 fe.bit.mad   12:23  4:58m  0.04s 0.04s -bash

Otras herramientas de monitorización de actividad, memoria, uso de disco, cpu... http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html

lunes, 6 de febrero de 2012

Extraer permisos de un usuario

Si tienes una base de datos con un usuario y quieres copiar sus permisos en otro lugar, puedes utilizar la siguiente consulta, el resultado puedes ejecutarlo en otro lugar:

select 'grant ' || privilege_type || ' on table ' || table_schema || '.' || table_name || ' to ' || grantee || ';' from information_schema.role_table_grants where grantee='';