2014-11-05

PostgreSQL ERROR: could not access status of transaction

Давича на версии 8.2.23 получили мы такую вот хрень:

postgres@cn:~> psql
psql (9.2.4, сервер 8.2.23)
ПРЕДУПРЕЖДЕНИЕ: psql имеет версию 9.2, а сервер - 8.2.
                Часть функций psql может не работать.
Введите "help", чтобы получить справку.

postgres=# \c cndata
psql (9.2.4, сервер 8.2.23)
ПРЕДУПРЕЖДЕНИЕ: psql имеет версию 9.2, а сервер - 8.2.
                Часть функций psql может не работать.
Вы подключены к базе данных "cndata" как пользователь "postgres".
cndata=# vacuum analyze pp_movement;
ERROR:  relation "pp_movement" does not exist
cndata=# vacuum analyze cn.pp_movement;
ERROR:  could not access status of transaction 655427477
ПОДРОБНОСТИ:  Could not open file "pg_clog/0271": Нет такого файла или каталога.
cndata=# reindex table cn.pp_movement;
ERROR:  could not access status of transaction 655427477
ПОДРОБНОСТИ:  Could not open file "pg_clog/0271": Нет такого файла или каталога.


Предпосылок к возникновению такой фигни на сервере не нашли. Поэтому побродив по просторам интернета полечили таким вот способом:

cn:/opt/pgsql-8.2/data/pg_clog # dd if=/dev/zero of=0271 bs=256K count=1
1+0 records in
1+0 records out
262144 bytes (262 kB) copied, 0.000657219 s, 399 MB/s
cn:/opt/pgsql-8.2/data/pg_clog # chown postgres:postgres 0271

cndata=# select count(*) from cn.pp_movement;
ERROR:  could not access status of transaction 3332701758
ПОДРОБНОСТИ:  Could not open file "pg_clog/0C6A": Нет такого файла или каталога.

cn:/opt/pgsql-8.2/data/pg_clog # dd if=/dev/zero of=0C6A bs=256K count=1; chown postgres:postgres *
1+0 records in
1+0 records out
262144 bytes (262 kB) copied, 0.000499456 s, 525 MB/s

cndata=# select count(*) from cn.pp_movement;
ERROR:  could not access status of transaction 57351653
ПОДРОБНОСТИ:  Could not open file "pg_clog/0036": Нет такого файла или каталога.


cn:/opt/pgsql-8.2/data/pg_clog # dd if=/dev/zero of=0036 bs=256K count=1; chown postgres:postgres *
1+0 records in
1+0 records out
262144 bytes (262 kB) copied, 0.000472071 s, 555 MB/s


cndata=# select count(*) from cn.pp_movement;                                                                       
ERROR:  could not access status of transaction 1653895707                                                           
ПОДРОБНОСТИ:  Could not open file "pg_clog/0629": Нет такого файла или каталога.

cn:/opt/pgsql-8.2/data/pg_clog # dd if=/dev/zero of=0629 bs=256K count=1; chown postgres:postgres *
1+0 records in
1+0 records out
262144 bytes (262 kB) copied, 0.000490669 s, 534 MB/s

cndata=# select count(*) from cn.pp_movement;                                                                       
ERROR:  could not access status of transaction 4102869982                                                           
ПОДРОБНОСТИ:  Could not open file "pg_clog/0F48": Нет такого файла или каталога.

cn:/opt/pgsql-8.2/data/pg_clog # dd if=/dev/zero of=0F48 bs=256K count=1; chown postgres:postgres *
1+0 records in
1+0 records out
262144 bytes (262 kB) copied, 0.000469307 s, 559 MB/s

cndata=# select count(*) from cn.pp_movement;                                                                      
ERROR:  could not access status of transaction 3931397121                                                          
ПОДРОБНОСТИ:  Could not open file "pg_clog/0EA5": Нет такого файла или каталога.

