Postgres Admin

  • Upload
    csaralg

  • View
    39

  • Download
    0

Embed Size (px)

Citation preview

  • Guia del Administrador dePostgreSQL

    El equipo de desarrollo de PostgreSQL

    Editado porThomas Lockhart

  • Guia del Administrador de PostgreSQLpor El equipo de desarrollo de PostgreSQL

    Editado por Thomas Lockhart

    PostgreSQLes marca registrada 1996-9 por el Postgres Global Development Group.

  • Tabla de contenidosSummario........................................................................................................................ i1. Introduccin ...............................................................................................................1

    1.1. Recursos............................................................................................................11.2. Terminologa .....................................................................................................31.3. Notacin............................................................................................................41.4. Y2K Statement (Informe sobre el efecto 2000)................................................51.5. Copyrights y Marcas Registradas .....................................................................6

    2. Portes...........................................................................................................................12.1. Plataformas actualmente soportadas .................................................................12.2. Plataformas no soportadas ................................................................................2

    3. Opciones de Configuracin .......................................................................................43.1. Parmetros de configuracin (configure) ..........................................................43.2. Parmetros de construccin (make) ..................................................................53.3. Soporte Local ....................................................................................................8

    3.3.1. Cuales son los Beneficios?.....................................................................93.3.2. Cuales son las Desventajas?.................................................................10

    3.4. Autenticacin Kerberos...................................................................................103.4.1. Disponibilidad......................................................................................103.4.2. Instalacin ............................................................................................113.4.3. Operaciones..........................................................................................11

    4. Distribucin del Sistema..........................................................................................135. Instalacin.................................................................................................................15

    5.1. Antes de comenzar..........................................................................................155.2. Procedimiento de Instalacin..........................................................................16

    6. Instalacion en Win32 ...............................................................................................256.1. Construccion de librerias ................................................................................256.2. Instalacion de las librerias...............................................................................256.3. Usando las librerias.........................................................................................26

    7. Entorno de tiempo de ejecucin..............................................................................27

    3

  • 7.1. Utilizando Postgres desde Unix ......................................................................277.2. Iniciando postmaster .......................................................................................277.3. Usando pg_options..........................................................................................28

    7.3.1. Opciones reconocidas ..........................................................................308. Seguridad..................................................................................................................35

    8.1. Autentificacion de Usuarios............................................................................358.2. Nombres de usuario y grupos .........................................................................36

    8.2.1. Crear Usuarios .....................................................................................368.2.2. Crear Grupos........................................................................................378.2.3. Asignar usuarios a los Grupos .............................................................37

    8.3. Control de Acceso...........................................................................................378.4. Funciones y Reglas .........................................................................................38

    8.4.1. Funciones .............................................................................................388.4.2. Reglas...................................................................................................398.4.3. Caveats .................................................................................................39

    9. Agregar y Eliminar Usuarios ..................................................................................4010. Gestin de Disco .....................................................................................................41

    10.1. Localizaciones Alternativas ..........................................................................4111. Gestin de una base de datos ................................................................................44

    11.1. Creacin de una base de datos ......................................................................4411.2. Acceso a la base de datos..............................................................................4411.3. Destruccin de una base de datos .................................................................4611.4. Copia de seguridad y restauracin ................................................................47

    11.4.1. Bases de datos grandes.......................................................................4812. Tratamiento de problemas ....................................................................................50

    12.1. Fallos de inicio de Postmaster.......................................................................5012.2. Problemas con la conexin del Cliente .........................................................5112.3. Depuracin de mensajes ...............................................................................53

    12.3.1. pg_options..........................................................................................5313. Recuperacin de bases de datos............................................................................5614. Pruebas de regresin..............................................................................................57

    14.1. Entorno de regresin .....................................................................................57

    4

  • 14.2. Estructura de directorios ...............................................................................5814.3. Procedimiento para el test de regresin ........................................................5914.4. Anlisis de Regresin ...................................................................................61

    14.4.1. Diferencias en los mensajes de error .................................................6214.4.2. Diferencias en fechas y horas ............................................................6214.4.3. Diferencias en punto flotante .............................................................6314.4.4. Diferencias en polgonos....................................................................6314.4.5. Diferencias aleatorias.........................................................................6314.4.6. Los archivos expected ....................................................................64

    14.5. Archivos de comparacin especficos de la plataforma ................................6415. Notas de versiones ..................................................................................................67

    15.1. Version 6.5.3 .................................................................................................6715.1.1. Migracion a v6.5.3 .............................................................................6715.1.2. Lista Detallada de Cambios ...............................................................67

    15.2. Version 6.5.2 .................................................................................................6715.2.1. Migracion to v6.5.2............................................................................6715.2.2. Lista Detallada de Cambios ...............................................................68

    15.3. Version 6.5.1 .................................................................................................6815.3.1. Migracion to v6.5.1............................................................................6915.3.2. Lista Detallada de Cambios ...............................................................69

    15.4. Version 6.5 ....................................................................................................7015.4.1. Migracion to v6.5...............................................................................72

    15.4.1.1. Control de Concurrencia Multi-Version..................................7215.4.2. Lista Detalla de Cambios ...................................................................73

    15.5. Version 6.4.2 .................................................................................................7815.5.1. Migracion a v6.4.2 .............................................................................7915.5.2. Lista Detallada de Cambios ...............................................................79

    15.6. Version 6.4.1 .................................................................................................7915.6.1. Migracion a v6.4.1 .............................................................................7915.6.2. Lista Detallada de Cambios ...............................................................79

    15.7. Version 6.4 ....................................................................................................8115.7.1. Migracion a v6.4 ................................................................................8215.7.2. Lista Detallada de Cambios ...............................................................82

    5

  • 15.8. Release 6.3.2 .................................................................................................8815.8.1. Detailed Change List..........................................................................88

    15.9. Release 6.3.1 .................................................................................................8915.9.1. Detailed Change List..........................................................................90

    15.10. Release 6.3 ..................................................................................................9115.10.1. Migration to v6.3 .............................................................................9315.10.2. Detailed Change List........................................................................93

    15.11. Release 6.2.1 ...............................................................................................9815.11.1. Migration from v6.2 to v6.2.1..........................................................9815.11.2. Detailed Change List........................................................................99

    15.12. Release 6.2 ..................................................................................................9915.12.1. Migration from v6.1 to v6.2.............................................................9915.12.2. Migration from v1.x to v6.2...........................................................10015.12.3. Detailed Change List......................................................................100

    15.13. Release 6.1.1 .............................................................................................10315.13.1. Migration from v6.1 to v6.1.1........................................................10315.13.2. Detailed Change List......................................................................103

    15.14. Release 6.1 ................................................................................................10415.14.1. Migration to v6.1 ...........................................................................10515.14.2. Detailed Change List......................................................................105

    15.15. Release v6.0 ..............................................................................................10815.15.1. Migration from v1.09 to v6.0.........................................................10815.15.2. Migration from pre-v1.09 to v6.0 ..................................................10815.15.3. Detailed Change List......................................................................108

    15.16. Release v1.09 ............................................................................................11115.17. Release v1.02 ............................................................................................112

    15.17.1. Migration from v1.02 to v1.02.1....................................................11215.17.2. Dump/Reload Procedure................................................................11315.17.3. Detailed Change List......................................................................113

    15.18. Release v1.01 ............................................................................................11415.18.1. Migration from v1.0 to v1.01.........................................................11415.18.2. Detailed Change List......................................................................117

    15.19. Release v1.0 ..............................................................................................11815.19.1. Detailed Change List......................................................................118

    6

  • 15.20. Postgres95 Beta 0.03.................................................................................11915.20.1. Detailed Change List......................................................................120

    15.21. Postgres95 Beta 0.02.................................................................................12315.21.1. Lista Detallada de Cambios ...........................................................123

    15.22. Postgres95 Beta 0.01.................................................................................12415.23. Tiempos Resultantes .................................................................................124

    15.23.1. v6.5.................................................................................................12515.23.2. v6.4beta..........................................................................................12615.23.3. v6.3.................................................................................................12615.23.4. v6.1.................................................................................................126

    Bibliografa .................................................................................................................128

    7

  • Lista de tablas2-1. plataformas soportadas .............................................................................................12-2. Posiblemente Plataformas incompatibles .................................................................33-1. Ejemplos de Parmetros de Kerberos .....................................................................12

    Tabla de figuras4-1. Distribucin de los archivos de Postgres ................................................................13

    Tabla de ejemplos7-1. Archivo pg_options ................................................................................................30

    1

  • SummarioPostgres, desarrollada originalmente en el Departamento de Ciencias de laComputacin de la Universidad de California en Berkeley, fu pionera en muchos delos conceptos de bases de datos relacionales orientadas a objetos que ahora empiezan aestar disponiblesen algunas bases de datos comerciales. Ofrece suporte al lenguageSQL92/SQL3, integridad de transacciones, y extensibilidad de tipos de datos.PostgreSQL es un descendiente de dominio pblico y cdigo abierto del cdigooriginal de Berkeley.

    1

  • Captulo 1. IntroduccinEste documento es el manual del programador para el gestor de bases de datosPostgreSQL (http://postgresql.org/), desarrollado inicialmente en la Universidad de

    California en Berkeley. PostgreSQL se basa en Postgres versin 4.2(http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/postgres.html). El proyecto Postgres,liderado por el Profesor Michael Stonebraker, ha sido financiado por la Agencia deProyectos de Investigacin de Defensa Avanzados (DARPA), la Oficina deInvestigacin del Ejrcito (ARO), la Fundacin Nacional de Ciencia (NSF), y ESL, Inc.

    1.1. RecursosEste manual est organizado en diferentes partes:

    Tutorial

    Introduccion para nuevos usuarios. No cubre caractersticas avanzadas.

    Guia del Usuario

    Informacion general para el usuario, incluye comandos y tipos de datos.

    Gua del Programador

    Informacin avanzada para programadores de aplicaciones. Incluyendo tipos yextensin de funciones, libreria de interfaces y lo referido al diseo deaplicaciones.

    Guia del Administrador

    Informacin sobre instalacin y administracin. Lista de equipo soportado.

    Guia del Desarrollador

    Informacin para desarrolladores de Postgres. Este documento es para aquellaspersonas que estan contribuyendo al proyecto de Postgres; la informacin

    1

  • Captulo 1. Introduccin

    refererida al desarrollo de aplicaciones aparece en la Guia del Programador.Actualmente incluido en la Guia del Programador.

    Manual de Referencia

    Informacin detallada sobre los comandos. Actualmente includo en la Guia delUsuario.

    Ademas de ste manual, hay otros recursos que le servirn de ayuda para la instalaciony el uso de Postgres:

    man pages

    Las pginas de manual(man pages) contienen mas informacin sobre loscomandos.

    FAQs(Preguntas Frequentes)La seccin de Preguntas Frequentes(FAQ) contiene respuestas a preguntas

    generales y otros asuntos que tienen que ver con la plataforma en que se desarrolle.

    LEAME(READMEs)Los archivos llamados LEAME(README) estan disponibles para algunas

    contribuciones.

    Web Site

    El sitio web de Postgres (postgresql.org) contiene informacin que algunasdistribuciones no incluyen. Hay un catlogo llamado mhonarc que contiene elhistrico de las listas de correo electrnico. Aqu podr encontrar bastanteinformacin.

    Listas de Correo

    La lista de correo pgsql-general (mailto:[email protected]) (archive(http://www.PostgreSQL.ORG/mhonarc/pgsql-general/)) es un buen lugar paracontestar sus preguntas.

    2

  • Captulo 1. Introduccin

    Usted!

    Postgres es un producto de cdigo abierto . Como tal, depende de la comunidadde usuarios para su soporte. A medida que empieze a usar Postgres, empezar adepender de otros para que le ayuden, ya sea por medio de documentacin o en laslistas de correo. Considere contribuir lo que aprenda. Si aprende o descubre algoque no est documentado, escrbalo y contribuya. Si aade nuevas caractersticasal cdigo, hgalas saber.

    Aun aquellos con poca o ninguna experiencia pueden proporcionar correcciones ycambios menores a la documentacin, lo que es una buena forma de empezar. Elpgsql-docs (mailto:[email protected]) (archivo(http://www.PostgreSQL.ORG/mhonarc/pgsql-docs/)) de la lista de correos es unbuen lugar para comenzar sus pesquisas.

    1.2. TerminologaEn la documentacin siguiente, sitio (o site) se puede interpretar como la mquina en laque est instalada Postgres. Dado que es posible instalar ms de un conjunto de basesde datos Postgres en una misma mquina, este trmino denota, de forma ms precisa,cualquier conjunto concreto de programas binarios y bases de datos de Postgresinstalados.

    El superusuario de Postgres es el usuario llamado postgres que es dueo de losficheros de la bases de datos y binarios de Postgres. Como superusuario de la base dedatos, no le es aplicable ninguno de los mecanismos de proteccin y puede acceder acualquiera de los datos de forma arbitraria. Adems, al superusuario de Postgres se lepermite ejecutar programas de soporte que generalmente no estn disponibles paratodos los usuarios. Tenga en cuenta que el superusuario de Postgres no es el mismo queel superusuario de Unix (que es conocido como root). El superusuario debera tener unidentificador de usuario (UID) distinto de cero por razones de seguridad.El administrador de la base de datos (database administrator) o DBA, es la persona

    3

  • Captulo 1. Introduccin

    responsable de instalar Postgres con mecanismos para hacer cumplir una poltica deseguridad para un site. El DBA puede aadir nuevos usuarios por el mtodo descritoms adelante y mantener un conjunto de bases de datos plantilla para usar concreatedb.El postmaster es el proceso que acta como una puerta de control (clearing-house) paralas peticiones al sistema Postgres. Las aplicaciones frontend se conectan al postmaster,que mantiene registros de los errores del sistema y de la comunicacin entre losprocesos backend. El postmaster puede aceptar varios argumentos desde la lnea derdenes para poner a punto su comportamiento. Sin embargo, el proporcionarargumentos es necesario slo si se intenta trabajar con varios sitios o con uno que no seejecuta a la manera por defecto.El backend de Postgres (el programa ejecutable postgres real) lo puede ejecutar elsuperusuario directamente desde el intrprete de rdenes de usuario de Postgres (con elnombre de la base de datos como un argumento). Sin embargo, hacer esto elimina elbuffer pool compartido y bloquea la tabla asociada con un postmaster/sitio, por elloesto no est recomendado en un sitio multiusuario.

    1.3. Notacin... o /usr/local/pgsql/ delante de un nombre de fichero se usa para representarel camino (path) al directorio home del superusuario de Postgres.En la sinopsis, los corchetes ([ y ]) indican una expresin o palabra clave opcional.Cualquier cosa entre llaves ({ y }) y que contenga barras verticales (|) indica quedebe elegir una de las opciones que separan las barras verticales.

    En los ejemplos, los parntesis (( y )) se usan para agrupar expresiones booleanas.| es el operador booleano OR.Los ejemplos mostrarn rdenes ejecutadas desde varias cuentas y programas. Lasrdenes ejecutadas desde la cuenta del root estarn precedidas por >. Las rdenesejecutadas desde la cuenta del superusuario de Postgres estarn precedidas por %,mientras que las rdenes ejecutadas desde la cuenta de un usuario sin privilegiosestarn precedidas por $. Las rdenes de SQL estarn precedidas por => o no

    4

  • Captulo 1. Introduccin

    estarn precedidas por ningn prompt, dependiendo del contexto.

    Nota: En el momento de escribir (Postgres v6.5) la notacin de las rdenesflagging (o flojos) no es universalmente estable o congruente en todo el conjuntode la documentacin. Por favor, enve los problemas a la Lista de Correo de laDocumentacin (o Documentation Mailing List) (mailto:[email protected]).

    1.4. Y2K Statement (Informe sobre el efecto2000)

    Autor: Escrito por Thomas Lockhart (mailto:[email protected]) el22-10-1998.

    El Equipo de Desarrollo Global (o Global Development Team) de PostgreSQLproporciona el rbol de cdigo de software de Postgres como un servicio pblico, singaranta y sin responsabilidad por su comportamiento o rendimiento. Sin embargo, enel momento de la escritura:

    El autor de este texto, voluntario en el equipo de soporte de Postgres desdeNoviembre de 1996, no tiene constancia de ningn problema en el cdigo dePostgres relacionado con los cambios de fecha en torno al 1 de Enero de 2000 (Y2K).

    El autor de este informe no tiene constancia de la existencia de informes sobre elproblema del efecto 2000 no cubiertos en las pruebas de regresin, o en otro campode uso, sobre versiones de Postgres recientes o de la versin actual. Podramos haberesperado or algo sobre problemas si existiesen, dada la base que hay instalada ydada la participacin activa de los usuarios en las listas de correo de soporte.

    5

  • Captulo 1. Introduccin

    Por lo que el autor sabe, las suposiciones que Postgres hace sobre las fechas que seescriben usando dos nmeros para el ao estn documentadas en la Gua del Usuario(http://www.postgresql.org/docs/user/datatype.htm) en el captulo de los tipos dedatos. Para aos escritos con dos nmeros, la transicin significativa es 1970, no elao 2000; ej. 70-01-01 se interpreta como 1970-01-01, mientras que 69-01-01se interpreta como 2069-01-01.

    Los problemas relativos al efecto 2000 en el SO (sistema operativo) sobre el queest instalado Postgres relacionados con la obtencin de "la fecha actual" se puedenpropagar y llegar a parecer problemas sobre el efecto 2000 producidos por Postgres.

    Dirjase a The Gnu Project (http://www.gnu.org/software/year2000.html) y a The PerlInstitute (http://language.perl.com/news/y2k.html) para leer una discusin msprofunda sobre el asunto del efecto 2000, particularmente en lo que tiene que ver con elopen source o cdigo abierto, cdigo por el que no hay que pagar.

    1.5. Copyrights y Marcas RegistradasLa traduccin de los textos de copyright se presenta aqu nicamente a modo deaclaracin y no ha sido aprobada por sus autores originales. Los nicos textos decopyright, garantas, derechos y dems legalismos que tienen validez son los originalesen ingls o una traduccin aprobada por los autores y/o sus representantes legales. .

    PostgreSQL tiene Copyright 1996-2000 por PostgreSQL Inc. y se distribuye bajo lostrminos de la licencia de Berkeley.

    Postgres95 tiene Copyright 1994-5 por los Regentes de la Universidad de California.Se autoriza el uso, copia, modificacin y distribuicin de este software y sudocumentacin para cualquier propsito, sin ningn pago, y sin un acuerdo por escrito,siempre que se mantengan el copyright del prrafo anterior, este prrafo y los dosprrafos siguientes en todas las copias.

    En ningn caso la Universidad de California se har responsable de daos, causados acualquier persona o entidad, sean estos directos, indirectos, especiales, accidentales oconsiguientes, incluyendo lucro cesante que resulten del uso de este software y su

    6

  • Captulo 1. Introduccin

    documentacin, incluso si la Universidad ha sido notificada de la posibilidad de talesdaos.

    La Universidad de California rehusa especficamente ofrecer cualquier garantia,incluyendo, pero no limitada nicamente a, la garanta implcita de comerciabilidad ycapacidad para cumplir un determinado propsito. El software que se distribuye aqu seentrega "tal y cual", y la Universidad de California no tiene ninguna obligacin demantenimiento, apoyo, actualizacin, mejoramiento o modificacin.Unix es una marca registrada de X/Open, Ltd. Sun4, SPARC, SunOS y Solaris sonmarcas registradas de Sun Microsystems, Inc. DEC, DECstation, Alpha AXP yULTRIX son marcas registradas de Digital Equipment Corp. PA-RISC y HP-UX sonmarcas registradas de Hewlett-Packard Co. OSF/1 es marca registrada de OpenSoftware Foundation.

    7

  • Captulo 2. PortesEste manual describe la versin 6.5 Postgres. La comunidad de desarrollo dePostgresha compilado y probado Postgres en varias plataformas. Visita esta pagina web(http://www.postgresql.org/docs/admin/ports.htm) para tener la ltima informacin.

    2.1. Plataformas actualmente soportadasEn el momento de esta publicacin, las siguientes plataformas han sido probadas:

    Tabla 2-1. plataformas soportadas

    OS Procesador Versin Enviado ApuntesAIX 4.3.2 RS6000 v6.5 1999-05-26 (Andreas Zeugswetter (mailto:[email protected]))BSDI x86 v6.5 1999-05-25 (Bruce Momjian (mailto:[email protected])FreeBSD 2.2.x-4.0 x86 v6.5 1999-05-25 (Tatsuo Ishii (mailto:[email protected]), Marc Fournier (mailto:[email protected]))DGUX 5.4R4.11 m88k v6.3 1998-03-01 v6.4 probablemente correcto. Necesita nuevo mantenedor (Brian E Gallew (mailto:[email protected]))Digital Unix 4.0 Alpha v6.5.3 1999-11-04 (Pedro J. Lobo (mailto:[email protected]))HPUX PA-RISC v6.4 1998-10-25 Both 9.0x and 10.20 (Tom Lane (mailto:[email protected]), Stan Brown (mailto:[email protected]))IRIX 6.5.6f MIPS v6.5.3 2000-02-18 MIPSPro 7.3.1.1m; full N32 build (Kevin Wheatley ([email protected]))linux 2.0.x Alpha v6.5.3 1999-11-05 (Ryan Kirkpatrick (mailto:[email protected]))linux 2.2.x arm41 v6.5.3 1999-11-05 (Mark Knox (mailto:[email protected]))linux 2.2.x/glibc2 x86 v6.5.3 1999-11-05 (Lamar Owens (mailto:[email protected]))linux 2.0.x MIPS v6.4 1998-12-16 Cobalt Qube (Tatsuo Ishii (mailto:[email protected]))linux 2.0.x Sparc v6.4 1998-10-25 (Tom Szybist (mailto:[email protected]))linuxPPC 2.1.24 PPC603e v6.4 1998-10-26 Powerbook 2400c (Tatsuo Ishii (mailto:[email protected]))mklinux DR3 PPC750 v6.4 1998-09-16 PowerMac 7600 (Tatsuo Ishii (mailto:[email protected]))NetBSD arm32 v6.5 1999-04-14 (Andrew McMurry (mailto:[email protected]))NetBSD 1.3.2 x86 v6.4 1998-10-25 (Brook Milligan (mailto:[email protected]))

    1

  • Captulo 2. Portes

    OS Procesador Versin Enviado ApuntesNetBSD m68k v6.4.2 1998-12-28 Mac SE/30 (Mr. Mutsuki Nakajima, Tatsuo Ishii (mailto:[email protected]))NetBSD-current NS32532 v6.4 1998-10-27 pequeos problemas en clculos de fecha/tiempo (Jon Buller (mailto:[email protected]))NetBSD/sparc 1.3H Sparc v6.4 1998-10-27 (Tom I Helbekkmo (mailto:[email protected]))NetBSD 1.3 VAX v6.3 1998-03-01 (Tom I Helbekkmo (mailto:[email protected]))QNX-4.25 x86 v6.5.2 1999-11-08 requiere pequeos parches (Dr. Andreas Kardos (mailto:[email protected]))SCO OpenServer 5 x86 v6.5 1999-05-25 (Andrew Merrill (mailto:[email protected]))SCO UnixWare 7 x86 v6.5 1999-05-25 (Andrew Merrill (mailto:[email protected]))Solaris x86 v6.4 1998-10-28 (Marc Fournier (mailto:[email protected]))Solaris 2.6-2.7 Sparc v6.4 1998-10-28 (Tom Szybist (mailto:[email protected]), Frank Ridderbusch (mailto:[email protected]))SunOS 4.1.4 Sparc v6.3 1998-03-01 Patches submitted (Tatsuo Ishii (mailto:[email protected]))SVR4 MIPS v6.4 1998-10-28 Sin soporte para compilar con 64-bit (Frank Ridderbusch (mailto:[email protected]))Windows x86 v6.4 1999-01-06 Libreras del lado del cliente o ODBC/JDBC. Sin servidor todava. (Magnus Hagander ([email protected])Windows NT x86 v6.5 1999-05-26 Trabajando con la librera Cygwin. (Daniel Horak (mailto:[email protected]))

    Plataformas listadas para v6.3.x y v6.4.x tambin trabajan con la v6.5, pero no hemosrecibido confirmacin explcita de la misma en el momento de la creacin de la lista.

    Nota: Para Windows NT, el porte de la parte del servidor Postgres se haconseguido recientemente Postgres Se requiere de la librera Cygnus paracompilarlo.

    2.2. Plataformas no soportadasHay pocas plataformas con las cuales se haya intentado y se haya informado que notrabaja con la distribucin estndar. Otras listadas aqu no proveen de suficientes

    2

  • Captulo 2. Portes

    libreras para intentarlo.

    Tabla 2-2. Posiblemente Plataformas incompatibles

    OS Procesador Versin Enviado ApuntesMacOS all v6.x 1998-03-01 Sin libreras compatibles; usa ODBC/JDBCNextStep x86 v6.x 1998-03-01 Slo soporte cliente; v1.0.9 funciona con parches (David Wetzel (mailto:[email protected]))SVR4 4.4 m88k v6.2.1 1998-03-01 Confirmado con parchado; v6.4.x necesitar cdigo TAS spinlock (Doug Winterburn (mailto:[email protected]))

    3

  • Captulo 3. Opciones de Configuracin

    3.1. Parmetros de configuracin (configure)El conjunto de parmetros disponibles en configure se puede obtener escribiendo

    $ ./configure -help

    Los siguientes parmetros pueden ser de inters para los instaladores:

    Nombre de directorios y ficheros:-prefix=PREFIX ficheros de instalacin independiente de la ar-

    quitectura en PREFIX[/usr/local/pgsql]

    -bindir=DIR ejecutables de usuario en el DIR [EPREFIX/bin]-libdir=DIR libreras de cdigo objeto en el DIR [EPREFIX/lib]-includedir=DIR ficheros de cabeceras C en el in DIR [PREFIX/include]-mandir=DIR documentacin man en el DIR [PREFIX/man]

    Caractersticas y paquetes:-disable-FEATURE no incluir la FEATURE (lo mismo que -enable-

    FEATURE=no)-enable-FEATURE[=ARG] incluir FEATURE [ARG=yes]-with-PACKAGE[=ARG] usar PACKAGE [ARG=yes]-without-PACKAGE no usar PACKAGE (lo mismo que -with-PACKAGE=no)

    -enable y -with opciones reconocidas:-with-template=template usar el fiche-

    ro plantilla del sistema operativover directorio plantilla

    -with-includes=incdir sitio donde estn los fi-chero cabecera para tk/tcl, etc. en el DIR

    -with-libs=incdir buscar libreras tam-bin en DIR

    4

  • Captulo 3. Opciones de Configuracin

    -with-libraries=libdir buscar libreras tam-bin en DIR

    -enable-locale activa el soporte local-enable-recode activa el soporte de codificacin cirlica-with-mb=encoding activa el soporte pa-

    ra multi-byte-with-pgport=portnum cambia el puerto de ini-

    cio por defecto-with-maxbackends=n define el nmero m-

    ximo por defecto de procesos servidores-with-tcl construye interfaces Tcl y pgtclsh-with-tclconfig=tcldir tclConfig.sh y tk-

    Config.sh estn en DIR-with-perl construye interfaces con Perl-with-odbc construye el paquete del driver ODBC-with-odbcinst=odbcdir cambia el direc-

    torio por defecto de odbcinst.ini-enable-cassert activa los chequeos de afirmacin (depurando)-with-CC=compiler usa el compilador de C especificado-with-CXX=compiler usa el compilador de C++ especificado-without-CXX previene la construccin de cdigo C++

    Algunos sistemas pueden tener problemas de construccin con algunas caractersticasespecficas de Postgres. Por ejemplo, sistemas con el compilador de C++ daadopueden necesitar especificar -without-CXX para el proceso de construccin parasaltarse la construccin de libpq++.

    3.2. Parmetros de construccin (make)Muchas parmetros relacionados con la instalacin pueden activar en la etapa deconstruccin de la instalacin de Postgres.

    5

  • Captulo 3. Opciones de Configuracin

    En muchos casos, estos parmetros deben colocarse en un fichero, Makefile.custom,utilizado para este propsito. La distribucin por defecto no contiene este ficheroopcional, pero puedes crearlo con el editor de texto que tu elijas. Cuando actualizas unainstalacin, tu puedes simplemente copiar tu viejo Makefile.custom a la nuevainstalacin antes que hagas la construccin.

    make [ variable=value [,...] ]

    Unas pocas de las muchas variables que puedes especificar son:

    POSTGRESDIR

    Lo ms alto en el rbol de la instalacin.

    BINDIR

    Localizacin de las aplicaciones y utilidades.

    LIBDIR

    localizacin de las libreras, incluyendo las libreras compartidas.

    HEADERDIR

    Localizacin de los ficheros include.

    ODBCINST

    localizacin de las libreras, incluyendo las libreras compartidas psqlODBC(ODBC) .

    Hay otros parmetros opcionales que no se utilizan comnmente. Muchos de las quelistan debajo son apropiadas cuando se estaba desarrollando el cdigo del servidorPostgres .

    6

  • Captulo 3. Opciones de Configuracin

    CFLAGS

    Establece los flags para el compilador de C. Debe ser especificado con "+=" paraconservar los parmetros por defecto.

    YFLAGS

    Establece los flags para el parser yacc/bison.Puede usarse -v para ayudar adiagnosticar problemas de construccin de un nuevo parser. Debe ser especificadocon "+=" para conservar los parmetros por defecto.

    USE_TCL

    Activa el constructor del interfaces Tcl.

    HSTYLE

    Pginas HTML estilo DocBook para construir la documentacin de partida. Nousar a menos que tu ests desarrollando nueva documentacin de documentosfuente SGML compatibles con DocBook en doc/src/sgml/.

    PSTYLE

    Pginas estilo DocBook para construir la documentacin impresa de partida. Nousar a menos que tu ests desarrollando nueva documentacin de documentosfuente SGML compatibles con DocBook en doc/src/sgml/.

    Aqu hay un ejemplo de Makefile.custom para un sistema Linux PentiumPro:# Makefile.custom# Thomas Lockhart 1999-06-01

    POSTGRESDIR= /opt/postgres/currentCFLAGS+= -m486 -O2

    # documentation

    HSTYLE= /home/tgl/SGML/db118.d/docbook/html

    7

  • Captulo 3. Opciones de Configuracin

    PSTYLE= /home/tgl/SGML/db118.d/docbook/print

    3.3. Soporte Local

    Nota: Escrito por Oleg Bartunov. Ver Olegs web page(http://www.sai.msu.su/~megera/postgres/) para ms informacin sobre elsoporte de lengua local y Rusa.

    Mientras que estaba en un proyecto para una compaa en Mosc, Rusia, Me encontrcon el problema que postgresql no tenia soporte para alfabetos nacionales. Despus demirar posibles soluciones alternativas decid desarrollar un soporte local yo mismo. Nosoy un programador en C pero ya haba tenido experiencia con la programacin localcuando trabajo en perl (depurando) y glimpse. Despus de bastantes das sumergido porel rbol de fuente de Postgres Realice muy pocas correcciones ensrc/backend/utils/adt/varlena.c and src/backend/main/main.c para conseguir lo quequera! Di soporte slo para LC_CTYPE and LC_COLLATE, pero ms tarde otros loaadieron para LC_MONETARY . Tuve muchos mensajes de la gente a cerca de esteparche por eso decid enviarselo a los desarrolladores y (sorprendentemente) loincorporaron dentro de la distribucin Postgres .

    La gente a veces se queja que el soporte local no funciona para ellos. Hay algunoserrores comunes:

    No configurar debidamente postgresql antes de compilarlo. Tu debes ejecutar laconfiguracin con la opcin enable-locale para activar el soporte local. No iniciar elentorno correctamente cuando se inicia postmaster. Tu debes definir las variables deentorno LC_CTYPE and LC_COLLATE antes de ejecutar postmaster porque por

    8

  • Captulo 3. Opciones de Configuracin

    detrs coge informacin local del entorno. Yo uso el siguiente shell script(runpostgres):

    #!/bin/sh

    export LC_CTYPE=koi8-rexport LC_COLLATE=koi8-rpostmaster -B 1024 -S -D/usr/local/pgsql/data/ -o -Fe

    y lo ejecuto en rc.local as/bin/su - postgres -c "/home/postgres/runpostgres"

    Un soporte local estropeado en un OS (por ejemplo, el soporte local en libc bajoLinux algunas veces ha sido cambiado y esto ha causado muchos problemas) El msreciente perl tiene tambin soporte local y si el soporte local es defectuoso perl -vda un aviso parecido a esto:

    8:17[mira]:~/WWW/postgres>setenv LC_CTYPE not_exist8:18[mira]:~/WWW/postgres>perl -vperl: warning: Setting locale failed.perl: warning: Please check that your locale settings:LC_ALL = (unset),

    LC_CTYPE = "not_exist",LANG = (unset)

    are supported and installed on your system.perl: warning: Falling back to the standard locale ("C").

    Localizacin errnea de los ficheros locales! Las posibles localizaciones son:/usr/lib/locale (Linux, Solaris), /usr/share/locale (Linux),/usr/lib/nls/loc (DUX 4.0). Chequea man locale para encontrar lalocalizacin correcta. Bajo Linux yo hice un enlace simblico entre/usr/lib/locale y /usr/share/locale para estar seguro que la prxima libcno estropea mi soporte local.

    9

  • Captulo 3. Opciones de Configuracin

    3.3.1. Cuales son los Beneficios?Tu puedes usar ~* y el operador order by para cadenas que contienen caracteres dealfabetos nacionales. Los usuarios no Ingleses definitivamente lo necesitan. Si tu noquieres usar el soporte local libera la variable USE_LOCALE.

    3.3.2. Cuales son las Desventajas?Hay una evidente desventaja si utilizamos el soporte local - que el la velocidad! Poreso, utilzalo slo si verdaderamente lo necesitas.

    3.4. Autenticacin KerberosKerberos es un sistema de autenticacin de seguridad estndar industrial indicado paraser distribuido bajo redes publicas.

    3.4.1. DisponibilidadEl sistema de autenticacion Kerberos no se distribuye con Postgres. Las versiones deKerberos estn tpicamente disponibles como software opcional para los vendedores desistemas operativos. Adems, la distribucin del cdigo fuente se pede obtener a travsde MIT Project Athena (ftp://athena-dist.mit.edu).

    Nota: Puedes desear obtener la versin del MIT si tu proveedor te proporcionauna versin, ya que en algunos puntos de venta est deliberadamente capado oproporcionado sin interoperatividad con la versin del MIT.

    Los usuarios que se encuentran fuera de los Estados Unidos de Amrica o Canad estaavisados de que la distribucin del cdigo actual de encriptacin de Kerberos est

    10

  • Captulo 3. Opciones de Configuracin

    restringida por las leyes de exportacin de Gobierno U. S.

    Las preguntas acerca de tu Kerberos deben estar dirigidas a tu proveedor o a MITProject Athena ([email protected]). Notar que las FAQLs (Lista depreguntas frecuentes) se envan peridicamente a la Kerberos mailing list(mailto:[email protected]) (enva to subscribe(mailto:[email protected])), y USENET news group(news:comp.protocols.kerberos).

    3.4.2. InstalacinInstalacin de Kerberos se trata en detalle en las Notas de instalacin de Kerberos .Tener cuidado que el fichero llave servidor (the srvtab o keytab) es de algunamanera accesible para la lectura por la cuenta Postgres .

    Postgres y sus clientes pueden ser compilables para usar la versin 4 o la versin 5 delos protocolos Kerberos del MIT configurando la variable KRBVERS en el ficherosrc/Makefile.global al valor apropiado. Puedes tambin cambiar la localizacindonde espera encontrar Postgres las libreras asociadas, los ficheros de cabecera y elfichero llave del servidor.

    Cuando la compilacin se haya completado, Postgres debe registrarse como un servicioKerberos . Mirar las Notas de Operaciones de Kerberos y las pginas del manualrelacionadas para ms detalle del registro de servicios.

    3.4.3. OperacionesDespus de la instalacin inicial, Postgres debe operar en todos los sentidos como unservicio normal Kerberos . Para ms detalles en el uso de la autenticacin, ver la Guadel Usuario PostgreSQL en las secciones referentes a postmaster y psql.En los comentarios de la versin 5 de Kerberos , las siguientes suposiciones estnhechas para el usuario y el nombrado de servicio:

    11

  • Captulo 3. Opciones de Configuracin

    Los nombres de los usuarios principales (anames) se asemen para contener elnombre del usuario actual Unix/Postgres en el primer componente.

    El servicio Postgres se asume para ser tenido como dos componentes, el nombre deservicio y el nombre de host, canonizada en la versin 4 (p.e., con todos los sufijosde dominio borrados).

    Tabla 3-1. Ejemplos de Parmetros de Kerberos

    Parmetro Ejemplouser [email protected] ao-

    ki/[email protected]

    host postgres_dbms/[email protected]

    El soporte de la versin 4 desaparecer despus de algn tiempo tras la puesta enproduccin de la revisin de la versin 5 del MIT.

    12

  • Captulo 4. Distribucin del Sistema

    Figura 4-1. Distribucin de los archivos de Postgres

    Distribucin de los archivos de Postgres muestra cmo se ordena la distribucin dePostgres en su disco, cuando es instalada de la forma usual. Para simplificar,asumiremos que Postgres se ha instalado en el directorio /usr/local/pgsql. Por lotanto, siempre que se mencione el directorio /usr/local/pgsql, usted debersustituirlo por aqul en el que haya instalado Postgres en su sistema. Todas los rdenesde Postgres se instalan en en el directorio /usr/local/pgsql/bin. Por consiguiente,debera incluir este directorio en su variable de entorno de path. Si utiliza un intrpretede rdenes derivado del Berkeley C, como csh o tcsh, incluya la lnea

    set path = ( /usr/local/pgsql/bin path )

    en el archivo .login de su directorio particular (home). Si, en cambio, utiliza unintrprete de rdenes derivado del Bourne, como sh, ksh o bash, deber agregar laslneas:

    PATH=/usr/local/pgsql/bin:$PATHexport PATH

    al archivo .profile ubicado en su directorio de inicio. De aqu en adelante se asumirque usted ha agregado el directorio /usr/local/pgsql/bin a su path. Adems, eneste documento ser har referencia frecuentemente a fijar una variable del intrpretede rdenes o fijar una variable de entorno. Si no comprendi totalmente el ltimoprrafo sobre la modificacin de la variable PATH, debera consultar la documentacinsobre el funcionamiento de su intrprete de rdenes antes de continuar.

    13

  • Captulo 4. Distribucin del Sistema

    Si no ha realizado la instalacin con las opciones por defecto, tal vez tenga algo detrabajo extra. Por ejemplo, si el servidor de base de datos est ubicado en una mquinaremota, necesitar colocar el nombre del servidor en la variable de entorno PGHOST.Tal vez tambin necesite fijar la variable de entorno PGPORT. Bsicamente, si intentaejecutar una aplicacin y sta se queja por no poder conectarse con el proceso principal(postmaster), deber volver un poco sobre sus pasos y asegurarse de que ha establecidotodas las variables de entorno necesarias con los valores correctos.

    14

  • Captulo 5. Instalacin

    Instrucciones para la instalacin de PostgreSQL 7.0.

    Los comandos que se mencionana acontinuacin fueron probados utilizando el shellbash sobre la distribucin RedHat 5.2 de Linux. A menos que se indique lo conrario,estos comandos sern igualmente aplicables para la mayora de los sistemas. Comandoscomo ps y tar pueden variar entre las distintas plataformas en cuanto a las opciones quedeben usarse. Utilice su sentido comn antes de teclear cualquiera de stos comandos.

    Si an no tiene la distribucin de PostgreSQL, puede obteneral en ftp.postgresql.org(ftp://ftp.postgresql.org). Una vez obtenida, desempaquetela utilizando los siguientescomandos:

    $ gunzip postgresql-7.0.tar.gz$ tar -xf postgresql-7.0.tar$ mv postgresql-7.0 /usr/src

    Nuevamente, estos comandos pueden ser distintos en su sistema.

    5.1. Antes de comenzarPara compilar PostgreSQL se requiere la utilidad GNU make. Otras utilidades similaresno funcionarn en este caso. En los sistemas GNU/Linux, GNU make es a herramientapor defecto. En otros sistemas puede que encuentre que la herramienta GNU make seencuentre instalada con el nombre gmake. De aqu en adelante, utilizaremos estenombre para referirnos a GNU make, sin importar cul sea el nombre que tiene en susistema. Para probar GNU make teclee:

    $ gmake -version

    Si necesita obtener GNU make, lo puede encontrar en ftp://ftp.gnu.org.

    15

  • Captulo 5. Instalacin

    En http://www.postgresql.org/docs/admin/ports.htm(http://www.postgresql.org/docs/admin/ports.htm) puede encontrar informacinactualizada sobre las plataformas soportadas. En general, la mayora de la plataformascompatibles con Unix que utilicen bibliotecas actualizadas debera ser capaz de ejecutarPostgreSQL. En el subdirectorio doc de la distribucin existen varios documentos deltipo LEAME y otros con Preguntas de Uso Frecuente (FAQ en ingls) especficos paraesa distribucin, que pueden resultarle tiles si est teniendo problemas.

    La cantidad mnim de memoria que se requiere para ejecutar PostgreSQL es de slo 8MB. Sin embargo, se verifica una notable mejora en la velocidad cuando sta seexpante a 96 MB o ms. La regla es que, por ms memoria que usted instale en susistema, nunca ser demasiada.

    Verifique que esista suficiente espacio libre en el disco. Necestar alrededor de 30 MBpara los archivos con el cdigo fuente durante la compilacin, y unos 5 MB para eldirectorio de instalacin. Una base de datos vaca ocupa aproximadamente 1 MB. Deno estar vaca, la base ocupar unas cinco veces el espacio que ocupara un archivo detexto que contuviera los mismos datos.Si ejecuta las pruebas de regresin, necestiaralrededor de 20 MB extra como espacio temporal.

    Para revisar el espacio libre en el disco, utilice:

    $ df -k

    Dados los precios actuales de los discos duros, debera considerar consegui uno grandey rpido antes de poner a trabajar una base de datos.

    5.2. Procedimiento de InstalacinInstalacin de PostgreSQL

    Para una instalacin de nuevas, o una actualizacin desde una versin previa dePostgreSQL:

    16

  • Captulo 5. Instalacin

    1. Cree la cuenta de superusuario PostgreSQL. ste es el usuario bajo el que corre elservidor. Para el uso en produccin, deber usted crear una cuenta de usuariodiferente, sin privilegios (habitualmente se utiliza (postgres). Si no tiene ustedacceso como root, o quiere evitarse este paso, su propia cuenta de usuario essuficiente.

    Ejecutar PostgreSQL como root, bin, o cualquier otra cuenta con permisos deacceso especiales es un riesto de seguridad, y por ello est permitido.

    No necesitar usted compilar e instalar bajo esta cuenta (aunque puede hacerlo). Sele dir cuando necesite conectarse como el superusuario de la base de datos.

    2. Si no est usted actualizando un sistema existente, salte a paso 4.

    Ahora necesitar usted realizar una copia de seguridad (backup) de su base dedatos existente. Si tiene una instalacin razonablemente reciente de su base dedatos (posterior a la 6.0), conseguir un vaciado de la misma tecleando:$ pg_dumpall > db.out

    Si quiere usted conservar las identificacin de los objetos (oids), utilice la opcin-o al ejecutar pg_dumpall. Sin embargo, a no ser que tenga usted una raznespecial para hacer esto, como podra ser utilizar estos identificadores como clavesen las tablas, no lo haga.

    Asegurese de utilizar el comando pg_dumpall de la versin que est ustedejecutando actualemente. Pero no utilice el script de 6.0 o el superusuarioPostgreSQL tomar la propiedad de todo. Si es esta la versin que tiene usted,debera usted utilizar el comando pg_dumpall de una versin 6.x.x posterior. Elcorrespondiente a la versin 7.0 no trabajar en bases de datos anteriores. Si estusted actualizando desde una versin previa a Postgres95 v1.09, deber ustedrealizar un backup de su base de datos, instalar Postgres95 v1.09, restaurar su basede datos, y realizar el backup de nuevo.

    17

  • Captulo 5. Instalacin

    AtencinDebe usted asegurarse de que su base de datos no seactualiza durante su backup. Si es necesario, pare elpostmaster, edite los permisos del fichero/usr/local/pgsql/data/pg_hba.conf para permitirlea usted slo su uso, y relance de nuevo postmaster.

    3. Si est usted actualizando un sistema existente, mate ahora el servidor de la basede datos. Teclee:

    $ ps ax | grep postmasterEsto debera listar los nmeros de proceso para una serie de procesos, de un modosimilar a:

    263 ? SW 0:00 (postmaster)777 p1 S 0:00 grep postmaster

    Teclee la siguiente lnea, reemplazando pid con el identificador (id) del procesopostmaster (263 en el caso anterior). (No utilice el id del proceso "greppostmaster".) (N. del T. tambin puede hacerlo con la lnea$ ps ax | grep postmaster |grep -v grepque le dar la misma salida, pero sin incluir la lnea correspondiente al mismoproceso "grep". Fin de la N. del T.)$ kill pid

    Sugerencia: En sistemas que arrancan PostgreSQL en el durante lasecuencia de arranque de la mquina, probblemente se encontrara unfichero startup que cumplir el mismo cometido. Por ejemplo, en un sistemaLinux RedHat, se debera encontrar que$ /etc/rc.d/init.d/postgres.init stop

    funcione correctamente para parar la base.

    18

  • Captulo 5. Instalacin

    Tambin deber trasladar los directorios anteriores a otro sitio. Teclee lo siguiente:

    $ mv /usr/local/pgsql /usr/local/pgsql.old

    con sus propias rutas particulares.

    4. Configure el cdigo fuente para su sistema. Este es el paso en el que puede ustedespecificar su ruta de instalacin actual para el proceso de construccin, y hacerelecciones sobre lo que tenga usted instalado. Cambiese al subdirectorio src yteclee:$ ./configure

    seguido de todas las opciones que desee usted dar. Para una primera instalacin,debera ir todo bien sin dar ninguna. Para obtener una lista completa de lasopciones, teclee:./configure -help

    Algunas de las opciones que se utilizan ms a menudo son:

    prefix=BASEDIR

    Selecciona un directorio base diferente para la instalacin de PostgreSQL. Laopcin de defecto es /usr/local/pgsql.

    enable-locale

    Si quiere usted utilizar locales.

    enable-multibyte

    Le permitir utilizar pginas de caracteres multibyte. Se empleaprincipalmente para lenguajes como japons, coreano o chino.

    with-perl

    Construye la interface Perl. Note por favor que la interface Perl se instalaren el lugar habitual de los mdulos Perl (habitualmente bajo

    19

  • Captulo 5. Instalacin

    /usr/lib/perl), de modo que deber usted tener acceso root para realizaresta opcin correctamente.

    with-odbc

    Construye el paquete del driver ODBC.

    with-tcl

    Construye las libreras de interface y los programas que requieren Tcl/Tk,incluyendo libpgtcl, pgtclsh y pgtksh.

    5. Compile el programa. Teclee:$ gmake

    El proceso de compilacin ocupar entre 10 minutos y una hora, variando enfuncin de la mquina y de las opciones elegidas.

    La ltima lnea que se muestre por el proceso debera ser:All of PostgreSQL is successfully made. Ready to install.

    Recuerde que gmake se puede llamar make en su sistema.

    6. Instale el programa. Teclee:$ gmake install

    7. Dgale a su sistema como encontrar las nuevas libreras compartidas. Cmo haceresto vara de unas plataformas a otras. Lo que tiende a trabajar en todas partes esfijar la variable de entorno LD_LIBRARY_PATH:$ LD_LIBRARY_PATH=/usr/local/pgsql/lib$ export LD_LIBRARY_PATH

    Quiz quiera usted poner estas dos lneas en un script de arranque de su shell,como ~/.bash_profile.

    En algunos sistemas se prefiere el siguiente mtodo, pero debe usted tener accesoroot. Edite el fichero /etc/ld.so.conf y aada una lnea

    20

  • Captulo 5. Instalacin

    /usr/local/pgsql/lib

    Y ahora corra el comando /sbin/ldconfig.

    En la duda, dirjase a las pginas de manual de su sistema. Si recibe usted mstarde un mensaje como./psql: error in loading shared librarieslibpq.so.2.1: cannot open shared object file: No such file or di-rectory

    entonces es que todo lo anterior era necesario. Smplemente realice este paso denuevo.

    8. Cree la instalacin de la base de datos. Para hacer esto, debe usted conectarsecomo su cuenta de superusuario de PostgreSQL. No trabajar como root.$ mkdir /usr/local/pgsql/data$ chown postgres /usr/local/pgsql/data$ su - postgres$ /usr/local/pgsql/initdb -D /usr/local/pgsql/data

    La opcin -D especifica la situacin donde se almacenarn los datos. Puede ustedutilizar cualquier otro path, porque no tiene porqu estar bajo el directorio de lainstalacin. Slo asegrese de que la cuenta del superusuario puede escribir en eldirectorio (o crearlo) antes de arrancar initdb. (Si estaba usted siguiendo los pasosde la instalacin hasta ahora como el superusuario de PostgreSQL, puede que tengausted que conectarse como root temporalmente para crear el directorio de datos.)

    9. Los pasos previos deberan haberle indicado como arrancar el servidor de la basede datos. Ahagamos ahora:$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data

    Esto arrancar el servidor en primer trmino. Para mandarlo a segundo plano,utilice la opcin -S.

    10. Si est usted actualizando desde una instalacin anterior, extraiga sus datos con:$ /usr/local/pgsql/bin/psql < db.out

    21

  • Captulo 5. Instalacin

    Y haga tambin una copia de seguridad de su anterior fichero pg_hba.conf, ascomo de todos los dems ficheros que pueda usted haber creado para laautenticacin, tales como ficheros de claves de acceso.

    Con todo esto conclumos la instalacin propiamente dicha. Para hacer su vida msproductiva y agradable, debera mirar los siguientes pasos y sugerencias opcionales.

    La vida ser ms conveniente si fija usted algunas variables de entorno. Primero,probablemente quiera usted incluir /usr/local/pgsql/bin (o su equivalente) ensu PATH. Para hacer esto, aada lo siguiente en su fichero de arranque de la shell, talcomo ~/.bash_profile (o /etc/profile, si quiere usted que afecte a todos losusuarios):PATH=$PATH:/usr/local/pgsql/bin

    An ms, si usted fija la variable PGDATA en el entorno del superusuario dePostgreSQL, podr usted omitir la opcin -D para postmaster y initdb.

    Probblemente quiera usted instalar la documentacin man y HTML. Teclee$ cd /usr/src/pgsql/postgresql-7.0/doc$ gmake install

    Esto instalar ficheros bajo /usr/local/pgsql/doc y /usr/local/pgsql/man.Para permitir a su sistema encontrar la documentacin man, necesitar aadir unalnea como la siguiente en el fichero de arranque de la shell:MANPATH=$MANPATH:/usr/local/pgsql/man

    La documentacin est tambin disponible en formato Postscript. Si tiene usted unaimpresora Postscript, o tiene su impresora ya preparada para aceptar ficherosPostscript utilizando un filtro de impresin, podr imprimir la Gua de Usuariosimplemente tecleando$ cd /usr/local/pgsql/doc$ gunzip -c user.ps.tz | lpr

    22

  • Captulo 5. Instalacin

    Aqu tiene lo que debera hacer usted si tiene Ghostscript en su sistema y estescribiendo en una impresora lasejet:$ alias gshp=gs -sDEVICE=laserjet -r300 -dNOPAUSE$ export GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts$ gunzip user.ps.gz$ gshp -sOUTPUTFILE=user.hp user.ps$ gzip user.ps$ lpr -l -s -r manpage.hp

    En caso de dudas, refierase a sus manuales o a su experto local.

    Probblemente debera empezar por leer la Gua del Administrador si es ustedcompletamente nuevo en PostgreSQL, porque contiene informacin sobre comodeclarar usuarios y la autenticacin a la base de datos.

    Habitualmente, querr usted modificar su computadora de modo que arranque elservidor de base de datos siempre que se ponga en marcha. Esto no es necesario; elservidor PostgreSQL se puede ejecutar normalmente desde cuentas no privilegiadassin intervencin de root.

    Diferentes sistemas tienen diferentes convenciones para arrancar demonios en elmomento de la puesta en marcha, de modo que deber usted familiarizarse primercon ellos. La mayora de los sitemas tienen un fichero /etc/rc.local o/etc/rc.d/rc.local que en la mayora de los casos no es un mal lugar parasituar este comando. Siempre que lo haga, el postmaster deber ser ejecutado por elsuperusuario de PostgreSQL (postgres) y no por root o cualquier otro usuario. Porello, probblemente quiera usted formar las lneas de comando iniciandolas con su-c ... postgres.

    Podra ser interesante mantener un registro de las salidas del servidor. Para arrancarde esta forma el servidor, intente:nohup su -c postmaster -D /usr/local/pgsql/data > server.log 2>&1 post-gres &

    Aqu tenemos algunas otras sugerencias especficas del sistema operativo:

    23

  • Captulo 5. Instalacin

    Edite el fichero rc.local en NetBSD o el fichero rc2.d en SPARC Solaris 2.5.1 paraque contenga la siguiente lnea:su postgres -c "/usr/local/pgsql/bin/postmaster -S -D /usr/local/pgsql/data"

    En FreeBSD RELEASE-2.2 editE /usr/local/etc/rc.d/pgsql.sh para que contengalas siguientes lneas y hgale chmod 755 y chown root:bin.#!/bin/sh[ -x /usr/local/pgsql/bin/postmaster ] && {

    su -l pgsql -c exec /usr/local/pgsql/bin/postmaster-D/usr/local/pgsql/data-S -o -F > /usr/local/pgsql/errlog &

    echo -n pgsql}

    Usted puede colocar las rupturas de lneas como se muestra antes. La shell escapaz de seguir traduciendo ms all del final de la lnea si no se ha terminado unaexpresin. El exec salva un nivel de shell bajo el proceso postmaster, de modo queel padre es init.

    En Linux RedHat, aada un fichero /etc/rc.d/init.d/postgres.init quese basar en el ejemplo que se encuentra en contrib/linux/. Y a continuacinhaga in link simblico a este fichero desde/etc/rc.d/rc5.d/S98postgres.init.

    Ejecute los test de regresin. Los test de regresin son un conjunto de pruebas queverifican que PostgreSQL corre en su mquina en la forma en que los desarrolladoresesperan que lo haga. Debera hacer esto definitivamente antes de poner una servidoren uso en produccin. El fichero/usr/src/pgsql/postgresql-7.0/src/test/regress/README contieneinstrucciones detalladas para correr e interpretar los tests de regresin.

    24

  • Captulo 6. Instalacion en Win32

    Instrucciones para la instalacion de Postgres version 6.4(libreria de clientes) en Win32.

    6.1. Construccion de libreriasLos "makefiles" incluidos en Postgres estan escritos para Microsoft Visual C++ yprobablemente no trabajen en otros sistemas. Es posible compilar las libreriasmanualmente en otros casos.

    Para contruir las librerias, cambie al directorio src y escriba los comandos

    copy include\config.h.win32 include\config.hnmake /f win32.mak

    Esto asume que usted tiene Visual C++ en su camino.

    Los siguientes archivos seran creados:

    interfaces\libpq\Release\libpq.dll - La libreria dinamica enlazable interfaces\libpq\Release\libpqdll.lib - Libreria Importada para conectar

    el programa a libpq.dll interfaces\libpq\Release\libpq.lib - Version Estatica de la libreria bin\psql\Release\psql.exe - El monitor interactivo de SQL

    6.2. Instalacion de las libreriasLa unica parte de la libreria que sera realmente instalada es la libreria de libpq.dll.

    25

  • Captulo 6. Instalacion en Win32

    El archivo en la mayoria de los casos debe ser puesto en el directorioWINNT\SYSTEM32 (o en WINDOWS\SYSTEM en un sistema Windows 95/98). Si estearchivo es instalado usando un programa de instalacion, debe ser instalado con unexaminador de versiones usando VERSIONINFO que esta incluido en el archivo, paraasegurar que una version mas reciente de la libreria no sea sobre escrita.

    Si planea desarrolar usando libpq en esta maquina, tendra que anadir los directoriossrc\include y src\interfaces\libpq al camino en sus configuraciones.

    6.3. Usando las libreriasPara usar las librerias, debe anadir los archivoslibpqdll.lib a su projecto (en VisualC++, solo haga un click con el boton derecho en el projecto y escoja anadirlo).Una vez que esto esta hecho, sera posible usar la libreria como lo haria en cualquieraplataforma basada en UNIX.

    26

  • Captulo 7. Entorno de tiempo deejecucin

    En este captulo se detalla la interaccin entre Postgres y el sistema operativo.

    7.1. Utilizando Postgres desde UnixTodas las rdenes de Postgres que se ejecutan directamente desde un shell de Unix seencuentran en el directorio .../bin. Incluir este directorio en su variable de entornopath facilitar mucho la ejecucin de los mismos.Existe una coleccin de catlogos del sistema en cada servidor. La misma incluye unaclase (pg_user) que contiene una instancia para cada usuario vlido en Postgres. Lainstancia especifica un conjunto de privilegios sobre Postgres, como la posibilidad deactuar como superusuario en Postgres, la posibilidad de crear/destruir bases de datos yla posibilidad de actualizar los catlogos del sistema. Un usuario de Unix no puedehacer nada con Postgres hasta que se instale una instancia apropiada en dicha clase.Puede encontrarse ms informacin sobre los catlogos del sistema ejecutandoconsultas sobre las clases apropiadas.

    7.2. Iniciando postmasterNo le puede suceder nada a una base de datos a menos que est corriendo el procesopostmaster. Como administrador, hay una serie de cosas que debe recordar antes deiniciar postmaster. Vea las secciones de instalacin y configuracin en este mismomanual. De todos modos, si ha unstalado Postgres siguiendo las instrucciones deinstalacin al pie de la letra, lo nico que tendr que hacer para iniciar el procesopostmaster es introducir esta simple rden:

    % postmaster

    27

  • Captulo 7. Entorno de tiempo de ejecucin

    Ocasionalmente, postmaster escribe mensajes que le sern de ayuda para resolverproblemas. Si desea ver los mensajes de diagnstico de postmaster, puede iniciarlo conla opcin -d y redirigir la salida al archivo de registro:

    % postmaster -d > pm.log 2>&1 &

    Si no desea ver los mensajes, incielo de la forma% postmaster -S

    y postmaster ser "S"ilencioso. Observe que al no haber el signo ampersand ("&") alfinal del ltimo ejemplo, no se ejecuta como proceso de fondo.

    7.3. Usando pg_options

    Nota: Contribucin de Massimo Dal Zotto (mailto:[email protected])

    El archivo opcional data/pg_options contiene opciones usadas por el backend paracontrolar los mensajes de trazado y otros parmetros ajustables del mismo. El archivose vuelve a leer cuando el backend recibe la seal SIGHUP, permitiendo cambiar lasopciones de tiempo de ejecucin al vuelo, sin que sea preciso reiniciar Postgres. Eneste archivo se pueden inclur opciones de depuracin usadas por el paquete de trazado(backend/utils/misc/trace.c) o parmetros numricos usados por el backendpara controlar su comportamiento.

    28

  • Captulo 7. Entorno de tiempo de ejecucin

    Todas las pg_options se inicializan a cero al iniciar el backend. Si se aaden o semodifican opciones, sern ledas por todos los backend que se inicien a continuacin.Para que cualquier cambio tome efecto en los backend que estn activos, es precisoenviar una seal SIGHUP al postmaster, quien reenviar la seal a todos los backendactivos. Se pueden activar los cambios para un backend especfico envindoledirectamente una seal SIGHUP.

    Las pg_options pueden especificarse tambin con la opcin -T de Postgres:

    postgres opciones -T "verbose=2,query,hostlookup-"

    Las funciones usadas para indicar errores y mensajes de depuracin pueden usar lafacilidad syslog(2). Los mensajes que se escriben en stdout o stderr incluyen un prefijocon la fecha, la hora y el nmero de proceso del backend que las genera.

    #timestamp #pid #message980127.17:52:14.173 [29271] StartTransactionCommand980127.17:52:14.174 [29271] ProcessUtility: drop table t;980127.17:52:14.186 [29271] SIIncNumEntries: table is 70% full980127.17:52:14.186 [29286] Async_NotifyHandler980127.17:52:14.186 [29286] Waking up sleeping backend process980127.19:52:14.292 [29286] Async_NotifyFrontEnd980127.19:52:14.413 [29286] Async_NotifyFrontEnd done980127.19:52:14.466 [29286] Async_NotifyHandler done

    Este formato facilita la lectura de los mensajes y permite saber exactamete lo que hacecada backend y en qu momento. Tambin facilita la escritura de scripts awk o perlsencillos que analicen los historiales para detectar errores o problemas en la base dedatos o para calcular estadsticas temporales de transaciones.

    Los mensajes escritos a travs de syslog utilizan la facilidad LOG_LOCAL0. El uso desyslog se controla mediante la opcin syslog en pg_options. Por desgracia, muchas

    29

  • Captulo 7. Entorno de tiempo de ejecucin

    funciones llaman directamente a printf() para escribir sus mensajes a stdout o stderr,cuya salida no se puede controlar mediante la opcin syslog ni puede inclur fecha yhora. Sera recomendable sustituir todas las llamadas a printf con la macro PRINTF, ytodas las escrituras a stderr por la macro EPRINTF, para poder controlar toda la salidade un modo uniforme.

    El formato del archivo pg_options es como sigue:

    # comentariooption=valor_entero # Establece el valor de optionoption # establece option = 1option+ # establece option = 1option- # establece option = 0

    Observe que keyword puede ser una abreviatura de un nombre de opcin de losdefinidos en backend/utils/misc/trace.c.

    Ejemplo 7-1. Archivo pg_options

    Por ejemplo, mi archivo pg_options contiene los siguientes valores:verbose=2queryhostlookupshowportnumber

    30

  • Captulo 7. Entorno de tiempo de ejecucin

    7.3.1. Opciones reconocidasActualmente estn definidas las opciones:

    all

    Marca de traza global. Los valores permitidos son:

    0

    Mensajes de trazado activados individualmente

    1

    Activar todos los mensajes de trazado

    -1

    Inhibir todos los mensajes de trazado

    verbose

    Marca de verbosidad. Valores permitidos:

    0

    Sin mensajes, ste es el valor por omisin.

    1

    Escribir mensajes de informacin.

    2

    Escribir ms mensajes de informacin.

    31

  • Captulo 7. Entorno de tiempo de ejecucin

    query

    Trazar peticiones. Valores permitidos:

    0

    No escribir la peticin.

    1

    Escribir una versin condensada de la peticin en una lnea.

    4

    Escribir la consulta completa.

    plan

    Escribir el plan de consulta.

    parse

    Escribir la salida del traductor de consultas.

    rewritten

    Escribir la consulta reescrita.

    parserstats

    Escribir las estadsticas del traductor de consultas.

    plannerstats

    Escribir las estadsticas del planificador.

    executorstats

    Escribir las estadsticas de ejecucin.

    32

  • Captulo 7. Entorno de tiempo de ejecucin

    shortlocks

    De momento no se usa, pero se precisa para habilitar nuevas caractersticas en elfuturo.

    locks

    Trazar bloqueos.

    userlocks

    Trazar bloqueos de usuario.

    spinlocks

    Trazar spin locks.

    notify

    Trazar funciones de notificacin.

    malloc

    Sin uso por el momento.

    palloc

    Sin uso por el momento.

    lock_debug_oidmin

    Minimum relation oid traced by locks.

    lock_debug_relid

    oid, if not zero, of relation traced by locks.

    lock_read_priority

    Sin uso por el momento.

    33

  • Captulo 7. Entorno de tiempo de ejecucin

    deadlock_timeout

    Temporizador de comprobacin de bloqueos circulares..

    syslog

    Marca de syslog. Valores permitidos:

    0

    Mensajes a stdout/stderr.

    1

    Mensajes a stdout/stderr y syslog.

    2

    Mensajes solamente a syslog.

    hostlookup

    Habilitar la consulta de nombre de host en ps_status.

    showportnumber

    Mostrar el nmero de puerto en ps_status.

    notifyunlock

    Desbloqueo de pg_listener despus de notify.

    notifyhack

    Borrar tuplas duplicadas de pg_listener.

    34

  • Captulo 8. SeguridadLa seguridad de la base de datos esta implementada en varios niveles:

    Proteccin de los ficheros de la base de datos. Todos los ficheros almacenados en labase de datos estan protegidos contra escritura por cualquier cuenta que no sea la delsuperusuario de Postgres.

    Las conexiones de los clientes al servidor de la base de datos estan permitidas, pordefecto, nicamente mediante sockets Unix locales y no mendiante sockets TCP/IP.Ha de arrancarse el demonio con la opcion -i para permitir la conexion de clientesno locales.

    Las conexiones de los clientes se pueden restringir por direccin IP y/o por nombrede usuario mediante el fichero pg_hba.conf situado en PG_DATA.

    Las conexiones de los clientes pueden ser autentificadas mediante otros paquetesexternos.

    A cada usuario de Postgres se le asigna un nombre de usuario y (opcionalmente) unacontrasea. Por defecto, los usarios no tienen permiso de escritura a bases de datosque no hayan creado.

    Los usuarios pueden ser incluidos en grupos, y el acceso a las tablas puederestringirse en base a esos grupos.

    8.1. Autentificacion de UsuariosAutentificacion es el proceso mediante el cual el servidor de la base de datos y elpostmaster se aseguran de que el usario que est solicitando acceso a la base de datos esen realidad quien dice ser. Todos los usarios que quieren utilizar Postgres se

    35

  • Captulo 8. Seguridad

    comprueban en la tabla pg_user para asegurarse que estn autorizados a hacerlo.Actualmente, la verificacin de la identidad del usuario se realiza de distintas formas:

    Desde la shell del usuario

    Un demonio que se lanza desde la shell del usuario anota el id original del usuarioantes de realizar un setuid al id del usuario postgres. El id original delusuario se emplea como base para todo tipo de comprobaciones.

    Desde la red

    Si Postgres se instala como distribuido, el acceso al puerto TCP del postmasterest disponible para todo el mundo. El ABD configura el fichero pg_hba.confsituado en el directorio PG_DATA especificando el sistema de autentificacion autilizar en base al equipo que realiza la conexin y la base de datos a la que seconecta. Ver pg_hba.conf(5) para obtener una descripcin de los sistemas deautentificacin disponibles. Por supuesto la autentificacin basada en equipos noes perfecta incluso en los sistemas Unix. Es posible, para determinados intrusos,enmascarar el equipo de origen. Estos temas de seguridad estn fuera del alcancede Postgres.

    8.2. Nombres de usuario y gruposPara crear un nuevo usuario, ejecute el programa createuser.Para aadir un usario o un grupo de usarios a un nuevo grupo uno de los usuarios debecrear el grupo y aadir al resto a ese grupo. En Postgres estos pasos no puedenrealizarse actualmente mendiante el comando create group. Los grupos se definenaadiendo los valores a la tabla pg_group, y usando el comando grant para asignarprivilegios al grupo.

    36

  • Captulo 8. Seguridad

    8.2.1. Crear Usuarios

    8.2.2. Crear GruposActualmente no hay una forma facil de crear grupos de usuarios. Hay queaadirlos/actualizarlos uno a uno en la tabla pg_group table. Por ejemplo: jolly=>insert into pg_group (groname, grosysid, grolist) jolly=> values (posthackers, 1234,{5443, 8261}); INSERT 548224 jolly=> grant insert on foo to group posthackers;CHANGE jolly=> Los campos de pg_group son: * groname: El nombre del grupo. Estecampo debe de ser unicamente alfanumrico. No aadas subrayados u otros signos depuntuacin. * grosysid: El id del grupo. El tipo del campo es int4 y debe de ser nicopara cada grupo. * grolist: La lista de id de usarios que pertenecen al grupo. Este campoes de tipo int4.

    8.2.3. Asignar usuarios a los Grupos

    8.3. Control de AccesoPostgres proporciona mecanismos para permitir a los usuarios limitar el acceso queotros usuarios tendrn a sus datos.

    SuperUsuarios de la Base de Datos

    Los SuperUsuarios de la base de datos (aquellos que tienen el campopg_user.usesuper activado) ignoran todos los controles de acceso descritosanteriormente con dos excepciones: las actualizaciones del catlogo del sistema noestn permitidas si el usuario no tiene el campo pg_user.usecatupd activado, y

    37

  • Captulo 8. Seguridad

    nunca se permite la destruccin del catlogo del sistema (o la modificacin de susestructuras).

    Privilegios de acceso

    El uso de los privilegios de acceso para limitar la lectura, escritura y la puesta dereglas a las clases se trata en grant/revoke(l).

    Borrado de clases y modificacin de estructuras.

    Los comandos que borran o modifican la estructura de una clase, como alter,drop table, y drop index, solo funcionan con el propietario de la clase. Comohemos dicho antes, estas operaciones no estn permitidas nunca en los catlogosdel systema.

    8.4. Funciones y ReglasLas funciones y las reglas permiten a los usuarios insertar cdigo en el servidor de labase de datos que otros usuarios pueden ejecutar sin saberlo. Ambos mecanismospermiten a los usuarios alojar caballos de troya con relativa impunidad. La nicaproteccin efectiva es un estrecho control sobre quien puede definir funciones (porejemplo, escribir en tablas con campos SQL) y reglas. Tambin se recomienda auditarseguimientos y alertas en pg_class, pg_user y pg_group.

    8.4.1. FuncionesLas funciones escritas en cualquier lenguaje excepto SQL se ejecutan por el servidor dela base de datos con el mismo permiso que el usuario postgres (el servidor de labase de datos funciona con el user-id de postgres. Es posible cambiar las estructurasde datos internas del servidor por los usuarios, desde dentro de funciones de confianza.Es por ello que este tipo de funciones pueden, entre otras cosas, evitar cualquier

    38

  • Captulo 8. Seguridad

    sistema de control de acceso. Este es un problema inherente a las funciones definidaspor los usuarios en C.

    8.4.2. ReglasComo en las funciones SQL, las reglas tamben se ejecutan con la identidad y lospermisos del usuario que llam al servidor de la base de datos.

    8.4.3. CaveatsThere are no plans to explicitly support encrypted data inside of Postgres (though thereis nothing to prevent users from encrypting data within user-defined functions). Thereare no plans to explicitly support encrypted network connections, either, pending a totalrewrite of the frontend/backend protocol.

    User names, group names and associated system identifiers (e.g., the contents ofpg_user.usesysid) are assumed to be unique throughout a database. Unpredictableresults may occur if they are not.

    39

  • Captulo 9. Agregar y Eliminar Usuarioscreateuser permite que usuarios especficos accedan a Postgres. dropuser eliminausuarios y previene que stos accedan a Postgres.

    Estas rdenes slo afectan a los usuarios con respecto a Postgres; no tienen efecto enotros privilegios del usuario o en su estado con respecto al sistema operativosubyacente.

    40

  • Captulo 10. Gestin de Disco

    10.1. Localizaciones AlternativasSe puede crear una base de datos en una localizacin diferente a la establecida pordefecto durante la instalacin. Recuerde que todos los accesos a base de datos ocurrenrealmente a traves del proceso en segundo plano, as que ste debe poder acceder acualquier especificacin.

    Se crean localizacines alternativas y referencias mediante una variable de entorno queda el path absoluto hasta la situacin de almacenamiento deseada. Esta variable deentorno debe estar definida antes de que el proceso en segundo plano sea arrancado ydebe ser modificable mediante la cuenta del administrador de postgres. Cualquiervariable de entorno puede ser utilizada para referirse a una localizacin alternativa, sibien se recomienda la utilizacin de un nombre de variable con prefijo PGDATA paraevitar confusin y conflicto con otras variables.

    Nota: En versiones previas de Postgres, tambin estaba permitido utilizar unnombre de path absoluto para especificar una localizacin de almacenamientoalternativa. Se prefiere el mtodo de especificacin de variables de entorno,puesto que concede al administrador del sistema ms flexibilidad en la gestindel almacenamiento en disco. Si prefiere utilizar paths absolutos, puede hacerlodefiniendo "ALLOW_ABSOLUTE_DBPATHS" y recompilando Postgres. Parahacer esto, aada cualquiera de estas lneas

    #define ALLOW_ABSOLUTE_DBPATHS 1

    al archivo src/include/config.h, o especifique

    CFLAGS+= -DALLOW_ABSOLUTE_DBPATHS

    en su Makefile.custom.

    41

  • Captulo 10. Gestin de Disco

    Recuerde que la creacin de una base de datos la ejecuta realmente un proceso de labase de datos en segundo plano. Por lo tanto, cualquier variable de entorno queespecifique una localizacin alternativa debe ser definida antes de que el proceso ensegundo plano sea arrancado. Para definir una localizacin alternativa apuntando aPGDATA2 /home/postgres/data, primero escriba

    % setenv PGDATA2 /home/postgres/data

    para definir la variable de entorno que ser utilizada con las rdenes siguientes.Normalmente, querr definir esta variable en el fichero de inicializacin del superusuario de Postgres, .profile o .cshrc para asegurar que est definido al arrancar elsistema. Se puede utilizar cualquier variable de entorno para referirse a una localizacinalternativa, aunque se prefiere que las variables estn prefijadas con "PGDATA" paraeliminar confusiones y la posibilidad de conflictos con otras variables, o su reescritura.

    Para crear un area de almacenamiento de datos en PGDATA2, asegrese de que/home/postgres ya existe y puede ser escrito por el administrador de postgres.Despus desde la linea de rdenes, escriba

    % setenv PGDATA2 /home/postgres/data% initlocation $PGDATA2Creating Postgres database system directory /home/postgres/data

    Creating Postgres database system directory /home/postgres/data/base

    Para comprobar la nueva localizacin, cree una base de datos test escribiendo

    % createdb -D PGDATA2 test% dropdb test

    42

  • Captulo 10. Gestin de Disco

    43

  • Captulo 11. Gestin de una base dedatos

    Si el programa postmaster de Postgres est cargado y en ejecucin, podemos crearalgunas bases de datos con las que experimentar. En este documento describiremos lasrdenes bsicos para gestionar una base de datos.

    11.1. Creacin de una base de datosSupongamos que quiere crear una base de datos llamada mibase. Puede hacerlo con elsiguiente orden:

    % createdb nombredb

    Postgres le permite crear cualquier nmero de bases de datos en una mquina dada, yusted se convierte automticamente en el administrador de la base de datos que acabade crear. Los nombres de las bases de datos han de comenzar por un caracter alfabtico,y su longitud est limitada a 31 caracteres. No todos los usuarios estn autorizados paraconvertirse en administradores de bases de datos. Si Postgres rechaza la orden de crearbases de datos, es que necesita que el administrador del sistema le garantice derechospara crear las bases de datos. Consulte a su administrador de sistemas si le ocurre eso.

    11.2. Acceso a la base de datosUna vez que ha construido la base de datos, puede acceder a ella por los siguientesmedios:

    Ejecutando el programa monitor de terminal de Postgres (psql) que le permite

    44

  • Captulo 11. Gestin de una base de datos

    introducir, editar y ejecutar rdenes SQL de un modo interactivo. Escribiendo un programa en C que use la biblioteca de rutinas libpq. Esto le

    permite enviar rdenes SQL desde C y obtener las respuestas y mensajes de estadoen su programa. Esta interfaz se discute en el documento Gua de programacin enPostgreSQL.

    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

    Recibir como respuesta el siguiente mensaje:Welcome to the Postgres interactive sql monitor:

    type \? for help on slash commandstype \q to quittype \g or terminate with semicolon to execute query

    You are currently connected to the database: nombredb

    nombredb=>

    Este indicativo le informa de que el monitor de terminal se encuentra dispuesto y quepuede escribir consultas SQL en el espacio de trabajo creado por el citado monitor determinal. El programa psql responde a cdigos de escape que comienzan con la barrainvertida, "\". Por ejemplo, puede obtener ayuda sobre la sintaxis de varias rdenesSQL de Postgres escribiendo:

    nombredb=> \h

    Una vez que ha terminado de introducir sus consultas en el espacio de trabajo, puedepasar el contenido de ste al servidor de Postgres escribiendo:

    45

  • Captulo 11. Gestin de una base de datos

    nombredb=> \g

    Esto le dice al servidor que procese la consulta. Si termina su consulta con punto ycoma, no es necesario que introduzca la secuencia \g. psql procesar automticamenteconsultas terminadas en punto y coma. Para leer las consultas de un fichero, en lugar deintroducirlas interactivamente, escriba:

    nombredb=> \i fichero

    Para salir de psql y volver a Unix, escriba:

    nombredb=> \q

    y psql terminar y le devolver el intrprete de rdenes. (Para conocer ms rdenes deescape, escriba \h en la entrada del monitor.) Los espacios en blanco (espacios,tabuladores y saltos de lnea) pueden usarse libremente en las consultas SQL. Loscomentarios en una sola lnea se indican mediante dos guiones (). Todo lo que vayadesde los guiones hasta el fin de la lnea ser ignorado. Los comentarios que abarcanmltiples lneas, o que estn dentro de una lnea se encierran entre /* ... */, unaconvencin que se tom prestada de Ingres.

    11.3. Destruccin de una base de datosSi usted es el administrador de la base de datos mibase, puede destruirla usando elsiguiente orden de Unix:

    % dropdb nombredb

    Esta accin elimina fsicamente todos los ficheros asociados con la base de datos y nopuede ser invertida, por lo que slo debe ser usada con gran precaucin.

    46

  • Captulo 11. Gestin de una base de datos

    Es tambin posible destruir una base de datos desde una sesin SQL usando:

    > drop database nombredb

    11.4. Copia de seguridad y restauracin

    AtencinDeben realizarse copias de seguridad de las bases de datosregularmente. Dado que Postgres gestiona sus propios ficherosen el sistema, no se recomienda confiar en los sistemas de copiade seguridad del sistema para las copias de respaldo de lasbases de datos; no hay garanta de que los ficheros estn en unestado consistente que permita su uso despus de larestauracin.

    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 pararealizar copias de seguridad de toda la instalacin de una sola vez.

    La copia de seguridad de una sola base de datos puede realizarse usando la siguienteorden:

    % pg_dump nombredb > nombredb.pgdump

    y puede ser restaurada usando

    cat nombredb.pgdump | psql nombredb

    47

  • Captulo 11. Gestin de una base de datos

    Esta tcnica puede usarse para mover bases de datos a una nueva localizacin y pararenombrar bases de datos existentes..

    11.4.1. Bases de datos grandes

    Autor: Escrito por Hannu Krosing ([email protected]) on 1999-06-19.

    Dado que Postgres permite tablas de mayor tamao que el permitido por el sistema deficheros, puede resultar problemtico el volcado de una tabla a un fichero, ya que elfichero resultante seguramente superar el tamao mximo permitido.

    Como pg_dump escribe en stdout, puede usar las herramientas *nix para sortear estosposibles problemas:

    Uso de volcados comprimidos:% pg_dump nombredb | gzip > nombrefichero.dump.gz

    la recuperamos con:% createdb nombredb% gunzip -c nombrefichero.dump.gz | psql nombredb

    o

    % cat nombrefichero.dump.gz | gunzip | psql nombredb

    Use split:% pg_dump nombredb | split -b 1m - nombrefichero.dump.

    y lo recuperamos con:% createdb nombredb

    48

  • Captulo 11. Gestin de una base de datos

    % cat nombrefichero.dump.* | pgsql nombredb

    Por supuesto, el nombre del fichero (nombrefichero) y el contenido de la salida depg_dump no tiene por qu coincidir con el nombre de la base de datos. Adems, la basede datos restaurada puede tener un nombre distinto, por lo que este mecanismo tambines efectivo para renombrar bases de datos.

    49

  • Captulo 12. Tratamiento de problemas

    12.1. Fallos de inicio de PostmasterHay varias posibles razones para que postmaster no pueda inicializarse. Compruebe elfichero de registro de postmaster, o incielo manualmente (sin redirigir la salidaestndar o la de errores) para ver los mensajes que aparecen. Alguno de los posiblesmensajes de error son autoexplicativos, pero los hay que pueden no serlos tanto:

    FATAL: StreamServerPort: bind() failed: Address already in useIs another postmaster already running on that port?

    Esto normalmente significa lo que sugiere: accidentalmente ha iniciado una segundainstancia de postmaster en el mismo puerto en el que ya se est ejecutando uno. Sinembargo, si el mensaje de error del ncleo no es "Address already in use" o algunavariante, puede estar ocurriendo otro problema. Por ejemplo, el tratar de iniciar unasesin de postmaster en un puerto de error reservado puede producir algo como:

    $ postmaster -i -p 666FATAL: StreamServerPort: bind() failed: Permission denied

    Is another postmaster already running on that port?

    IpcMemoryCreate: shmget failed (Invalid argument) key=5440001, si-ze=83918612, permission=600FATAL 1: ShmemCreate: cannot create region

    Un mensaje como ste posiblemente indica que el limite impuesto al tamao de laszonas de memoria compartidas es menor que rea de buffer que Postgres est

    50

  • Captulo 12. Tratamiento de problemas

    intentando crear. (O puede significar que no dispone de soporte para