Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Dba PostgreSQL
Dba PostgreSQL
org
__________________________________________________________
PostgreSql
________________________________________
2010 Manual De Administracin de PostgreSql
1
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Clase de Administracin
PostgreSql
________________________________________
2010 Manual De Administracin de PostgreSql
2
Academia De Software Libre www.codigolibre.org
__________________________________________________________
NDICE
Dedicatoria..........................................................................................................5
Copyright.............................................................................................................6
Prefacio.................................................................................................................6
Qu se espera de un SGBD?...............................................................................7
Qu exigiremos a un SGBD?..............................................................................7
Gestin de los Recursos del kernel.......................................................................7
psql.......................................................................................................................8
Aplicaciones servidor...........................................................................................8
Arquitectura .........................................................................................................8
El proceso Postmaster..........................................................................................9
La memoria compartida.......................................................................................9
Almacenamiento fsico.........................................................................................9
Ficheros................................................................................................................9
Otros ficheros.......................................................................................................9
Directorios..........................................................................................................10
Creacin del cluster de bases de datos: initdb....................................................10
Creacin del cluster............................................................................................11
Modificacin de template1 + aadir extensiones-contrib..................................12
Puesta en marcha y parada del servidor.............................................................12
Internacionalizacin y localizacin....................................................................13
Ventajas..................................................................................................13
Para ver cmo est configurado en el SO ejecutar.............................................13
Procesamiento de instrucciones.........................................................................14
Gestin de transacciones....................................................................................15
Atomicidad (atomicity)...........................................................................15
Consistencia (consistency)......................................................................15
Aislamiento (isolation)............................................................................16
Persistencia (durability)..........................................................................16
Seguridad en PostgreSQL..................................................................................17
Seguridad en la manipulacin de los ficheros....................................................17
Respecto a las conexiones locales va sockets...................................................17
Seguridad en el acceso de los clientes................................................................18
Conexin local: usando los sockets del dominio Unix......................................18
Conexin remota sin encriptar usando TCP/IP (SSL y no SSL)........................19
Conexin remota encriptada SSL usando TCP/IP (solo SSL)...........................19
Esquema lgico..................................................................................................23
Creacin de roles (usuarios)...............................................................................24
Listando Usuarios..............................................................................................27
Modificando Usuarios.......................................................................................27
Permitir Usuario crear BD.................................................................................29
Cambiando Nombre a un Usuario......................................................................29
Cambiar contrasea...........................................................................................29
Eliminando Usuario............................................................................................29
Creando Grupo...................................................................................................29
Agregando o eliminando un Usuario de Grupo..................................................30
Viendo los Grupos..............................................................................................30
________________________________________
2010 Manual De Administracin de PostgreSql
3
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Re-Nombrando Grupo........................................................................................30
Eliminando Grupo..............................................................................................31
Creacin de tablespaces.....................................................................................31
Creacin de bases de datos.................................................................................32
Esquemas............................................................................................................33
Permisos.............................................................................................................34
Asignando Privilegios........................................................................................35
Quitando Privilegios...........................................................................................35
Cambiando EL propietario de una tabla.............................................................43
Listar los Objetos en Schema Public..................................................................44
Permisos y Seguridad en Schema.......................................................................45
Eliminando Schema............................................................................................45
Funciones de Schema.........................................................................................45
Esquemas especiales...........................................................................................46
Limitaciones.......................................................................................................46
Administrar privilegios de copia de seguridad...................................................46
Administrando desde GNU/Linux......................................................................48
Iniciando postmaster...........................................................................................49
Autentificacin de Usuarios...............................................................................50
Creacin de una base de datos............................................................................50
Acceso a la base de datos...................................................................................51
Bases de datos grandes.......................................................................................52
Tratamiento de problemas..................................................................................53
Tareas administrativas: Copias de seguridad y recuperacin.............................53
Copy...................................................................................................................53
Mantenimiento del fichero de seguimiento........................................................55
Copias de seguridad............................................................................................55
Copias de seguridad de ficheros del SO.............................................................56
Desventajas de este mtodo................................................................................56
Volcado SQL......................................................................................................56
Recuperacin con psql........................................................................................58
Recuperacin con pg_restore.............................................................................58
Scripts Basico de hacer Backup.........................................................................62
Crontab...............................................................................................................62
Qu es cron?..........................................................................................62
Iniciar cron..............................................................................................62
Usando cron.............................................................................................63
Ejecutando Cron con mltiples usuarios, comando crontab...................64
Controlando el acceso a cron...................................................................65
COMANDO chkconfig.....................................................................................66
Fallos en memoria secundaria (disco)................................................................67
Volcado en lnea y recuperacin PITR...............................................................67
Tareas administrativas: Vacuum ...................................................................69
AUTOVACUUM...............................................................................................70
Reindex...............................................................................................................70
Monitorizacion...................................................................................................71
________________________________________
2010 Manual De Administracin de PostgreSql
4
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Dedicatoria
Una mencin de forma especial para Antonio Perpin, Fundador del
Movimiento de Software Libre en Repblica Dominicana y en Amrica
Latina, persona de grandes principios y vastos conocimientos. No todo
hombre tiene el valor de aprender y mucho menos de ensear, por eso sea
siempre bendecido por su calidez y gran visin. El objeto ms noble que
puede ocupar el hombre es ilustrar a sus semejantes.
________________________________________
2010 Manual De Administracin de PostgreSql
5
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Copyright
Prefacio
En estas paginas se plasma de manera Teorico/Practico los conocimientos necesarios para
convertirse en un Administrador de Base de Datos, usando Postgresql; la finalidad es instruir de
manera interactiva todo lo que se debe saber para un manejo eficiente de Postgresql, y aplicarlos a
este y otros motores libres. Esta es una etapa de varias en este camino hacia la carrera profesional
de la administracin de base de datos y anlisis de estructuras de almacenamiento de
registros de datos.
________________________________________
2010 Manual De Administracin de PostgreSql
6
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Qu se espera de un SGBD?
De un Sistema de Gestin de Bases de Datos esperamos:
Permita a los usuarios crear otras bases de datos y especificar su esquema por medio de
algn lenguaje de definicin.
Ofrezca a los usuarios la capacidad de consultar los datos y modificarlos, usando para ello
un lenguaje de consulta y manipulacin.
Qu exigiremos a un SGBD?
Para optar por un buen SGBD debe estudiar su:
Disponibilidad: 7x24.
Aplicaciones clientes.
________________________________________
2010 Manual De Administracin de PostgreSql
7
Academia De Software Libre www.codigolibre.org
__________________________________________________________
psql:
Terminal interactivo de PostgreSQL. Es la herramienta cannica para la ejecucin de
sentencias SQL a travs del shell del SO. Es una herramienta de tipo frontend que permite
describir sentencias SQL, ejecutarlas y visualizar sus resultados. El mtodo de ingreso
puede ser mediante la insercin directa del cdigo en la consola, o la ejecucin de
sentencias dentro de un archivo de texto. Provee de diversos meta-comandos para la
ejecucin de las sentencias, as como diversas opciones tipo shell propias de la herramienta.
reindexdb: reindexa una base de datos.
vacuumdb: reorganiza y analiza una base de datos.
Aplicaciones servidor:
initdb: crea un cluster de base de datos.
ipcclean: libera la memoria compartida y los semforos de un servidor PostgreSQL.
pg_controldata: muestra informacin de control de un cluster de base de datos.
pg_ctl: inicia, para o reinicia un servidor PostgreSQL.
pg_resetxlog: reinicia el write-ahead log y otras informaciones de control de un
cluster de base de datos.
postgres: corre un servidor PostgreSQL en modo "single-user".
postmaster: servidor de base de datos PostgreSQL multiusuario.
Arquitectura
PostgreSQL funciona con una arquitectura Cliente/Servidor, un proceso servidor
(postmaster) y una serie de aplicaciones cliente que realizan solicitudes de acciones contra
la base de datos a su proceso servidor. Por cada una de estas aplicaciones cliente, el proceso
postmaster crea un proceso postgres.
El proceso Postmaster:
Es el proceso inicial. Gestiona los accesos multiusuario y multiconexion. Levanta la
memoria compartida. Esta al tanto de solicitudes de nuevas conexiones. Lanza procesos de
atencion de demanda, realizando las operaciones sobre la base de datos a solicitud de los
clientes. Realiza el enlazado con los archivos de datos, gestionando estos ficheros, donde los
ficheros
pueden pertenecer a varias bases de datos.
________________________________________
2010 Manual De Administracin de PostgreSql
8
Academia De Software Libre www.codigolibre.org
__________________________________________________________
La memoria compartida:
Gestiona los recursos entre procesos backend. Gestiona la cache del disco,
maneja otras estructuras internas. De esta manera podemos definir el concepto de
CLUSTER DE BASE DE DATOS, como una instancia de PostgreSQL, donde se lanza un
proceso postmaster, que puede gestionar varias bases de datos. En un servidor, pueden haber
varios cluster, cada uno tendra su postmaster, y cada postmaster escuchara por un puerto
diferente.
Nota: no confundir este concepto de cluster con los tipicos que se manejan en bases de
datos de base de datos en cluster o tablas en cluster.
Almacenamiento fisico:
En un servidor se crean uno o varios clusters de bases de datos. La estructura fisica del
cluster se crea con el programa initdb, con este programa se determina la ubicacion fisica y
el juego de caracteres.
Ficheros:
postgresql.conf: fichero de configuracion principal, contiene la asignacion a los
parametros que configuran el funcionamiento del servidor.
Otros ficheros:
postmaster.pid: se crea cuando el postmaster arranca, contiene el PID del proceso
postmaster.
________________________________________
2010 Manual De Administracin de PostgreSql
9
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Directorios:
base: las plantillas y las bases de datos. contiene un directorio por cada base de
datos, dentro hay un fichero por cada tabla o indice de una base de datos, los
numeros corresponden a los OIDs de las tablas o indices.
template0 (1): contiene las definiciones de las tablas del sistema, vistas, funciones y
tipos estandar. Nunca se debe modificar ni intentar conectarse a ella, ya que esta por
si template1 se corrompe.
template1 (N): base de datos plantilla para crear nuevas bases de datos, se puede
modificar su estructura, anadiendo tablas, indices, funciones, etc. Es la que se usara
como plantilla para crear otras bases de datos.
global: tablas e indices del catlogo comunes a todas las bases de datos.
catalogo compartido: pg_shadow (usuarios), pg_database, etc.
________________________________________
2010 Manual De Administracin de PostgreSql
10
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Ya vimos en un punto anterior cmo se crea un cluster de base de datos, por ejemplo, en
este curso, vamos a crear el siguiente cluster:
Con este proceso se han creado tres bases de datos: template0 (que ya se ha dicho que no se
debe modificar ni debemos conectarnos a ella), template1 y postgres.
Al terminar de crear el cluster nos responde que ya podemos iniciar el postmaster de este
cluster de dos modos:
$ postmaster -D $PGDATA
o
pg_ctl -D $PGDATA -l $PGLOG start
Lo hacemos del segundo modo, ahora, una vez arrancada la instancia, podemos conectarnos
desde nuestro servidor a la base de datos usando el psql:
$ pg_ctl stop
________________________________________
2010 Manual De Administracin de PostgreSql
11
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Hay que tener en cuenta ciertos aspectos antes de empezar a trabajar con nuestras bases de
datos.
template1 es una plantilla para crear otras bases de datos, conviene que, antes de crear
nuevas bases de datos, la completemos con todos aquellos elementos que consideremos que
deben estar en todas las bases de datos que creemos, lenguajes, mdulos opcionales
(tsearch2, lo, dblink, etc), tablas comunes, etc. Ms adelante veremos cmo se instalan estas
opciones.
va a ser postgres nuestra base de datos o la reservamos para pruebas o como plantilla y no
usamos template1?, vamos a crear ms bases de datos?
Para modificar template1 no hay ms que conectarse a ella y ejecutar los scripts de base de
datos que hagan falta.
Por ejemplo, las bases de datos se suelen crear sin lenguajes, no existe el plpgsql, para
instalarlo, ejecutamos desde el sistema operativo:
Pero adems, en el mundo del software libre se crea cdigo para aadir nuevas
funcionalidades. Estos mdulos los hemos aadido, por ejemplo, en la instalacin de
PostgreSQL en Windows, pero no en la de Linux, para poder instalarlos hay que ir al
directorio $PGSRC/contrib.
En $PGSRC/contrib hay un fichero README que indica el uso de cada una de estas
opciones.
Ejemplos de opciones que se tienen que instalar segn los requerimientos de las
aplicaciones:
La puesta en marcha del servidor se puede hacer de forma manual con dos comandos:
pg_ctl: facilidad para la puesta en marcha, parada y reconfiguracin del servidor. Hace uso
________________________________________
2010 Manual De Administracin de PostgreSql
12
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Operaciones:
start: puesta en marcha del servidor.
reload: envia al postmaster una senal SIGHUP, que provoca que recargue toda
la informacion de configuracion. Algunas opciones de configuracion requieren
parar el servidor.
Internacionalizacin y localizacin:
Internacionalizacin: proceso de desarrollo de software de forma que pueda ser usado en
distintas ubicaciones.
Localizacin: proceso de adaptacin de una aplicacin para que sea usada en una ubicacin
especfica.
Ventajas:
$ locale
$ locale -a
________________________________________
2010 Manual De Administracin de PostgreSql
13
Academia De Software Libre www.codigolibre.org
__________________________________________________________
$ initdb -E unicode
Se produce una conversin automtica entre servidor / cliente (en la tabla pg_conversion
estn las conversiones por defecto.
Procesamiento de instrucciones:
Se produce un dilogo bsico entre el proceso front-end (aplicacin) y el proceso back-end
(postgres), que consta bsicamente de los siguientes pasos:
4. Por ltimo la aplicacin solicita la recuperacin de los datos y el servidor responde con
los resultados de la instruccin.
Los bloques de buffers modificados se llaman "sucios" y se colocan en una lista sucia. La
lista sucia controla todas las modificaciones de datos que se hacen en la cach y que no se
han vaciado al disco. La lista sucia se vaca, por ejemplo, cuando se produce un punto de
control (checkpoint) o simplemente se llena la lista.
Si la instruccin es una consulta, el servidor siempre lee primero si tiene estos bloques de
datos en la cach, en caso contrario, los lee del disco y los copia a la cache, realizando esta
operacin tantas veces como sea necesario para ejecutar una instruccin.
Si la instruccin es una actualizacin de datos entran en juego tambin los ficheros de diario
(WAL) y los buffers de diario (buffers WAL). Por ejemplo, al ejecutar un Update de una
fila:
1. Mirar si los datos estn en los buffers compartidos y recuperar el valor antiguo.
2.Si no estn recuperalos de los ficheros de datos y ponerlos en los shared buffers.
________________________________________
2010 Manual De Administracin de PostgreSql
14
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Gestin de transacciones:
PostgreSQL cumple las reglas ACID:
1 Atomicidad (atomicity).
2 Consistencia (consistency).
3 Aislamiento (isolation).
4 Persistencia (durability).
Atomicidad:
La palabra se deriva de tomo, que significa indivisible; como indivisibles son cada una de
las operaciones contenidas dentro de una transaccin. Una transaccin es un bloque de
operaciones o instrucciones dirigido a modificar una base de datos en una determinada
direccin.
En realidad, lo importante aqu, es que se cumpla la regla de todo o nada. Si todas las
operaciones se realizan con xito, los resultados producidos por la transaccin se guardan en
la base de datos. Si alguna operacin falla, todas las operaciones son deshechas (rollback),
incluso aunque alguna operacin haya sido realizada con xito.
Solucin
En PostgreSQL podemos hacer que un grupo de sentencias SQL se ejecuten dentro de una
transaccin, encerrndolas entre las sentencias BEGIN y COMMIT. De esta forma
aseguramos que se ejecutan todas o ninguna. Si llegados a algn punto dentro de la
transaccin necesitamos deshacerla completamente, utilizamos ROLLBACK, en lugar de
COMMIT, y todos los cambios son deshechos.
Por otro lado, PostgreSQL trata cualquier sentencia aislada como si sta se ejecutara dentro
de una pequea transaccin; aunque no usemos BEGIN, cada sentencia incorpora
implcitamente un BEGIN y, si culmina con xito, un COMMIT, a este modo se le conoce
como "modo autoconfirmacin".
Consistencia:
Una base de datos es una herramienta para modelar y registrar una realidad cambiante. Sin
embargo, debe hacerlo consistentemente de acuerdo con unas reglas determinadas o
restricciones de integridad definidas. La realidad modelada as, puede ir cambiando al pasar
de un estado en el que cumple las reglas, a otro en el que tambin las cumple.
Si al ejecutar una transaccin, por el motivo que sea, se incumpliera alguna de estas reglas,
la transaccin no se llegara a completar. Esto garantiza que una base de datos siempre
permanezca en un estado vlido, es decir, consistente con las reglas.
________________________________________
2010 Manual De Administracin de PostgreSql
15
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Solucion:
not null
check
unique
primary key
foreign key, con dos tipos match full (completa) y match partial (si en alguna
columna no hay valores no se comprueba la integridad, aunque esta opcion no esta
implementada)
Solo las instrucciones de clave ajena son diferibles, el resto son inmediatas.
Aislamiento:
Los resultados de una transaccin que est siendo ejecutada, son invisibles a cualquier otra
transaccin hasta que la primera no haya sido completada con xito. La ejecucin no
perturba a otras transacciones que se ejecuten concurrentemente.
Solucin:
Frente a otro modelos tradicionales que controlan el acceso concurrente a los datos a travs
de bloqueos, PostgreSQL utiliza un modelo denominado Multiversion Concurrency Control
(MVCC), segn el cual, al consultar la BD, cada transaccin ve una instantnea de la BD tal
como era hace un cierto tiempo (una versin de la BD) y no el estado actual de la BD. Este
mecanismo evita que una transaccin pueda ver datos inconsistentes modificados por otra.
Aislando las transacciones que operan concurrentemente en distintas sesiones, un lector no
necesita esperar a un escritor; y un escritor no necesita esperar a un lector.
Persistencia o Durabilidad:
La durabilidad garantiza que los efectos resultantes de una transaccin, una vez ha sido
completada con xito, permanecen en la base de datos para siempre, incluso cuando se
puedan producir posteriormente fallos de cualquier clase.
Por ejemplo, si durante una transaccin se produce un apagado del servidor, una vez
reiniciado el servidor, un sistema que lleve un registro de transacciones realizadas,
advertira rpidamente que existe una sin completar, finalizndola correctamente.
Solucin:
Brevemente explicada, consiste en que los cambios en los ficheros de datos (tablas e
ndices) slo se materializan cuando existe previamente en el disco un registro en el que
estn anotados dichos cambios. Siguiendo este procedimiento, no es necesario enviar
pginas al disco cada vez que una transaccin se completa. Esta tcnica no slo mejora el
rendimiento del servidor, sino que ante un fallo de la mquina, ser posible recuperar la BD
a partir de ese registro: cualquier cambio no aplicado a las pginas de datos en el disco ser
________________________________________
2010 Manual De Administracin de PostgreSql
16
Academia De Software Libre www.codigolibre.org
__________________________________________________________
nuevamente hecho desde el log (roll-forward recovery, o REDO) mientras que los posibles
cambios realizados en pginas de disco por transacciones incompletas, podrn ser deshechos
manteniendo la integridad y la consistencia de los datos (roll-backward recovery, o UNDO).
1. Se escriben los datos del buffer WAL en los ficheros de diario WAL.
Entonces, los datos de los buffers no se han escrito en disco todava, pero los del diario si,
as los datos de la transaccin nunca se pierden.
Seguridad en PostgreSQL:
Definicin de los privilegios para acceder a los objetos de la base de datos a los usuarios
PostgreSQL.
Ver el directorio /tmp, donde existe un fichero .s.PGSQL.5432 que se crea cuando arranca
el postmaster, los permisos de este fichero son 777, cualquier usuario del SO se puede
conectar. Adems hay un .s.PGSQL.5432.lock que slo puede leer postgres.
________________________________________
2010 Manual De Administracin de PostgreSql
17
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Los permisos de este socket se pueden configurar en postgresql.conf con los parmetros
unix_socket_directory, unix_socket_group y unix_socket_permission.
Es importante poder definir desde qu equipos se pueden conectar a nuestra base de datos,
as como poder definir qu usuarios y a qu bases de datos se pueden conectar.
Se trata de editar una serie de reglas que se irn procesando de arriba abajo, cuando se
encuentre una regla que cumpla la conexin, se ejecutar lo que ponga en el mtodo.
base_datos:
SAMEUSER: solo a bases de datos que su nombre sea el mismo que el usuario que se
conecta.
SAMEROLE: solo a bases de datos que su nombre sea el mismo que el role que se conecta.
@fichero: se permite la conexin a las bases de datos incluidas en el fichero, que debe estar
en el mismo directorio que pg_hba.conf.
usuario:
@fichero: se permite la conexin de los roles incluidos en el fichero, que debe estar en el
mismo directorio que pg_hba.conf.
Mtodo-Autenticacin:
PASSWORD: se solicita palabra de paso sin encriptar, las palabras de paso se almacenan
en la tabla pg_authid y pueden estar cifradas o no segn como se creara el role.
________________________________________
2010 Manual De Administracin de PostgreSql
18
Academia De Software Libre www.codigolibre.org
__________________________________________________________
MD5: palabra de paso con el mtodo de encriptacin md5, y se almacena tambin con este
mtodo. Es el mtodo recomendado por PostgreSQL. Se obtiene un cifrado a partir de la ID
de usuario y la palabra de paso, el cliente solicita una semilla al servidor y as se obtiene un
segundo cifrado que es envado al servidor, en el servidor se utiliza la palabra de paso
almacenada, el ID del usuario (la obtiene de la conexin) y la semilla para obtener un
cifrado
similar y los compara.
Cambio-usuario: el sistema mira el fichero pg_ident.conf, y busca una fila donde est la
correspondencia llamada cambio-usuario y se corresponda con el usuario conectado al
SO, haciendo la conexin a la BD con el usuario con el usuario de la columna usuario-pg.
Requiere instalar PostgreSQL con la opcin SSL, crear los ficheros de firmas y claves y
________________________________________
2010 Manual De Administracin de PostgreSql
19
Academia De Software Libre www.codigolibre.org
__________________________________________________________
SSL tiene que estar instalado en el servidor y en los clientes que se conecten.
El servidor busca en $PGDATA los ficheros server.key (clave privada del servidor, que si
est protegida en el arranque. Hay otro fichero server.crt.
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost', '*' = all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
________________________________________
2010 Manual De Administracin de PostgreSql
20
Academia De Software Libre www.codigolibre.org
__________________________________________________________
/***Queremos que acepte coneccion desde cualquier IP y cualquier usuario pero solo para la DB
sacademico***/
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host sacademico all 0.0.0.0/0 password
--Comprobemos la coneccion
[168:5432/mexy@sacademico][]#
[192:5432/jparedes@sacademico][]>
________________________________________
2010 Manual De Administracin de PostgreSql
21
Academia De Software Libre www.codigolibre.org
__________________________________________________________
/***Aqui especificamos que aceptara coneccion a cualquier DB y de cualquier ip pero siempre con
el usuario mexy'.***/
--Hagamos la coneccion
[192:5432/mexy@sacademico][]#
--Chevere
--Lo mismo pero con diferente IP y DB.
[168:5432/mexy@HR][]#
/***Ahora especificaremos una sola IP(en este caso cualquier IP) con cualquier DB y/o usuario
pero con metodo password.***/
--Probemos
[10:5432/mexy@sacademico][]>
--Nitido!
/*** Practica***/
--Realiza una conexion remota desde tu maquina, con un usuario, IP especifico y el metodo
password.
________________________________________
2010 Manual De Administracin de PostgreSql
22
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Esquema lgico:
Concepto de Cluster de bases de datos en PostgreSQL:
Repositorio que engloba un conjunto de bases de datos, que contienen objetos que se pueden
guardar en distintos tablespaces y un conjunto de usuarios que se conectan al cluster.
Una base de datos engloba un conjunto de esquemas, los cuales tienen un usuario
propietario. En los esquemas es donde se crean los objetos (tablas, ndices, procedimientos,
vistas, etc.).
Con lo que tenemos aqu los tres elementos principales a nivel lgico en un cluster:
Bases de datos: agrupaciones de esquemas. Por defecto, siempre hay tres bases de datos
creadas, template0, template1 y postgres.
Tablespaces: ubicaciones alternativas a la que por defecto tiene el cluster. Por defecto no se
crea ninguno.
Todos los usuarios son comunes a las bases de datos del cluster, se pueden conectar con
cualquiera de las bases de datos. En este punto, las bases de datos se comportan como
esquemas de Oracle.
Las bases de datos son independientes entre ellas, no se pueden ver objetos de una base de
datos desde otra base de datos, excepto si se usan dblinks. Esto marca cmo se deben crear
las bases de datos:
Si es un servidor de proyectos con recursos comunes: una nica base de datos y distintos
esquemas para cada proyecto.
/****Ejemplo****/
[[local]:5432/jparedes@HR] [] # \s
________________________________________
2010 Manual De Administracin de PostgreSql
23
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Verificamos el mismo:
--Siqueremos agregar que cada consulta nos revuelva el tiempo en ejecucion en una
session:
[[local]:5432/postgres@sacademico] [] # \timing
--Desactivar el AUTOCOMMIT:
--Verificar:
[[local]:5432/postgres@sacademico] [] # \set
AUTOCOMMIT = 'off'
PROMPT1 = '[%m:%>/%n@%/] [%x] %# '
PROMPT2 = '%/%R%# '
PROMPT3 = '>> '
VERBOSITY = 'default'
VERSION = 'PostgreSQL 8.4.4 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC)
4.1.2 20080704 (Red Hat 4.1.2-46), 32-bit'
DBNAME = 'sacademico'
USER = 'postgres'
PORT = '5432'
ENCODING = 'UTF8'
HISTSIZE = '5000'
Los roles son globales al cluster, se almacenan en la tabla del catlogo pg_authid y se
pueden consultar en las vistas pg_user y pg_roles.
________________________________________
2010 Manual De Administracin de PostgreSql
24
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Opciones de conexin:
-h, --host=ANFITRIN nombre del servidor o directorio del socket
-p, --port=PUERTO puerto del servidor
-U, --username=NOMBRE nombre de usuario con el cual conectarse
(no el usuario a crear)
-W, --password pedir contrasea para conectarse
Si no se especifican -s, -S, -d, -D, -r, -R o el ROL, se preguntar
interactivamente.
El comando CREATE USER es ahora un alias de CREATE ROLE, pero con la opcin
LOGIN por defecto.
/****Ejemplo****/
--Primero creamos un usuario:
/***Practica***/
--Explique las opciones utilizadas anteriores y luego cree un usuario que no pueda
________________________________________
2010 Manual De Administracin de PostgreSql
25
Academia De Software Libre www.codigolibre.org
__________________________________________________________
/***Practica***/
CREATE USER:
Tambien puede utilizar el comando CREATE USER SQL, que tiene varias opciones
disponibles con el comando createuser.
Forma Simple:
Creara un usuario con ninguna contrasea ni privilegios adicionales. Tambien puede agregar
un usuario a un grupo ya existente y especificar una fecha en la que la contrasea del
usuario expirara. El sysid es como el numero uid de UNIX y postgres tomara un valor
predeterminado adecuado.
Desde el Shell:
CREATEUSER jp
/****Ejemplo****/
________________________________________
2010 Manual De Administracin de PostgreSql
26
Academia De Software Libre www.codigolibre.org
__________________________________________________________
/***Practica***/
Listando Usuarios:
Puedes ver los usuarios en el servidor mediante la seleccion de la tabla de sistema
pg_shadow. Si usted no es un super usuario, no tendra permiso para acceder a esta tabla y
tendra que acceder a la vista pg_user lugar, que es identico, pero muestra la contrasea
como estrellas.
Modificando Usuarios:
Si desea cambiar un usuario puede utilizar el comando SQL ALTER USER, que es similar
al comando CREATE USER excepto que usted no puede cambiar el sysid.
--Creacion de Roles:
________________________________________
2010 Manual De Administracin de PostgreSql
27
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Usuario de Orange
CREATE ROLE orange
WITH LOGIN PASSWORD 'orange'
IN ROLE General;
________________________________________
2010 Manual De Administracin de PostgreSql
28
Academia De Software Libre www.codigolibre.org
__________________________________________________________
[[local]:5432/postgres@postgres] [] # \du
[[local]:5432/postgres@postgres] [] # \dg
Cambiar contrasea:
template1=# ALTER USER colin WITH PASSWORD 'letmein';
ALTER USER
Comprobamos los Cambios y vemos los cambios: En la tabla pg_user
Eliminando Usuario:
Al igual que la creacion de usuarios, existen dos formas de eliminar los usuarios, utilizando
la lnea de comandos o SQL. En la lnea de comandos usariamos:
Desde el Shell
$ dropuser alice
DROP USER
Desde SQL
Creando Grupo:
Los grupos son totalmente opcionales en postgresql. Solo se usan para simplificar la
concesion y revocacion de privilegios para el administrador db, y los usuarios no tienen que
ser un miembro de ningun grupo.
________________________________________
2010 Manual De Administracin de PostgreSql
29
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Si quisieramos crear un grupo con alice como miembro inicial, se puede utilizar:
template1=# CREATE GROUP sales WITH USER alice;
CREATE GROUP
/****Ejemplo****/
--Creando Grupos:
/****Ejemplo****/
La columna grolist muestra una lista de identificadores de usuario que estan en el grupo. Si
desea ver los nombres de usuario en un grupo en particular se puede utilizar:
Re-Nombrando Grupo:
ALTER GROUP groupname RENAME TO newname
________________________________________
2010 Manual De Administracin de PostgreSql
30
Academia De Software Libre www.codigolibre.org
__________________________________________________________
/****Ejemplo****/
--Vamos a renombrar un grupo:
Eliminando Grupo:
template1=# DROP GROUP presales;
/****Ejemplo****/
--Eliminando Grupo:
/***Practica***/
Creacion de tablespaces:
Si queremos especificar ubicaciones alternativas para determinadas bases de datos o tablas,
por ejemplo, queremos que ciertas tablas estn en otros discos distintos a los que se
encuentran por defecto, debemos crear tablespaces.
Directory: se deben indicar trayectorias absolutas y el propietario del directorio debe ser el
usuario con el que se ha instalado PostgreSQL.
/****Ejemplo****/
--Trabajando con TableSpace:
________________________________________
2010 Manual De Administracin de PostgreSql
31
Academia De Software Libre www.codigolibre.org
__________________________________________________________
...
--Queremos dos simplemente, uno para los datos y otro para los indices:
SET default_tablespace=TS_Pomavid_Datos;
[[local]:5432/postgres@postgres] [] # SELECT
spcname,spclocation,pg_tablespace_size(spcname)/1024 "Tamao MB"
FROM pg_tablespace
WHERE spclocation LIKE '/var/lib/pgsql/data/tablespace/tablespaces_datos%';
________________________________________
2010 Manual De Administracin de PostgreSql
32
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Opciones de conexin:
-h, --host=ANFITRIN nombre del servidor o directorio del socket
-p, --port=PUERTO puerto del servidor
-U, --username=USUARIO nombre de usuario para la conexin
-W, --password preguntar la contrasea
Si no se especifica, se crear una base de datos con el mismo nombre que el
usuario actual.
/****Ejemplo****/
--Desde el Shell:
--Desde PsqL:
Esquemas:
Las bases de datos se organizan mediante esquemas, contenedores lgicos de objetos de
base de datos (tablas, vistas, procedimientos, etc.), bsicamente son un espacio de nombres.
Es caracterstico de los esquemas:
Tienen un propietario.
Permiten el uso de la base de datos por multiples usuarios sin interferencias.
Permiten que se puedan instalar aplicaciones realizadas por terceros si que existan
colisiones en los nombres de los objetos.
Para poder ver objetos de un esquema, debe usarse la notacin esquema.objeto ya
que en PostgreSQL no existe el concepto de sinnimos como en Oracle.
________________________________________
2010 Manual De Administracin de PostgreSql
33
Academia De Software Libre www.codigolibre.org
__________________________________________________________
/****Ejemplo****/
--Una vez creado el Schema todo objeto debe ser creado asi:
--**************Schema.Objeto**************
Permisos
Todos los objetos (tablas, vistas y secuencias) tienen un propietario, que es la persona que lo
creo. El propietario o un superusuario, puede establecer permisos en el objeto. Los permisos
se compone de un nombre de usuario o grupo y un conjunto de derechos. Estos derechos
descritos en la tabla de abajo.
________________________________________
2010 Manual De Administracin de PostgreSql
34
Academia De Software Libre www.codigolibre.org
__________________________________________________________
sales=# \dp
Asignando Privilegios:
GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES |
TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] tablename [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTI
Quitando Privilegios:
REVOKE INSERT UPDATE DELETE ON TABLE suppliers FROM bob CASCASE
/****Ejemplo****/
[[local]:5432/postgres@HR] [] # \d
List of relations
Schema | Name | Type | Owner
--------+-----------------------+----------+----------
public | countries | table | postgres
public | departments | table | postgres
public | employees | table | postgres
public | job_history | table | postgres
public | jobs | table | postgres
public | locations | table | postgres
public | regions | table | postgres
public | regions_region_id_seq | sequence | postgres
(8 rows)
--Para cambiar el dueo de una tabla, de esta manera usted puede tener todos los privilegios
sobre un objeto:
[[local]:5432/postgres@HR] [] # \d
List of relations
Schema | Name | Type | Owner
--------+-----------------------+----------+----------
public | countries | table | jparedes
________________________________________
2010 Manual De Administracin de PostgreSql
35
Academia De Software Libre www.codigolibre.org
__________________________________________________________
[[local]:5432/jparedes@HR] [] >
--Vamos otorgar privilegios al usuario jparedes para hacer SELECT sobre la tabla
employees;
--como hicimos login con jparedes que no es el dueo ni tiene privilegios sobre la Bases
Datos HR,
--Tenemos que hacer login con el dueo del objeto o el DBA:
first_name | salary
------------+--------
John | 14000
(1 row)
--Hacer pruebas:
--Ahora cualquira de los usuarios que estan en ese ROLE puede hacer SELECT sobre las
tablas del Schema HR:
________________________________________
2010 Manual De Administracin de PostgreSql
36
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Hacer pruebas:
--Hacer pruebas:
--Prueba:
________________________________________
2010 Manual De Administracin de PostgreSql
37
Academia De Software Libre www.codigolibre.org
__________________________________________________________
GRANT
--Prueba:
[[local]:5432/hterrero@sacademico] [] > SELECT * from sacademicoschema.cursos limit 2;
id_curso | curso | costo | fecha_registro | quien_registro
-----------+---------------------------------+--------+--------------------------+-----------
1 | Diplomado GNU/Linux | 3500 | 2009-08-05 21:57:24 | admin
2 | Unixs(Solaris*Aix*Hp-Ux) | 3500 | 2009-08-05 21:57:31 | admin
(2 rows)
--Prueba:
--Prueba:
--Cambiamos de session:
--Resultado:
________________________________________
2010 Manual De Administracin de PostgreSql
38
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Cambio de ROLE:
--Resultado:
--Verifico:
--Luego vemos informacion sobre los permisos de los objetos exists, no tenemos:
[[local]:5432/falmonte@HR] [] > \z
________________________________________
2010 Manual De Administracin de PostgreSql
39
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+----------------------------+---------------+----------------------+--------------------------
public | countries | table | |
public | departments | table | |
public | employees | table | |
public | job_history | table | |
public | jobs | table | |
public | locations | table | |
public | pepe | sequence | |
public | regions | table | |
public | regions_region_id_seq | sequence | |
(9 rows)
--No tenemos ningunos vamos a otorgar algunos privilegios al ROLE coronel, en el cual se
encuentra el usuario falmonte:
--Prueba:
--Luego vemos informacion sobre los permisos de los objetos exists ya aplicados:
[[local]:5432/falmonte@HR] [] > \z
Access privileges
Schema | Name | Type | Access privileges | Column access
privileges
----------+--------------------------+---------+-------------------------------+--------------------
public | countries | table | postgres=arwdDxt/postgres |
________________________________________
2010 Manual De Administracin de PostgreSql
40
Academia De Software Libre www.codigolibre.org
__________________________________________________________
: coronel=r/postgres
: cnunez=w/postgres
: arodriguez=d/postgres
: general=arwdDxt/postgres
public | departments | table | |
public | employees | table | |
public | job_history | table | |
public | jobs | table | |
public | locations | table | |
public | pepe | sequence | |
public | regions | table | |
public | regions_region_id_seq | sequence | |
(9 rows)
--Verificamos:
[[local]:5432/falmonte@HR] [] > \z
Access privileges
Schema | Name | Type | Access privileges | Column access
privileges
----------+---------------------------+------------+-------------------------------------+----------------
public | countries | table | postgres=arwdDxt/postgres |
: coronel=r/postgres
: cnunez=w/postgres
: arodriguez=d/postgres
: general=arwdDxt/postgres
public | departments | table | |
public | employees | table | |
public | job_history | table | |
public | jobs | table | |
public | locations | table | postgres=arwdDxt/postgres |
: coronel=a*r*w*d*D*x*t*/postgres
public | pepe | sequence | |
public | regions | table | |
public | regions_region_id_seq | sequence | |
(9 rows)
/***Practica***/
--Nota: Si queremos eliminar algunos objetos o Bases Datos no debe existir ningun ROLE
asociado al mismo:
________________________________________
2010 Manual De Administracin de PostgreSql
41
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Revocamos todos los privilegios al usuario acolon sobre la tabla countries de la Bases
Datos HR:
--Prueba:
--Prueba:
name
-----------
Argentina
Australia
Belgium
(3 rows)
--De igualmenare solo tenemos privilegios de hacer consulta sobre esa columna
--si tratamos de actualizar nos dira:
________________________________________
2010 Manual De Administracin de PostgreSql
42
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Prueba:
[[local]:5432/postgres@HR] [] # \dp
Access privileges
Schema | Name | Type | Access privileges | Column access
privileges
----------+----------------------------+-----------+----------------------------------+-----------------
public | countries | table | postgres=arwdDxt/postgres | name:
: acolon=rw/postgres
public | departments | table | |
public | employees | table | |
public | job_history | table | |
public | jobs | table | |
public | locations | table | |
public | regions | table | |
public | regions_region_id_seq | sequence | |
(8 rows)
--Prueba:
________________________________________
2010 Manual De Administracin de PostgreSql
43
Academia De Software Libre www.codigolibre.org
__________________________________________________________
test=# \dv
Una ruta de busqueda se mantiene para cada conexion de base de datos, para cambiar la ruta
de busqueda uso search_path SET ...:
Este cambio solo tendra efecto despues de volver a conectarse a la base de datos. Para
continuar con los ejemplos anteriores, el establecimiento de la ruta de busqueda a la barra,
foo significa ahora info bar mesa seran seleccionados por defecto:
test=# \d info
________________________________________
2010 Manual De Administracin de PostgreSql
44
Academia De Software Libre www.codigolibre.org
__________________________________________________________
or
Una vez que el permiso USAGE ha sido concedida, privilegios en tanto existentes como de
nueva creacion, los objetos de esquema se debe conceder de forma explicita:
Si el uso es revocado, ni objetos personales, incluidos los que el usuario tiene privilegios en
adelante, se puede acceder. Si el uso se concede de nuevo, cualquier privilegios anteriores se
reactiva automaticamente sobre el objeto.
Eliminando Schema:
Forma Simple:
Funciones de Schema:
* Current_schema ()
Devuelve el nombre del esquema actual (esquema por primera vez en la ruta de
busqueda), segun lo establecido por search_path SET... Tenga en cuenta que se resolveran
en el primer esquema existente en la ruta de busqueda, no necesariamente el primero. Si no
hay un esquema se encuentra, se devuelve NULL.
* Current_schemas (boolean)
Devuelve todos los esquemas en la ruta de busqueda como una matriz, si se llama con
TRUE, esquemas implicitos (esquemas especiales como pg_catalog que se aaden a la ruta
de busqueda de forma automatica si no se especifica explicitamente) se devuelven.
________________________________________
2010 Manual De Administracin de PostgreSql
45
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Esquemas especiales
Cada base de datos PostgreSQL contiene una serie de esquemas especiales requeridas por el
servidor y que no puede ser suprimida o alterada. Todos comienzan con pg_. Tenga en
cuenta que los nombres de esquema a partir de pg_ no estan permitidos.
* Pg_catalog: Contiene las tablas del sistema, las funciones y puntos de vista explotacion
de meta-informacion sobre la base de datos.
* Pg_temp_x: Contiene las tablas temporales que solo son visibles para una conexion de
base de datos concreta
* Pg_toast: Contiene manteca y dulces surtidos.
Limitaciones
Actualmente no es posible la "transferencia" objetos entre esquemas. soluciones posibles:
* Uso
para transferir los datos y recrear todas las restricciones asociadas, indices, etc secuencias
manualmente.
________________________________________
2010 Manual De Administracin de PostgreSql
46
Academia De Software Libre www.codigolibre.org
__________________________________________________________
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Ejecutalo, es muy simple. Si desea activa los privilegios de uso de este formulario:
Script Bash Para Proporcionar acceso de solo lectura para cada tabla en la base de datos
PostgreSQL:
#!/bin/sh
#
# Proporcionar acceso de solo lectura en base de datos PostgreSQL
# Use: ./pgaccess $database $username
________________________________________
2010 Manual De Administracin de PostgreSql
47
Academia De Software Libre www.codigolibre.org
__________________________________________________________
done
Como se puede ver en la actualidad hay dos variables necesarias para ejecutar el script que
son base de datos y nombre de usuario. El script anterior debe ejecutarse en el siguiente
formato. El nombre de la secuencia de comandos para pgaccess.sh eso es lo que se utiliza en
el ejemplo siguiente.
Basta con sustituir $ base de datos con el nombre de la base de datos que estan
proporcionando el acceso y reemplazar $ nombre de usuario con el nombre del usuario que
se facilitara el acceso SELECT a la base de datos PostgreSQL.
Atencion
Debe usted asegurarse de que su base de datos no se
actualiza durante su backup. Si es necesario, pare el
postmaster, edite los permisos del fichero
/usr/local/pgsql/data/pg_hba.conf para permitirle
a usted solo su uso, y relance de nuevo postmaster.
Si esta usted actualizando un sistema existente, mate ahora el servidor de la base de datos.
Teclee:
$ ps ax | grep postmaster
Esto deberia listar los numeros de proceso para una serie de procesos, de un modo similar a:
Teclee la siguiente lnea, reemplazando pid con el identificador (id) del proceso postmaster
(263 en el caso anterior). (No utilice el id del proceso "grep
postmaster".) (N. del T. tambien puede hacerlo con la lnea
que le dara la misma salida, pero sin incluir la lnea correspondiente al mismo proceso
"grep". Fin de la N. del T.)
$ kill pid
$ /etc/rc.d/init.d/postgres.init stop
funcione correctamente para parar la base.
________________________________________
2010 Manual De Administracin de PostgreSql
48
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Existe una coleccion de catalogos del sistema en cada servidor. La misma incluye una clase
(pg_user) que contiene una instancia para cada usuario valido en Postgres. La instancia
especifica un conjunto de privilegios sobre Postgres, como la posibilidad de actuar como
superusuario en Postgres, la posibilidad de crear/destruir bases de datos y la posibilidad de
actualizar los catalogos del sistema. Un usuario de Unix no puede hacer nada con Postgres
hasta que se instale una instancia apropiada en dicha clase. Puede encontrarse mas
informacion sobre los catalogos del sistema ejecutando consultas sobre las clases
apropiadas.
Iniciando postmaster
No le puede suceder nada a una base de datos a menos que este corriendo el proceso
postmaster. Como administrador, hay una serie de cosas que debe recordar antes de iniciar
postmaster. Vea las secciones de instalacion y configuracion en este mismo manual. De
todos modos, si ha unstalado Postgres siguiendo las instrucciones de instalacion al pie de la
letra, lo unico que tendra que hacer para iniciar el proceso postmaster es introducir esta
simple orden:
% postmaster
% postmaster -S
y postmaster sera "S"ilencioso. Observe que al no haber el signo ampersand ("&") al final
del ultimo ejemplo, no se ejecuta como proceso de fondo.
Seguridad:
Proteccion de los ficheros de la base de datos. Todos los ficheros almacenados en la base
de datos estan protegidos contra escritura por cualquier cuenta que no sea la del
superusuario de Postgres.
Las conexiones de los clientes al servidor de la base de datos estan permitidas, por
defecto, unicamente mediante sockets Unix locales y no mendiante sockets TCP/IP. Ha de
arrancarse el demonio con la opcion -i para permitir la conexion de clientes no locales.
Las conexiones de los clientes se pueden restringir por direccion IP y/o por nombre de
________________________________________
2010 Manual De Administracin de PostgreSql
49
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Autentificacion de Usuarios:
Autentificacion es el proceso mediante el cual el servidor de la base de datos y el postmaster
se aseguran de que el usario que esta solicitando acceso a la base de datos es en realidad
quien dice ser. Todos los usarios que quieren utilizar Postgres se comprueban en la tabla
pg_user para asegurarse que estan autorizados a hacerlo. Actualmente, la verificacion de la
identidad del usuario se realiza de distintas formas:
Un demonio que se lanza desde la shell del usuario anota el id original del usuario antes
de realizar un setuid al id del usuario postgres. El id original del usuario se emplea como
base para todo tipo de comprobaciones.
Desde la red
Si Postgres se instala como distribuido, el acceso al puerto TCP del postmaster esta
disponible para todo el mundo. El ABD configura el fichero pg_hba.conf situado en el
directorio PG_DATA especificando el sistema de autentificacion a utilizar en base al equipo
que realiza la conexion y la base de datos a la que se conecta. Ver pg_hba.conf(5) para
obtener una descripcion de los sistemas de autentificacion disponibles. Por supuesto la
autentificacion basada en equipos no es perfecta incluso en los sistemas Unix. Es posible,
para determinados intrusos, enmascarar el equipo de origen. Estos temas de seguridad estan
fuera del alcance de Postgres.
% createdb nombredb
Postgres le permite crear cualquier numero de bases de datos en una maquina dada, y usted
se convierte automaticamente en el administrador de la base de datos que acaba de crear.
Los nombres de las bases de datos han de comenzar por un caracter alfabetico, y su longitud
esta limitada a 31 caracteres. No todos los usuarios estan autorizados para convertirse en
administradores de bases de datos. Si Postgres rechaza la orden de crear bases de datos, es
que necesita que el administrador del sistema le garantice derechos para crear las bases de
datos. Consulte a su administrador de sistemas si le ocurre eso.
________________________________________
2010 Manual De Administracin de PostgreSql
50
Academia De Software Libre www.codigolibre.org
__________________________________________________________
/****Ejemplo****/
/*********Shell***************/
--Si entramos al directorio data/base y queremos el oids para cual Bases Datos corresponde:
[postgres@jp base]$pwd
/var/lib/pgsql/data/base
[postgres@jp base]$ls
1 11563 11564 27369 27627 pgsql_tmp
--Comando a utilizar:
[postgres@jp ~]$oid2name
All databases:
Oid Database Name Tablespace
----------------------------------------
27627 HR pg_default
16428 poma ts_pomavid_datos
16411 pomavid ts_pomavid_datos
11564 postgres pg_default
27369 sacademico pg_default
11563 template0 pg_default
1 template1 pg_default
Puede que quiera ejecutar el programa psql, para probar los ejemplos de este manual. Puede
activarlo para la base de datos nombredb escribiendo la orden:
% psql nombredb
nombredb=>
________________________________________
2010 Manual De Administracin de PostgreSql
51
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Atencion
Postgres proporciona dos utilidades para realizar las copias de seguridad de su sistema:
pg_dump para copias de seguridad de bases de datos individuales y pg_dumpall para
realizar copias de seguridad de toda la instalacion de una sola vez.
La copia de seguridad de una sola base de datos puede realizarse usando la siguiente orden:
Esta tecnica puede usarse para mover bases de datos a una nueva localizacion y para
renombrar bases de datos existentes.
Como pg_dump escribe en stdout, puede usar las herramientas *nix para sortear estos
posibles problemas:
la recuperamos con:
% createdb nombredb
% gunzip -c nombrefichero.dump.gz | psql nombredb
Use split:
y lo recuperamos con:
________________________________________
2010 Manual De Administracin de PostgreSql
52
Academia De Software Libre www.codigolibre.org
__________________________________________________________
% createdb nombredb
Tratamiento de problemas :
El postmaster presenta ocasionalmente mensajes que pueden ser de ayuda en la
solucin de problemas. Si desea ver mensajes de depuracin de postmaster, puede iniciarlo
con la opcin -d y redirigir la salida a un fichero de registro:
% postmaster -S
Copy
[[local]:5432/postgres@postgres][]# \h COPY
Command: COPY
Description: copy data between a file and a table
Syntax:
COPY tablename [ ( column [, ...] ) ]
FROM { 'filename' | STDIN }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ]
[ CSV [ HEADER ]
[ QUOTE [ AS ] 'quote' ]
[ ESCAPE [ AS ] 'escape' ]
[ FORCE NOT NULL column [, ...] ]
COPY { tablename [ ( column [, ...] ) ] | ( query ) }
________________________________________
2010 Manual De Administracin de PostgreSql
53
Academia De Software Libre www.codigolibre.org
__________________________________________________________
TO { 'filename' | STDOUT }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ]
[ CSV [ HEADER ]
[ QUOTE [ AS ] 'quote' ]
[ ESCAPE [ AS ] 'escape' ]
[ FORCE QUOTE column [, ...] ]
/****Ejemplo****/
--Vamos a esto....
--Realicemos el copy para la tabla prueba en la columna nombre
________________________________________
2010 Manual De Administracin de PostgreSql
54
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Ahora haremos el copy con un delimiter, asi especificamos que informacion va para cada
columna.
--Todo Ready...
Copias de seguridad:
Las copias de seguridad son esenciales para las recuperaciones frente a fallos, se deben
determinar las frecuencia conveniente, que ser funcin del tamao de los datos y de la
frecuencia con que son modificados, lo cual marcar la estrategia de copias de seguridad.
Algunas herramientas usadas para las copias de seguridad nos permitirn adems poder
trasladar datos de unas bases de datos a otras.
________________________________________
2010 Manual De Administracin de PostgreSql
55
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Adems hemos de asegurarnos de que los logs, ficheros WAL, estn en otro disco, o hacer
copias ms frecuentes de estos logs ya que en la versin 8 ya se pueden copiar
automticamente y usar en la recuperacin.
Hay que tener claro que lo que estamos tratando aqu es la copia de seguridad de las bases
de datos, de los clusters, no estamos haciendo copia de seguridad del software instalado, del
cual, conviene de vez en cuando hacer una copia de seguridad de los ficheros del SO.
$ su - postgres
$ cd /tmp/backup
$ tar cvfz copia.tar.gz $PGDATA
Volcado SQL:
Los volcados de este tipo se realizan usando las herramientas que nos proporciona
PostgreSQL. Estos volcados son muy flexibles y de gran utilidad, nos permitirn hacer
copias de seguridad de toda la base de datos o de partes de ella, y luego, dada una copia de
seguridad, nos permitirn restaurar lo que
queramos.
Adems, estas herramientas sirven para la transmisin de datos entre bases de datos.
pg_dump: vuelca una base de datos o parte de ella a un fichero, bien en texto plano o en un
formato propio de PostgreSQL. Se puede recuperar cualquier objeto que est en el fichero
aisladamente. El servidor debe estar en marcha.
pg_restore: recupera los objetos volcados en una copia de seguridad que no se realizn en
texto plano sino en un formato propio de PostgreSQL.
________________________________________
2010 Manual De Administracin de PostgreSql
56
Academia De Software Libre www.codigolibre.org
__________________________________________________________
pg_dump: Con este comando, podemos volcar una base de datos o parte de ella a un fichero
script en texto plano o en un formato propio de PostgreSQL.
Es ms flexible
Slo es portable entre servidores PostgreSQL (aunque esto no es del todo cierto, debido a
que con pg_restore se pueden crear ficheros SQL en texto plano).
Tiene ms opciones, usando $ man pg_dump se pueden ver detalles de esas opciones.
Ejemplos de uso:
pg_dumpall:
Con pg_dumpall se realizan volcados del cluster completo, incluyendo roles de grupo y
roles de login.
Tiene ms opciones, usando $man pg_dumpallse pueden ver detalles de esas opciones.
Como se ve, este comando es similar a pg_dump, pero tiene algunas diferencias:
No permite la opcin de indicar el fichero de salida, con lo cual hay que redireccionar la
salida a un fichero.
Tiene una opcin muy interesante que es "-g" que permite exportar nicamente los objetos
globales, con lo que podemos generar un script que contenga la creacin de usuarios y roles.
________________________________________
2010 Manual De Administracin de PostgreSql
57
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Ejemplos de uso:
-- Exportar un cluster:
$ pg_dumpall > micluster.sql
El fichero se puede modificar antes de cargarlo, pero hay que llevar mucho cuidado con los
editores que gastemos, porque hay algunos que realizan conversiones de codificacin de
caracteres o formatos y esto puede producir efectos indeseados.
Volcando en otro fichero que actua de conversor. Se crea asi un script en texto plano que
podemos modificar antes de ejecutarlo.
Por ejemplo, supongamos que hemos hecho una copia de seguridad de nuestra base de datos
en formato comprimido y se han perdido datos de una tabla de empleados, para recuperarlos
hacemos:
________________________________________
2010 Manual De Administracin de PostgreSql
58
Academia De Software Libre www.codigolibre.org
__________________________________________________________
PostgreSQL se recupera bien en fallos de la memoria primaria (cortes de luz ,cuelgues, etc.),
el sistema se recupera usando los ficheros de log (WAL) y nunca se pierde una transaccin
confirmada.
Los ficheros de log permiten que adems, la base de datos no tenga que estar
completamente actualizada (sync) para mantener los datos ante fallos en la memoria
principal (prdida de valores en los bufferes compartidos).
Si se llenan sin que se haya hecho sync,el sistema hace un sync y avisa de que hacen falta
ms logs.
/***Ejemplo****/
/****************** Backups******************/
/*********PG_DUMP***************/
[postgres@jp ~]$psql -l
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
--------------+---------------+-----------+-----------------+-------------+--------------
HR | fcld | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/fcld
: fcld=CTc/fcld
poma | pepe | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
pomavid | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =T/postgres
: postgres=CTc/postgres
sacademico | sacademico | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postgres
(7 rows)
________________________________________
2010 Manual De Administracin de PostgreSql
59
Academia De Software Libre www.codigolibre.org
__________________________________________________________
[postgres@jp ~]$dropdb HR
[postgres@jp ~]$createdb HR
[[local]:5432/jparedes@HR] [] # \d
No relations found.
--Ahora procedemos a restautar el Backup:
[[local]:5432/jparedes@HR] [] # \d
List of relations
Schema | Name | Type | Owner
--------+-----------------------+----------+----------
public | countries | table | postgres
public | departments | table | postgres
public | employees | table | postgres
public | job_history | table | postgres
public | jobs | table | postgres
public | locations | table | postgres
public | regions | table | postgres
public | regions_region_id_seq | sequence | postgres
(8 rows)
________________________________________
2010 Manual De Administracin de PostgreSql
60
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Verificamos el archivo:
[postgres@jp ~]$file sacademico_Backup.sql.gz
sacademico_Backup.sql.gz: gzip compressed data, from Unix, last modified: Wed Jun 2
08:49:50 2010
/***Practica***/
/*********PG_DUMPALL***************/
________________________________________
2010 Manual De Administracin de PostgreSql
61
Academia De Software Libre www.codigolibre.org
__________________________________________________________
/*********PG_RESTORE***************/
/***Practica***/
--Restaura los backups ya realizados dela DB HR
#!/bin/bash
DIR=/backup/psql
[ ! $DIR ] && mkdir -p $DIR || :
LIST=$(psql -l | awk '{ print $1}' | grep -vE '^-|^List|^Name|template[0|1]')
for d in $LIST
do
pg_dump $d | gzip -c > $DIR/$d.out.gz
Crontab
El crontab, es un archivo en donde podemos configurar tareas para que se ejecuten automticamente
en nuestro sistema, digamos por ejemplo descargar un archivo de respaldo diariamente, o borrar
ciertos archivos peridicamente, ejecutar un script que haga algo, etc, digamos que podemos
automatizar las tareas, para no estar hacindolas a mano.
Qu es cron?
Cron es el nombre del programa que permite a usuarios Linux/Unix ejecutar automticamente
comandos o scripts (grupos de comandos) a una hora o fecha especfica. Es usado normalmente
para comandos de tareas administrativas, como respaldos, pero puede ser usado para ejecutar
cualquier cosa. Como se define en las pginas del manual de cron (#> man cron) es un demonio que
ejecuta programas agendados.
Iniciar cron
Cron es un demonio (servicio), lo que significa que solo requiere ser iniciado una vez, generalmente
con el mismo arranque del sistema. El servicio de cron se llama crond. En la mayora de las
distribuciones el servicio se instala automticamente y queda iniciado desde el arranque del sistema,
se puede comprobar de varias maneras:
/***Ejemplo****/
________________________________________
2010 Manual De Administracin de PostgreSql
62
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Tambien con
/etc/rc.d/init.d/crond status
Usa cualquiera de los dos dependiendo de tu distro
--o si tienes el comando service instalado:
--Si el servicio no estuviera configurado para arrancar desde un principio, bastara con agregarlo
con el comando chkconfig:
[root@guerrero ~]# chkconfig --level 35 crond on
Usando cron
Hay al menos dos maneras distintas de usar cron: La primera es en el directorio /etc, donde muy
seguramente encontrars los siguientes directorios:
cron.hourly
cron.daily
cron.weekly
cron.monthly
Si se coloca un archivo tipo script en cualquiera de estos directorios, entonces el script se ejecutar
cada hora, cada da, cada semana o cada mes, dependiendo del directorio.
Para que el archivo pueda ser ejecutado tiene que ser algo similar a lo siguiente:
#!/bin/sh
#script que genera un respaldo
cd /usr/documentos
tar czf * respaldo
cp respaldo /otra_directorio/.
Ntese que la primera lnea empieza con #!, que indica que se trata de un script shell de bash, las
dems lneas son los comandos que deseamos ejecute el script. Este script podra nombrarse por
ejemplo respaldo.sh y tambin debemos cambiarle los permisos correspondientes para que pueda
ser ejecutado, por ejemplo:
#> chmod 700 respaldo.sh
#> ls -l respaldo.sh
-rwx------ 1 root root 0 Jul 20 09:30 respaldo.sh
La "x" en el grupo de permisos del propietario (rwx) indica que puede ser ejecutado.
Si este script lo dejamos en cron.hourly, entonces se ejecutar cada hora con un minuto de todos los
das, en un momento se entender el porque.
________________________________________
2010 Manual De Administracin de PostgreSql
63
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Como segundo modo de ejecutar o usar cron es a travs de manipular directamente el archivo
/etc/crontab. En la instalacin por defecto de varias distribuciones Linux, este archivo se ver a algo
como lo siguiente:
[root@guerrero ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
#|||||
# * * * * * command to be executed
Las primeras cuatro lneas son variables que indican lo siguiente:
SHELL es el 'shell' bajo el cual se ejecuta el cron. Si no se especifica, se tomar por defecto el
indicado en la lnea /etc/passwd correspondiente al usuario que este ejecutando cron.
PATH contiene o indica la ruta a los directorios en los cuales cron buscar el comando a ejecutar.
Este path es distinto al path global del sistema o del usuario.
MAIL TO es a quien se le enva la salida del comando (si es que este tiene alguna salida). Cron
enviar un correo a quien se especifique en este variable, es decir, debe ser un usuario vlido del
sistema o de algn otro sistema. Si no se especifica, entonces cron enviar el correo al usuario
propietario del comando que se ejecuta.
HOME es el directorio raz o principal del comando cron, si no se indica entonces, la raz ser la
que se indique en el archivo /etc/passwd correspondiente al usuario que ejecuta cron.
Los comentarios se indican con # al inicio de la lnea.
Despus de lo anterior vienen las lneas que ejecutan las tareas programadas propiamente. No hay
lmites de cuantas tareas pueda haber, una por rengln. Los campos (son 7) que forman estas lneas
estn formados de la siguiente manera:
Minuto Hora DiaDelMes Mes DiaDeLaSemana Usuario Comando
Un asterisco * como valor en los primeros cinco campos, indicar inicio-fin del campo, es decir
todo. Un * en el campo de minuto indicar todos los minutos.
________________________________________
2010 Manual De Administracin de PostgreSql
64
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Se tiene entonces, dos situaciones, generar directamente el archivo crontab con el comando:
/***Ejemplo****/
[root@guerrero ~]# crontab -e
Con lo cual se abrira el editor por default (generalemente vi) con el archivo llamado crontab vacio y
donde el usuario ingresar su tabla de tareas y que se guardar automticamente como
/var/spool/cron/usuario.
16 8 * 1-5 ls /etc/lvm
# me listara el contenido de /lvm a las 4:20 de todos los 8 sea de lunes a viernes
crontab: installing new crontab
--Revisemos:
[root@guerrero ~]# cat /var/spool/cron/root
16 8 * 1-5 ls /etc/lvm
# me listara el contenido de /lvm a las 4:20 de todos los 8 sea de lunes a viernes
--Revisemos el archivo
[root@guerrero ~]# cat /etc/cron.deny
Brouli
--Ahora comprovemoslo
[Brouli@guerrero ~]$ crontab -e
You (Brouli) are not allowed to use this program (crontab)
See crontab(1) for more information
________________________________________
2010 Manual De Administracin de PostgreSql
65
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Si no existe el archivo cron.allow ni el archivo cron.deny, en teora el uso de cron esta entonces sin
restricciones de usuario. Si se aaden nombres de usuarios en cron.allow, sin crear un archivo
cron.deny, tendr el mismo efecto que haberlo creado con la palabra ALL. Esto quiere decir que
una vez creado cron.allow con un solo usuario, siempre se tendrn que especificar los dems
usuarios que se quiere usen cron, en este archivo.
COMANDO chkconfig:
El comando chkconfig se usa para cambiar, actualizar y consultar informacin de runlevel para los
servicios del sistema. chkconfig es un comando de administrador.
SINTAXIS:
La sintaxis es
chkconfig [opciones]
/****Ejemplo****/
--Nos lista los niveles de ejecucion y el estado del servicio (si esta activo o no).
[root@guerrero ~]# chkconfig --list
--Veamos el estado del servicio iptables
[root@guerrero ~]# chkconfig --list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
________________________________________
2010 Manual De Administracin de PostgreSql
66
Academia De Software Libre www.codigolibre.org
__________________________________________________________
--Chevere!
Hasta la versin 7.X no haba recuperacin total, si se produca una prdida dentro del
$PGDATA, haba que recurrir a la copia de seguridad fsica ms reciente y desde ese
momento las actualizaciones se perdan, aunque tuviramos los ficheros de log. Aqu es
donde, en la versin 8.X se incorpora el volcado en lnea y la recuperacin PITR.
Para poder utilizar esta opcin tiene que estar habilitado el archivado WAL y en
funcionamiento. Los ficheros WAL son segmentos de 16Mb que se nombran
secuencialmente en el cual el sistema va copiando los cambios en la base de datos. El
sistema recicla los ficheros de log que no van a ser necesitados renombrndolos a nmeros
superiores dentro de la secuencia.
donde %p representa el nombre del fichero con la ruta absoluta y %f sin la ruta.
select pg_start_backup(nombre_copia);
3. con el servidor en marcha, hacemos la copia desde el sistema operativo, no hace falta
parar el servidor, por ejemplo:
select pg_stop_backup();
________________________________________
2010 Manual De Administracin de PostgreSql
67
Academia De Software Libre www.codigolibre.org
__________________________________________________________
1. parar el postmaster
3. borrar todos los ficheros que hay dentro del cluster asi como los correspondientes a los
tablespaces
6. si existen ficheros WAL sin archivar, tal como hemos hecho en el paso 2, copiarlos a
pg_xlog
9. inspeccionar la base de datos, si todo ha ido correcto, los datos estarn recuperados hasta
la ltima transaccin confirmada y el fichero recovery.conf se renombra a recovery.done.
Conviene tener los ficheros log en un disco distinto al que est el cluster, para que la
recuperacin sea mejor. Para ello, debemos mover el directorio pg_xlog a otro disco y crear
un enlace simblico, con el cluster parado.
Por ejemplo:
$ mkdir /disco2/pg/
$ cd $PGDATA
$ mv pg_xlog /disco2/pg
$ ln s /disco2/pg/pg_xlog pg_xlog
Adems, para asegurarnos que no se nos pierden archivos de log, podemos hacer un cron
que copie los archivos que no estn llenos en una ubicacin distinta.
En el fichero recovery_conf hay una serie de parmetros que pueden ayudar a recuperar
hasta el momento o la transaccin que queramos (lo que se conoce como recuperacin
Point-in-time):
________________________________________
2010 Manual De Administracin de PostgreSql
68
Academia De Software Libre www.codigolibre.org
__________________________________________________________
Por ejemplo:
restore_command = cp /mnt/server/archivedir/%f %p
recovery_target_time: hasta qu momento
recovery_target_xid: hasta una transaccin determinada
recovery_target_inclusive: si los dos casos anteriores son inclusive o no.
/****Ejemplo****/
/*********VACUUMDB***************/
[postgres@jp ~]$vacuumdb HR -v
Recomendaciones:
Determinar las tablas grandes con pocas actualizaciones para eliminarlas del VACUUM.
Dentro del VACUUM, se pueden actualizar las estadsticas con la opcin ANALYZE,
haciendo lo mismo que hace el comando ANALYZE, as proporciona:
Otro problema que resuelve VACUUM es el evitar la prdida de datos muy antiguos,
porque MVCC introduce el concepto de marca de tiempo XID identificador de transaccin.
________________________________________
2010 Manual De Administracin de PostgreSql
69
Academia De Software Libre www.codigolibre.org
__________________________________________________________
XID est limitado a 32 bits, es decir cuando llega a 232 se reinicializa, tiene un
funcionamiento circular, si esto llega a ocurrir, se perderan datos. Existen adems dos XID
especiales: BootstrapXID y FrozenXID. Cada vez que se ejecuta VACUUM se guarda
informacin que se puede consultar:
As, si se ejecuta poco el vacuum, la base de datos avisa al administrador, se deben limpiar
las tablas una vez cada mil millones de transacciones. El caso es que se recomienda hacer
VACUUM diario.
AUTOVACUUM:
Para evitar los problemas con la ejecucin de VACUUM, a partir de la versin 8,
PostgreSQL incorpora un proceso de fondo AUTOVACUUM que se ejecuta
peridicamente cuando est habilitado y l mismo comprueba las tablas con alta carga de
actualizaciones. Hay una serie de parmetros en postgresql.conf para modificar el
comportamiento de este proceso.
Reindex:
Otras tareas importantes son las reindexaciones, ya que pueden haber ndices incorrectos por
problemas en el software o hardware o porque haya que optimizar el ndice debido a que
tiene pginas muertas que hay que eliminar.
Ejemplos:
-- reparar un indice:
reindex index nomindice;
$ crontab -e
// se abre el fichero de cron y aadimos estas lneas:
0 3 * * * psql -c 'VACUUM FULL;' test
________________________________________
2010 Manual De Administracin de PostgreSql
70
Academia De Software Libre www.codigolibre.org
__________________________________________________________
0 3 * * * vacuumdb -a -f
0 30 * * * reindexdb bd
ATENCIN!, problema entre Reindex y Archivado WAL:
Hay que tener presente que cuando reindexamos, se rehacen muchos ficheros, con lo que
hay que llevar especial cuidado si el archivado WAL est activado, pues una reindexacin
de toda la base de datos implica que se puede duplicar el tamao de los ficheros de la base
de datos, ya que el sistema de WAL crea archivos de log para cada cambio.
Monitorizacion:
La monitorizacin de la actividad del servidor PostgreSQL se puede hacer con herramientas
del SO o con herramientas propias de la base de datos.
Free muestra la cantidad de memoria libre y usada que tiene el sistema. Por una
parte muestra la memoria fsica y por otra la swap, tambin muestra la memoria
cach y de buffer consumida por el Kernel.
vmstat : Es muy similar a top ya que es un condensado de los procesos del sistema,
para que esta herramienta se vuelva dinmica se deben especificar los argumentos:
vmstat -n <numero de segundos por actualizacion >
iostat informa repetidamente de las estadsticas de E/S para cada disco activo del
sistema.
ps
Usando el comando ps, podemos filtrar las filas en las que salga "postmaster:"
/****Ejemplo****/
/*********PROCESOS***************/
________________________________________
2010 Manual De Administracin de PostgreSql
71
Academia De Software Libre www.codigolibre.org
__________________________________________________________
[postgres@jp ~]$pg_top
last pid: 14812; load avg: 0.74, 0.43, 0.33; up 0+02:55:34
12:07:28
4 processes: 4 sleeping
CPU states: 10.3% user, 0.0% nice, 3.0% system, 86.7% idle, 0.0% iowait
Memory: 1613M used, 2365M free, 103M buffers, 860M cached
Swap: 8000M free
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
7831 postgres 25 0 54M 6964K sleep 0:00 0.00% 0.00% postgres: postgres pomavid
127.0.0.1(13687) idle
7830 postgres 24 0 53M 5600K sleep 0:00 0.00% 0.00% postgres: postgres postgres
127.0.0.1(13686) idle
14813 postgres 20 0 53M 4228K sleep 0:00 0.00% 0.00% postgres: postgres postgres
[local] idle
7850 postgres 17 0 53M 4340K sleep 0:00 0.00% 0.00% postgres: postgres pomavid
127.0.0.1(13705) idle
/***Pratica***/
[postgres@jp ~]$vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 2421036 105964 880432 0 0 37 36 558 826 8 2 89 2 0
0 0 0 2421036 105972 880432 0 0 0 6 1088 1249 6 1 89 4 0
________________________________________
2010 Manual De Administracin de PostgreSql
72
Academia De Software Libre www.codigolibre.org
__________________________________________________________
[postgres@jp ~]$iostat 2
Linux 2.6.18-194.3.1.el5PAE (jp.fcld.local) 06/05/2010
[postgres@jp ~]$df -h
________________________________________
2010 Manual De Administracin de PostgreSql
73