cn:/opt/pgsql-8.2/data/pg_clog # dd if=/dev/zero of=0EA5 bs=256K count=1; chown postgres:postgres *
1+0 records in
1+0 records out
262144 bytes (262 kB) copied, 0.000490203 s, 535 MB/s

cndata=# select count(*) from cn.pp_movement;
ERROR:  could not access status of transaction 309829755
ПОДРОБНОСТИ:  Could not open file "pg_clog/0127": Нет такого файла или каталога.

cn:/opt/pgsql-8.2/data/pg_clog # dd if=/dev/zero of=0127 bs=256K count=1; chown postgres:postgres *
1+0 records in
1+0 records out
262144 bytes (262 kB) copied, 0.000480744 s, 545 MB/s


cndata=# select count(*) from cn.pp_movement;
  count 
---------
 1308439
(1 строка)

Походу потеряли часть транзакций, но все заработало.
Пора валить на 9-ю версию...

Читать далее

2014-10-02

ORA-00354: corrupt redo log block heade

2014.10.02

Техническая информация:
Операционная система: SuSE Linux Enterprise Server 8 Service Pack 3 32bit
БД: Oracle Enterprise Server 8.1.7.4 32bit
Дополнительная информация: Указанная проблема возникала ранее 1 раз - 28.08.2014.

Симптомы проблемы:

1. При подключении к ПО «Финколлекции» выдается ошибка о невозможности подключения в связи с невозможностью произвести архивирование журналов транзакций (Connect Internal Only until freed).
2. В файле /u01/admin/main/bdump/alert_main.log множественные сообщения (аналогичные указанному с учетом того, что могут быть другие даты и имена файлов):

Thu Oct 2 00:04:11 2014
ARC0: Beginning to archive log# 7 seq# 16005
ARC0: Archiving not possible: No primary destinations
ARC0: Failed to archive log# 7 seq# 16005

Описание проблемы:

В журнале транзакций, находящемся в группе 7 обнаружен поврежденный блок данных, в результате чего операции с данным журналом транзакций невозможны.

Причины возникновения проблемы:

Причины возникновения неясны. Предположительно связано с устаревшей версией БД Oracle. При анализе возникновения ошибки была проведена проверка файловой системы сервера, анализ журналов работы системы. Никаких предпосылок к возникновению проблемы обнаружено не было.

Методика решения:

adonis:/u01/admin/main/bdump # su - oracle
oracle@adonis:~> export ORACLE_SID=main
oracle@adonis:~> svrmgrl
SVRMGR> connect internal
Connected.
SVRMGR> shutdown abort
ORACLE instance shut down.
SVRMGR> startup
ORACLE instance started.
Total System Global Area 1726288032 bytes
Fixed Size 73888 bytes
Variable Size 250187776 bytes
Database Buffers 1475198976 bytes
Redo Buffers 827392 bytes
Database mounted.
ORA-16038: log 7 sequence# 16005 cannot be archived
ORA-00354: corrupt redo log block header
ORA-00312: online log 7 thread 1: '/u02/oradata/main/redo07_01.rdo'
ORA-00312: online log 7 thread 1: '/u03/oradata/main/redo07_02.rdo'
SVRMGR> alter database clear unarchived logfile group 7;
Statement processed.
SVRMGR> alter database drop logfile group 7;
Statement processed.
SVRMGR> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SVRMGR> startup
ORACLE instance started.
Total System Global Area 1726288032 bytes
Fixed Size 73888 bytes
Variable Size 250187776 bytes
Database Buffers 1475198976 bytes
Redo Buffers 827392 bytes
Database mounted.
Database opened.
SVRMGR>

Замечания после устранения:

Во время решения проблемы была удалена группа журналов транзакций №7. Восстанавливаем ее. Не покидая консоль, открытую в пункте «Методика решения», выполняем:

