Tips 7.x
Cambiar Dueño de la Base de Datos en Versiones 7.x
Existen algunas formas para esto. Una de ellas es utilizando una linea de comando como esta:
pg_dump -U<usuarioViejo> <base> | perl -pe 's/- <usuarioViejo>/- <usuarioNuevo>/g' > db.sql
Luego el archivo lo podés restaurar y te recomiendo borrar la base anterior del cluster.
Otra forma, que requiere más espacio (exactamente el tamaño de la base a clonar), es crear una base utilizando de template la anterior:
CREATE DATABASE pepe TEMPLATE=<viejaBase> OWNER=<nuevoDueño>;
Existe otra forma inclusive, en el caso que no contemos con espacio suficiente para los backups o para clonar la base, que consta de varios pasos (con Bash):
sudo -u postgres /usr/bin/createuser -a -d <nuevo_usuario> sudo psql -Upostgres <base_de_datos> -c "update pg_database set datdba = ( select usesysid from pg_shadow where usename = '<nuevo_usuario>') where datname = '<base_de_datos>' ;"
Exportamos un listado de objetos (para tablas con '\d' es suficiente) de nuestra base de datos a un archivo llamado tablas.dat .Sobre ese archivo ejecutaremos:
for table in `cat tablas.dat`;do sudo psql -Upostgres <base_de_datos> -c " alter TABLE $table owner to <nuevo_usuario>;";done sudo -u postgres /usr/bin/dropuser <viejo_usuario>
Error al leer bloques físicos
Suele suceder, cuando abruptamente se apaga un 'servidor', que al iniciar nos aparezca un error PANIC: Invalid page header in block.
Existe una forma de ignorar los errores de bloque. Para esto debemos setear (con el sercicio postgresql abajo) zero_damaged_pages = on en el postgresql.conf.
Ahora teniendo esta variable seteada iniciamos postgres. Luego de haber iniciado, inmediatamente debemos generar un dump con la herramienta pg_dump.
Luego de haber finalizado esta tarea precedemos a bajar el servicio de postgres y a comentar la linea agregada en el párrafo 2.
Ahora sí podremos iniciar Postgres y restaurar la base desde el dump generado.
NOTA: zero_damaged_pages está incluido en 8.x, pero la detección de la inaccesibilidad de las páginas es automática y se repara automáticamente.