четверг, 19 апреля 2012 г.

Зависшие Prepared Transaction в Postgres

Если в базе postgres не удаляется таблица (на запрос drop database сервер выдает ошибку database is being accessed by other users, хотя ни кто базу не использует) или в этой таблице невозможно изменить данные и перезагрузка сервера тоже не помогает, то следует обратить внимание на зависшие распределенные транзакции.
Выполняем запрос: select * from pg_prepared_xacts
Копируем значение поля gid.
Теперь выполняем запрос: ROLLBACK PREPARED 'gid'
где gid - скопированное значение.

Настраиваем Glassfish 3.2 на использование логгера log4j

  1. Качаем log4j jar
  2. Копируем его в директорию Glassfish /lib. 
  3. Создаем файл настроек log4j.properties и кладем его в директорию /config домена (например, GLASSFISH_HOME/domains/domain1/config/) 
  4. Добавляем опцию JVM Dlog4j.configuration=file:///${com.sun.aas.instanceRoot}/config/log4j.properties 
  5. Перезапускаем Glassfish 
  6. Profit!!!

Список таблиц/индексов и их размеров

SELECT relname AS "relation" , pg_size_pretty ( pg_relation_size ( C . oid )) AS "size" FROM pg_class C LEF...