SVRMGR> !
oracle@adonis:~> rm -v /u02/oradata/main/redo07_01.rdo
removed `/u02/oradata/main/redo07_01.rdo'
oracle@adonis:~> rm -v /u03/oradata/main/redo07_02.rdo
removed `/u03/oradata/main/redo07_02.rdo'
oracle@adonis:~> exit
exit
SVRMGR> ALTER DATABASE ADD LOGFILE GROUP 7
('/u02/oradata/main/redo07_01.rdo',
'/u03/oradata/main/redo07_02.rdo') SIZE 10240K REUSE
/ 2> 3> 4>
Statement processed.
SVRMGR>

Кроме того, цепочка архивных журналов транзакций в результате невозможности архивирования группы 7 была разорвана. В случае необходимости проведения восстановления БД с использованием журналов за период времени, включающий поломку, операция восстановления будет невозможна.

Читать далее

2014-08-18

Приколы с конфигурированием cyrus-imapd

После долгих мучений с применением параметров с конфигурационных файлах cyrus-imapd выяснилось:

Если ты в конфигурационном файле /etc/imapd.conf изменил значение параметра, то последующее комментирование данного параметра не вернет его в значение по умолчанию. По крайней мере это касается версии 2.4.17. Если тебе нужно для параметра поставить другое значение, его нужно прописывать явно. Иначе будет работать установленное в последний раз.

Читать далее

2014-07-22

Ну мля чем еще админу заняться???

Принес директор ноут, что-то греется, говорит. И не важно, что у нас нет никого, кто имеет опыт сборки разборки - надо сделать.

Порыл инет, нашел инструкции:

1. http://ander.su/repair/article/15/1
 2. http://people.overclockers.ru/vGamBIT/17624/Chistka_ot_pyli_i_zamena_termopasty_na_Acer_Aspire_5750G/
3. http://draber.pp.ua/?p=910
4. http://habrahabr.ru/post/140120/

Вооружившись отвертками, все сделал. Разбирать пришлось, правда, 2 раза.
Собственно и не писал бы, но вдруг опять тот же ноут принесут, а у меня ссылки остались :)


Читать далее

2014-05-19

XenServer + NTP = unreal offset!!! Постоянный рассинхрон времени ВМ на XenServer 6.2

Имеем проблему - виртуалки на XenServer постоянно сбиваются по времени. Не все, но некоторые.

На XenServer настроен ntp, он работает, время корректное. Каждая ВМ настроена на синхронизацию времени с гипервизором и с NTP сервером. Но несмотря на это периодически время сбивается. Если NTP пнешь руками - ситуация исправляется, но ненадолго. До смешного - передернул NTP, время исправилось, через 15 секунд опять сбилось на 1-2 минуты.

В предыдущем посте писал насчет проверки через nagios plugin check_ntp_time. Все что там написано - актуально. К этому добавляем следующее.

В /etc/sysctl.conf добавляем строку

xen.independent_wallclock = 1

и перезапускаем хост.

Есть подозрение, что поймут эту инструкцию только хосты, где работают XenServer Tools, но и то гуд.

Читать далее

2014-05-08

ntp, nagios check_ntp_time, версии, заковыки, проблемы...

Начались у нас в конторе проблемы с синхронизацией времени. Начались, а узнали мы об этом, когда нас из-за этих проблем пришли бить больно. Нас громко сказано - меня.

А почему узнали уже в момент отгребания - а потому что nagios ничего, падла, нам не сказал, чтоб наше внимание привлекло. Все горело зелененьким, приятненьким таким цветом.

А после снятия побоев после отгребания после того как nagios ничего не сказал после того как проблемы уже были херзнаетсколько времени, так вот после всего этого оказалось, что в некоторых случаях плагин check_ntp_time статус показывает так (горит зеленым):

NTP OK: Offset 0.0008825864061 secs

, а в некоторых так(и сука тоже горит зеленым):

NTP OK: Offset unknown

Ну я же не смотрю на зеленое, система мониторинга и нужна падла для того, чтоб привлекать внимание к проблемным местам правильным способом...

Во-о-о-от. А там разбалансы по 10 минут.....

Собственно, в результате было выяснено, что существует незакрытый баг (по крайней мере все так говорят) в этом плагине, который тянется из версии в версию. На данный момент доступна версия 1.5, и в ней баг тоже присутствует.

В ходе разборок было выяснено, что офсет не проверяется на серверах, где версия ntp стоит выше, чем 4.2.4p8-1.3.28, это SuSE Linux Enterprise Server Service Pack 3 64bit (ntp-4.2.4p8-1.22.1.x86_64.rpm)

Проблема была решена понижением версии пакета ntp до ntp-4.2.4p8-1.3.28.

На всякий случай конфиги.

Сервер NTP

server 127.127.1.0
fudge  127.127.1.0 stratum 10
server ua.pool.ntp.org iburst
server pl.pool.ntp.org iburst
server se.pool.ntp.org iburst
server si.pool.ntp.org iburst
server uk.pool.ntp.org iburst
server fi.pool.ntp.org iburst
server ie.pool.ntp.org iburst
server ru.pool.ntp.org iburst
driftfile /var/lib/ntp/drift/ntp.drift
logfile   /var/log/ntp
logconfig =all
disable auth
disable monitor

Клиент NTP (по сути тоже сервер, но время берет из сервера выше, поэтому клиент)

server 127.127.1.0
fudge  127.127.1.0 stratum 10
server 10.77.11.70 prefer iburst
server 10.77.11.8 iburst
server 10.77.1.8 iburst
driftfile /var/lib/ntp/drift/ntp.drift
logfile   /var/log/ntp
logconfig =all

В /etc/sysconfig/ntp присутствует:

NTPD_FORCE_SYNC_ON_STARTUP="yes"
NTPD_FORCE_SYNC_HWCLOCK_ON_STARTUP="yes"

Читать далее

2014-03-20

Linux. Склерозник. Полезные наборы команд.

Рекурсивно подсчитает количество файлов в текущем каталоге и всех вложенных

find . -type f|wc -l

Смотрим изменения в файле в динамике

watch -n 1 -d "egrep 'High|Low' /proc/meminfo"

Делаем локальную копию сайта

wget -r -k -l 7 -p -E -nc http://www.puschitz.com

Установка проски без редактирования конфигов

export http_proxy=http://10.77.111.111:3128

Проверяем, какие слорты ОЗУ на матери заняты, какие свободны:

dmidecode -t memory


Читать далее

2014-03-12

Автозапуск VM на XenServer 6.2

Как всегда только через консоль...

xe vm-param-set uuid=92c10c64-51cb-5ede-c257-f428b6f291a9 other-config:auto_poweron=true

Читать далее

2014-03-05

Xen Orchestra 3.2 Настройка сети

Из коробки виртуалка Xen Orchestra идет с сетевым интерфейсом, настроенным по DHCP.
Кстати, XOA3 сделан на базе Debian 7
Кто хочет статику, меняете файл /etc/network/interfaces. По умолчанию он такой:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

А у меня он такой:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback                                                                                                 
                                                                                                                       
# The primary network interface                                                                                        
allow-hotplug eth0                                                                                                     
iface eth0 inet static                                                                                                 
address 10.77.11.8                                                                                                     
netmask 255.255.255.0                                                                                                  
gateway 10.77.11.62                                                                                                    
auto eth0


Читать далее

Блокирование трафика с подсети (iptables)

Часто нужно залочить трафик с подсети на какой-то хост.
Делаем просто - на хосту, куда подсеть не должна попасть:

Блокировка диапазона ip

iptables -I INPUT -m iprange --src-range 10.77.1.1-10.77.1.254  -j DROP

Разблокирование диапазона ip

iptables -D INPUT -m iprange --src-range 10.77.1.1-10.77.1.254  -j DROP

Или аналогично с маской:

iptables -A INPUT -s 10.77.1.0/24 -j DROP
iptables -D INPUT -s 10.77.1.0/24 -j DROP

Читать далее

2014-03-04

SSH без пароля

Это реально удобно.
Реальная ситуация - есть два сервера, с одного на другой каждую ночь нужно копировать некий файл. Чтобы ничего не монтировать, не настраивать nsf или samba cisf, можно использовать scp, предварительно проведя небольшую настройку.

Итак, первый сервер adonis01. С него будет копироваться файл на второй сервер ora8t1. На обоих серверах динозаврик SLES8SP3(OpenSSH_3.4p1, SSH protocols 1.5/2.0)

ssh root@adonis01
adonis01:~ # ssh-keygen -t rsa -b4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:                                                                                           
Your identification has been saved in /root/.ssh/id_rsa.                                                               
Your public key has been saved in /root/.ssh/id_rsa.pub.                                                               
The key fingerprint is:                                                                                                
12:23:56:78::ab:cd:ef:12:ee:56:4r:58:e2:d8:d1 root@adonis01

После этого в /root/.ssh появилось 2 файла - id_rsa и id_rsa.pub

adonis01:~ # scp /root/.ssh/id_rsa.pub root@ora8t1:/root/.ssh/id_rsa_adonis01

ssh root@ora8t1
ora8t1:~ # cat /root/.ssh/id_rsa_adonis01 >> /root/.ssh/id_rsa_remote
ora8t1:~ # mcedit /etc/ssh/sshd_config

PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/id_rsa_remote
HostbasedAuthentication no
UseLogin no
ChallengeResponseAuthentication no
X11Forwarding yes
UsePrivilegeSeparation no
Subsystem       sftp    /usr/lib/ssh/sftp-server

ora8t1:~ # /etc/init.d/sshd restart

Все, настроили.
Проверяем

ssh root@adonis01
adonis01:~ # ssh ora8t1 df -hl

Должны получить нужный результат. Все, теперь для scp ничего вводить не надо - все будет работать без паролей.

Читать далее

2014-02-26

Старинные меры длины. Визуальненько.

Давно искал хороший склерозник для старинных мер длины. Вот у братухи в одноклассниках выхватил:



Читать далее

2014-02-24

Citrix XenServer 6.2 Изменение количества CPU

Бывает такая фигня - через интерфейс XenCenter невозможно изменить количество CPU. Вот так можно это сделать с консоли

[root@xen11 ~]# xe vm-param-set VCPUs-max=32 uuid=7f905bc6-6d60-65fd-34f5-caa1121deb8f
[root@xen11 ~]# xe vm-param-set VCPUs-at-startup=32 uuid=7f905bc6-6d60-65fd-34f5-caa1121deb8f
[root@xen11 ~]# xe vm-param-set PV-args='console=ttyS0 xencons=ttyS maxcpus=32'  uuid=7f905bc6-6d60-65fd-34f5-caa1121deb8f

Читать далее

2014-02-12

Пинок для оптимизатора PostgreSQL 9.1

Война с базой продолжается.
Вот программисты во время оптимизации запросов нашли набор параметров, который, по их словам, ускорил работу базы просто пипецкакофигенно... Я разницы не заметил, но может я не так смотрю. Параметры добавил в postgresql.conf

join_collapse_limit = 10
seq_page_cost = 0.0000001
random_page_cost = 0.0000001
cpu_operator_cost = 0.0000001
default_statistics_target = 3000
 

Читать далее

2014-02-07

Ловим засранцев на PostgreSQL 9.1, или кто подвесил базу...

У нас такая ситуация часто - какой-то запрос повесил блокировку, из-за которой все остальные запросы жестко сосут. Вот в интернете нашел метод, как таких гадов ловить :

SELECT usename, application_name, client_addr, client_hostname,
                NOW() - query_start as s, procpid, current_query, 'pg_ctl kill TERM '||procpid
FROM pg_stat_activity
WHERE current_query NOT IN ('','')
ORDER BY s DESC;

и убивать:

pg_ctl kill TERM сюда_вставить_procid


Читать далее