Thursday, September 18, 2008

Warning!!! BIG SIZE of file!!!

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
CDIR=/path1/path2/
OUTF=warning.out
CRIT=400
RCPT=my@email.com
rm -rf ${CDIR}${OUTF}
for files in `ls -l ${CDIR} | awk '{print $9}'`
do
size=`ls -l ${files} | awk '{print $5}'`
tfile=`ls -l ${files} | awk '{print $9}'`
if [ ${size} -ge ${CRIT} ];
then cat >> ${CDIR}${OUTF} << ECHO
Warning! Size of ${CDIR}${tfile} is ${size}
ECHO
fi
done
cat ${CDIR}${OUTF} | mail -s 'Warning!!! BIG SIZE of file!!!' ${RCPT}

Tuesday, August 12, 2008

Script to identify long ago accessed files

He asked me how can he identify long ago accessed files. I've written the following script.

bash-2.05b$ more laaf.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
FNAME=$1
DAYS=$2
if test $# -lt 2
then
echo 'Usage: laaf.sh <+|-N>, where N - number of days'; exit
fi
find $FNAME -type f -atime $DAYS -exec ls -lt --full-time '{}' \; | awk '{print $6,$5,$9;}'
==
Usage: ./laaf.sh <+|-N> [> file.out]
where - is the path to the target directory
<+|-N> - accessed before|after N days

In the output of this script will be modified date, size and file name with full path by row

Monday, August 11, 2008

script for sorting files by modification date

If you want to see files sorted by modification date in the subdirectories, you can paste below into the file for example mytest.sh, do it executable and run it with desireable directory as the argument
For example,
bash-2.05b$ ./mytest.sh /usr/local/etc
---
# cat > mytest.sh << EOF
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
FNAME=$1
find $FNAME -type f -exec ls -lt --full-time '{}' \; | awk '{print $6,$5,$9;}'
EOF
--
As a result you'll recieve date, size and pathname of all files from directory

Friday, June 13, 2008

Re: OCP Credential Validation

После того как 28-го мая я сдал 1z0-043 я написал свой Prometric Testing ID на ocpexam_ww@oracle.com с темой "OCP Credential Validation", затем подтверждал свои курсы на oracle.prometric.com и выслал копию письма о заполнении этой самой "Hands-On Course Requirement Form" на ocpreq_ww@oracle.com
И вот только сегодня 13 июня пришло письмо, что вроде как мой статус OCP подвержден от results@prometric.com.

Your OCP Hands-On Course Requirement has been verified. If you have met
all your exam requirements, you can expect to receive your OCP Success Kit
within 30 days from this message.

и от ocpreq_ww@oracle.com
==============
От кого: Oracle Certification Program
Кому: Мне
Дата: 13 Июн 2008 10:34:55
Тема: Re: OCP Credential Validation

Hi МоеИмя,

Thanks for the course confirmation. Your Hands-on form was verified and if you have completed all the required exams then you should wait for 6-8 weeks from your date of verification of your Hands-On Course Requirement Form to receive your Oracle 10g DBA OCP success kit.
..................
правда как-то странно звучит "if you have completed all the required exams then you should wait" они сразу-то не смогли определить все ли требуемые экзамены сданы :)

Monday, June 09, 2008

По установке Oracle 9i на Linux (Centos 4.6)

Решил протестить и задокументить на случай необходимости быстрой установки Oracle 9i на Linux.
Тест провел с установкой Oracle 9i на Centos 4.6.
В соотв-ии с Note:303859.1 (Requirements for Installing Oracle 9iR2 on RHEL 4)
ставим дополнительно те, которых не хватает в системе из списка:
Minimum Software Requirement:
=============================
* Required OS Components
- compat-db-4.1.25-9
- compat-gcc-32-3.2.3-47.3
- compat-gcc-32-c++-3.2.3-47.3
- compat-oracle-rhel4-1.0-3
- compat-libcwait-2.0-1
- compat-libgcc-296-2.96-132.7.2
- compat-libstdc++-296-2.96-132.7.2
- compat-libstdc++-33-3.2.3-47.3
- gnome-libs-1.4.1.2.90-44
- gnome-libs-devel-1.4.1.2.90-44
- libaio-devel-0.3.102-1
- libaio-0.3.102-1
- make-3.80-5
- openmotif21-2.1.30-11
- xorg-x11-deprecated-libs-devel-6.8.1-23.EL
- xorg-x11-deprecated-libs-6.8.1-23.EL
Учитывая зависимости, которые потребовались для этих пакетов, у меня получился след. полный список для доп.установки диска. Можно то, что ниже просто вставить в простой sh-скриптик и запустить.
---
cd /media/cdrom/CentOS/RPMS
rpm -Uvh compat-db-4.1.25-9.i386.rpm \
compat-libgcc-296-2.96-132.7.2.i386.rpm \
compat-libstdc++-296-2.96-132.7.2.i386.rpm \
compat-libstdc++-33-3.2.3-47.3.i386.rpm \
compat-gcc-32-3.2.3-47.3.i386.rpm \
compat-gcc-32-c++-3.2.3-47.3.i386.rpm \
gnome-libs-1.4.1.2.90-44.1.i386.rpm \
glib-devel-1.2.10-15.i386.rpm \
ORBit-devel-0.5.17-14.i386.rpm \
alsa-lib-devel-1.0.6-5.RHEL4.i386.rpm \
audiofile-devel-0.2.6-1.el4.1.i386.rpm \
esound-devel-0.2.35-2.i386.rpm \
freetype-devel-2.1.9-6.el4.i386.rpm \
fontconfig-devel-2.2.3-13.el4.i386.rpm \
xorg-x11-devel-6.8.2-1.EL.33.i386.rpm \
gtk+-devel-1.2.10-36.i386.rpm \
libjpeg-devel-6b-33.i386.rpm \
libtiff-devel-3.6.1-12.i386.rpm \
libungif-devel-4.1.3-1.el4.2.i386.rpm \
imlib-devel-1.9.13-23.i386.rpm \
gnome-libs-devel-1.4.1.2.90-44.1.i386.rpm \
libaio-0.3.105-2.i386.rpm \
libaio-devel-0.3.105-2.i386.rpm \
make-3.80-6.EL4.i386.rpm \
openmotif21-2.1.30-11.RHEL4.6.i386.rpm \
xorg-x11-deprecated-libs-6.8.2-1.EL.33.i386.rpm \
xorg-x11-deprecated-libs-devel-6.8.2-1.EL.33.i386.rpm
---

Конфигурирование Linux для установки Oracle (делаю как при установке Oracle 10)

1) Заведение групп oinstall, dba и пользователя oracle (copy-paste)
# /usr/sbin/groupadd -g 502 oinstall
# /usr/sbin/groupadd -g 503 dba
# /usr/sbin/useradd -m -u 501 -g dba -G oinstall oracle

Проверка id и gid
# id oracle uid=501(oracle) gid=502(oinstall) groups=502(oinstall),503(dba)

Установка пароля passwd oracle через:
# passwd oracle

2) Создание директорий по OFA (copy-paste)
# mkdir /oracle
# chown -R oracle:oinstall /oracle
# chmod -R 775 /oracle

3) Конфигурирование параметров ядра (через copy-paste) и shell-лимиты
(делаю как при установке Oracle 10)
Создать и запустить скриптик с таким содержимым
#/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
cp /etc/sysctl.conf /etc/sysctl.conf.ori
cat >> /etc/sysctl.conf << MYEOF
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
MYEOF
/sbin/sysctl -p
cp /etc/security/limits.conf /etc/security/limits.conf.ori
cat >> /etc/security/limits.conf <oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
MYEOF
cp /etc/pam.d/login /etc/pam.d/login.ori
cat >> /etc/pam.d/login <session required /lib/security/pam_limits.so
MYEOF
cp /etc/profile /etc/profile.ori
cat >> /etc/profile <if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
MYEOF
cp /etc/csh.login /etc/csh.login.ori
cat >> /etc/csh.login << MYEOF
if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
MYEOF
cp /etc/profile /etc/profile.ori
cat >> /etc/profile << MYEOF
if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
MYEOF

cp /etc/csh.login /etc/csh.login.ori
cat >> /etc/csh.login << MYEOF
if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
MYEOF
---
В .bash_profile юзера oracle я добавил

export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export ORACLE_SID=test9i
export LD_ASSUME_KERNEL=2.4.19
export ORACLE_TERM=xterm
export PATH=$PATH:$ORACLE_HOME/bin

По окончании установки при помощи runInstall в граф.окне получил
Ошибки
/oracle/jre/1.1.8/bin/../lib/i686/native_threads/libzip.so: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference (libzip.so)
Unable to initialize threads: cannot find class java/lang/Thread
Could not create Java VM

Решение проблем (как и вообще установка с необходимыми патчами) хорошо описано в пошаговой инструкции от Terek’а
http://conrad2001.narod.ru/terek/oracle9204linux.htm
После накатки патчей и перелинковки пробелмы исчезают.

Также могут быть полезными ссылки
http://www.puschitz.com/InstallingOracle9i.shtml
http://download-east.oracle.com/docs/html/B13670_06/toc.htm
http://blogs.ittoolbox.com/database/david/archives/installing-oracle-9-on-rhel4-19572

Saturday, June 07, 2008

Бэкапирование баз MS SQL

Вчера закончил документировать реестр всех баз MS SQL, в котором для каждого сервера указал все БД и время выполнения заданий по их бэкапированию и месторасположением бэкап-файлов на локальном диске. Прежний админ MS SQL уволился, а нового админа еще не приняли на работу и я по мере своих сил и навыков смотрю за сиквел-базами.
После того как закончил данный реестр и более менее воткнулся в систему, решил задокументировать для себя существующий механизм бэкапирования базы MS SQL на локальный диск.

Итак, раз в неделю в вскр-е или в субботу производится полный бэкап баз и ежедневно дифференциальные. Перед тем как сделать полный бэкап базы, файл предыдущего бэкапа архивируется Rar-ом. Для чего необходимо разрешить MS SQL выполнять команды ОС, см.комменты.

Step-by-Step в SQL Server Management Studio на примере базы My_DB

1) Создание нового задания.
Сервер-> SQL Server Agent -> Jobs - New Job
Заполняем Name, Description, обращаем внимание на галочку в Enable (пока отключим ее, сняв галку, позже после создания задания и расписания включим)
Продолжение см. в комментах.

Сборщик конфигурации Unix/Linux в HTML

Сегодня "вендоры" попросили выслать конфигурацию боевого сервера Linux, который необходимо "пролечить" и "прикрутить" к HP SW XP1024, выслав ссылку на утилитку cfg2html. Скачал ее, установил, собрал инфу просто запуском /usr/bin/cfg2html-linux из директории, в которую будут сложены html-файл и др.
Несомненно, удобная утиля, ее урл - http://come.to/cfg2html

Friday, May 23, 2008

По переносу базы MS SQL 2005 на другой диск

Обратились ароматизаторы с проблемкой, в рамках которой нужно было перенести одну из баз MS SQL Server 2005 на другой диск. Нашел ссылку http://technet.microsoft.com/ru-ru/library/ms187858.aspx , но открыв MS SQL Management Studio и прикинув как это сделать через GUI, попробовал и .... прикольно, не думал, что так просто переместить базу в сиквеле :)

Wednesday, May 21, 2008

Дефрагментация таблиц, индексов (with LOB and partitions) с перемещением в другой TS

Столкнулся с проблемой, когда после удаления данных таблицы сильно дефрагментировались. Короче база на базе одной ASM diskgroup, в которой одна дисковая группа на базе 2 Lun's. Один размером 512Gb, другой - 72Gb. Запрос "select sum(bytes) from dba_segments" возвращает не более 100Gb, т.е. у меня более 400Gb свободно, но .... запрос "select total_mb,free_mb from v$asm_diskgroup" из более чем 500Гб возвращает свободных только 60Гб. А мне нужно вывести из этой дисковой группы Lun размером 72Гб. Но для того, чтобы вывести диск из группы необходимо достаточное свободного места для ребалансинга.
После команд
alter diskgroup dg1 drop disk dg_0001;
alter diskgroup dg1 rebalance power 6;
и после очистки содержимого v$asm_operation, говорящего нам о завершении ребалансинга
запрос "select name,path,state from v$asm_disk" возвращает состояние диска Hung. Согласно Reference "HUNG - Disk drop operation cannot continue because there is insufficient space to relocate the data from the disk being dropped". Вот так вот.
Сделать shrink невозможно, т.к. segment space management для табличных пространств в manual.
Спросил совета - Г. посоветовал сделать единственно верное в данном случае. Переместить все данные из одного из таблспэйса в другой вновь созданный соответствующего размера (select sum(bytes) from dba_segments where tablespace_name='MYDB_2006') и затем удалить исходный таблспэйс.
И вот решил "записать" скриптики, которые я использовал.
==========
-- Moving LOB PACKAGE_IN_DB to tablespace MYDB_TEST
set head off
set heading off
set pagesize 1000
set linesize 1000
set long 999999999
spool move_table_lob.sql
select 'ALTER TABLE '||TABLE_OWNER||'.'||TABLE_NAME|| ' move partition '||PARTITION_NAME|| ' LOB(PACKAGE_IN_DB)
STORE AS (TABLESPACE MYDB_2006);' from dba_tab_partitions where table_name='PACKAGES'
and tablespace_name='MYDB_TEST';
spool off;
@move_table_lob.sql
exit;
/
-- Moving partitions to tablespace MYDB_TEST
set head off
set heading off
set pagesize 1000
set linesize 1000
set long 999999999
spool move_table_part.sql
select 'ALTER TABLE '||TABLE_OWNER||'.'||TABLE_NAME|| ' move partition '
||PARTITION_NAME|| ' tablespace MYDB_2006;' from dba_tab_partitions where
table_name='PACKAGES' and tablespace_name='MYDB_TEST';
spool off;
@move_table_part.sql
exit;
/
--Moving subpartitions to MYDB_TEST
set head off
set heading off
set pagesize 1000
set linesize 1000
set long 999999999
spool move_table_subpart.sql
select 'ALTER TABLE '||TABLE_OWNER||'.'||TABLE_NAME|| ' move subpartition '
||SUBPARTITION_NAME|| ' tablespace MYDB_TEST;' from dba_tab_subpartitions
where table_name='MV_VOLUMES' and tablespace_name='MYDB_2006';
spool off;
@move_table_subpart.sql
exit;
/
--Moving Indexes to MYDB_TEST
set head off
set heading off
set pagesize 1000
set linesize 1000
set long 999999999
spool move_ind_part.sql
select 'ALTER INDEX '||INDEX_OWNER||'.'||INDEX_NAME|| ' rebuild partition '||PARTITION_NAME ||' TABLESPACE MYDB_TEST;'
from dba_ind_partitions where tablespace_name='MYDB_2006';
spool off;
@move_ind_part.sql
exit;
/
-- Moving LOB-partitions (LOBINDEXES,LOBSEGMENTS) to tablespace MYDB_2006
set head off
set heading off
set pagesize 1000
set linesize 1000
set long 999999999
spool move_table_lob.sql
select 'ALTER TABLE '||TABLE_OWNER||'.'||TABLE_NAME|| ' move partition '||PARTITION_NAME|| ' LOB(' ||COLUMN_NAME||')
STORE AS (TABLESPACE MYDB_2006);' from dba_lob_partitions where tablespace_name='MYDB_TEST';
spool off;
@move_table_lob.sql
exit;
/

Monday, May 19, 2008

Тест с добавлением/мультпасингом LUN-ов из HP XP 1024

Исходные данные: сервер HP Proliant DL360 на Linux Centos 4.6 с базой Oracle 10.2.0.3 с ASM, который создан на основе LUN'а из массива HP EVA5000.
Задача: необходимо перевести базу на LUN'ы массива HP XP1024.
Итак, необходимо "увидеть" презентованные из XP1024 луны, настроить для них multipathing при помощи device-mapper'а. Затем данные луны добавить в существующую дисковую группу и в случае успешных тестов вывести старый диск EVA5000 из существующей дисковой группы.
В случае успеха провести данную операцию на боевом сервере.
От 23 мая - к сожалению тест пока завершился неуспешно. Презентованные LUNы видны, но каждый получаемый путь в /dev/mpath содержит отдельный путь к презентованному LUNу. Позже нашел в документе с www.hp.com "Installation and Reference Guide Device Mapper Multipath Enablement Kit for HP StorageWorks Disk Arrays", где для XP1024 было примечание -
*If you useXP128/1024,the system modes 140 and 293 must be switched on,otherwise
the XP does not respond to a SCSI inquiry to code page 0x83 with a unique serial number (scsi_id tool). This prevents the HPDM Multipath from detecting the redundant paths.
Таких режимов 140 и 293 в прошивке нашего XP1024 не оказалось.
Ссылка на документы
Т.о. продолжение тестов отложено до начала июня, когда Д. вернется из штатов с форума HP-шников.
p.s. Спустя 7 часов ближе к концу раб. дня Д. позвонил в Москву в HP и спросил об этих режимах. Там сообщили, что есть такие режимы и что перезвонят через "10 минут".

Sunday, May 18, 2008

Сдал на OCA - Oracle 10g Administration I

Вчера, 17 мая 2008, (спустя почти 2 года как решился перевестись на должность DBA с переездом со своей семьей во Владик) сдал свой первый экзамен по Oracle - 1z0-042 - OCA Oracle 10g Administration I. Получил OCA (Oracle Certified Associate), если сдать еще один тест - 1z0-043, то получу OCP (Oracle Certified Professional) ..... Так-то какая-никакая черта под идею стать DBA-йщиком подведена и я немного рад. Хотя понимаю, что это на самом деле мало что значит, это лишь "бумажка" да и у нас в отделе это не определяет истинную квалификацию и далеко не всегда OCP-шники воспринимаются всерьез :) Согласен с ними - тем более, что они сильные и нах им эти экзамены не сдались :) А я решил иметь бумажки на случай смены работы :) Смены работы не только в ближайшее время, а вообще на будущее - в подтверждение опыта работы с Oracle на основе времени с момента получения статусов OCA, OCP.
Так что хорошо бы в ближайшее время поднапрячься и сдать 1z0-043 и получив OCP cразу написать письмо Марие о получении статуса OCP, чтобы обновили CV. Думаю, они могут это учесть как положительный фактор и им было бы полегче придумывать должность и круг обязанностей :) Видно будет...

Saturday, May 17, 2008

По переводу ASM с EVA5000 на XP1024

Сегодня, в субботу, в 10.40 час. позвонил Д.(человек круглосуточно болеет за дело и обдумывает его), спросил как вчера прошли работы (я вчера вечером просто срестартил одну базу по ченджу) и попросил пока не ставить restore базы ITC в тестовую, т.к. там какие-то проблемы еще с DataProtector. Я сказал, что Restore запустил вчера вечером и еще не прилетало сообщения ни об ошибке ни об успехе. Д. предположил, что ресторинг заклинило на mount request (позже в понедельник М.С. сказал, что так и было - были mount request'ы, которые ему приходилось проталкивать вручную все выходные).
Затем Д. озвучил в своем стиле то ради чего и звонил - просьбу-задачку провести тесты с настройкой Multipathing'а для дисков массива XP1024 на тестовой машине, на которой я месяцев сколько-то назад настроил его для дисков EVA5000 по подобию боевого сервера.
Т.е. нужно сделать Multipathing на оба массива как на EVA так и на XP, протестировать failover, "выдернув шнурочек" и на основе тестов разработать план перевода ASM боевого ITC c EVA5000 на XP1024.
Утилиту xpinfo, которая отображает всю информацию по презентованным хосту дискам, Д. положил в хоум рута.
Думаю, очень интересная задачка, и с понедельника начнем.

Tuesday, April 15, 2008

the X11 forwarding request was rejected!

При попытке запустить XManager'ом Х-ы на Линухе
ошибка "the X11 forwarding request was rejected!..."
Добавить в /etc/ssh/sshd_config
X11Forwarding yes
и рестартовать процесс sshd

Monday, April 14, 2008

check RMAN-processes

Сегодня с утра одна из баз (10.2.0.3, HP-UX 11.11) оказалась остановленной. При попытке стартовать базу вылетели ошибки о нехватке места. df -k показал, что место в разделе /oracle, где лежит ORACLE_HOME было забито. Очень странно, при размере разделе в 10Гб и размере ORACLE_HOME до 4Гб. Я начал судорожно искать куда делось место через "du -k" по поддиректориям. Не найдя никаких новых файлов, заметил вчерашние нулевые логи бакапов архивлогов и один лог на текущее время. Просмотрел его через tail -f - лог постоянно пополнялся ошибками.
Посмотрел процессы rman - висело 2 процесса rman со вчерашнего вечера.
Убил их ... и место освободилось, почти 4Гб.
Т.е. какой-то процесс rman занимал все доступное место в разделе - очень странно.
Но надо иметь ввиду - либо отстреливать зависшие RMAN-процессы, либо надо переписать скрипты так чтобы логи падали в другой раздел. Возможно это поможет в таких случаях.

Thursday, March 13, 2008

В alert.log сыпятся SUCCESS: diskgroup DGROUP1 was dismounted ...

См. Note:361173.1 Asm Diskgroup success Mount And Umount messages in alert.log during Rman Backup
--------
Alert.log shows the following messages during a rman backup:
SUCCESS: diskgroup LOG was mounted
SUCCESS: diskgroup LOG was dismounted
SUCCESS: diskgroup LOG was mounted
SUCCESS: diskgroup LOG was dismounted

Solution
Intended behavior. No solution required.

Wednesday, March 12, 2008

Archival Error и ORA-07445: exception encountered: core dump ....

Сегодня позвонили и пожаловались, что в одной из баз время от времени выполнение процедур заканчивается ошибкой Archival Error....
Посмотрел alert.log - ошибка Archival Error и в последних двух логах бэкапа ошибка
ORA-09817: Write to audit file failed.
SVR4 Error: 28: No space left on device
Дабы быстрее разрешить проблему я освободил место в разделе удалением устаревших архивов, освободив 1 Гб.
К этому моменту пришел Г. , задал вопрос "кто сожрал 34 гига?" и взялся за проблему. Сначала обнаружил, что освобожденное мною место в 1Гб было уже сожрано и что в cdump куча корок, которые практически и забили все дисковое пространство. Нужно смотреть alert.log.
В нем было обнаружено куча "ORA-07445: exception encountered: core dump" со ссылкой на трейсы. Г. изучил и заключил, что проблема в мат.представлениях, структура которых неправильна, о чем известил программеров.
Я сравнил время появления алертов в алерт.логе со временем вчерашнего апгрейда одной из баз, с которой взаимодействует проблемная база. Время примерно совпало.
Опыт: после всяческих апгрейдов следи за alert.log и cdump

Friday, March 07, 2008

установка Cerberus Helpdesk 4.0

Установку делал в соответствии с http://wiki.cerberusdemo.com/index.php/Installing_4.0
Скачал cerb4-servercheck.php.txt, переименовал и расположил его на сайте.
Обратился к файлу через веб и получил сообщение об отсутствии модуля MailParse и нехватку в php.ini опции upload_tmp_dir. Прописал в своем /usr/local/etc/php.ini и указал на директории upload внутри директории, заготовленной для будущего веб-сайта cerberus.
Установил MailParse по ссылке http://www.cerb4.com/forums/showthread.php?t=40 и получил
"Cerberus Helpdesk 4.0 - Server Environment Checker
Your server is Cerberus Helpdesk 4.0 compatible!"
По MailParse также есть http://wiki.cerberusdemo.com/index.php/Installing_PHP_Mailparse

Thursday, February 14, 2008

SNMP - закрытие доступа к public на Solaris 10

В отчете XSpider'а своего сервера под Solaris 10 имеется "некритичная уязвимость" c рекомендацией "Закрыть доступ к учетной записи public в snmp."

Сегодня все же решил заняться ею. Делаем проверку при помощи snmpget:
- Получить описание системы c localhost
# snmpget -v 2c -c public localhost system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: SunOS my_server_name 5.10 Generic_118822-25 sun4u
- Узнать когда SNMP-агент был инициирован последний раз
# snmpget -v 2c -c public localhost system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (146645223) 16 days, 23:20:52.23

Установил коммент в /etc/snmp/conf/snmpd.conf у строчки #system-group-read-community public
и рестартовал сервис snmp
# /etc/rc3.d/S76snmpdx stop
# /etc/rc3.d/S76snmpdx start

И повторяем проверку - ответы такие же .... хм....
Ну да , все правильно, ведь проверку делаю с localhost, а нужно со стороны ... Поэтому устанавливаю net-snmp на другой хост с Linux.

[root@centest RPMS]# rpm -Uvh lm_sensors-2.8.7-2.40.5.i386.rpm
warning: lm_sensors-2.8.7-2.40.5.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:lm_sensors ########################################### [100%]
[root@centest RPMS]# rpm -Uvh lm_sensors-devel-2.8.7-2.40.5.i386.rpm
warning: lm_sensors-devel-2.8.7-2.40.5.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:lm_sensors-devel ########################################### [100%]
[root@centest RPMS]# rpm -Uvh net-snmp-5.1.2-11.EL4.11.i386.rpm
warning: net-snmp-5.1.2-11.EL4.11.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:net-snmp ########################################### [100%]
[root@centest RPMS]# rpm -Uvh net-snmp-utils-5.1.2-11.EL4.11.i386.rpm
warning: net-snmp-utils-5.1.2-11.EL4.11.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:net-snmp-utils ########################################### [100%]

Стартовал демон snmp

[root@centest init.d]# /etc/init.d/snmpd start
Starting snmpd: [ OK ]

Проверил доступ к проблемному серверу - он есть
[root@centest init.d]# snmpget -v 2c -c public my_server_name system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (3715) 0:00:37.15

Итак, public все еще открыт .... из man snmpd.conf узнаю о файлике /etc/sma/snmp/snmpd.conf, в котором в строке rocommunity public добавляю 127.0.0.1 так, что стало
rocommunity public 127.0.0.1
Т.е. определил доступ к public только лишь с localhost
Рестартовал сервисы и проверил.

с localhost:
# snmpget -v 2c -c public localhost system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (53857) 0:08:58.57

с Linux-хоста
[root@centest init.d]# snmpget -v 2c -c public my_server_name system.sysUpTime.0
Timeout: No Response from my_server_name.

Т.о., в Solaris 'read only'-доступ к community public устанавливается в файлике /etc/sma/snmp/snmpd.conf

Теперь, думаю, XSpider успокоится.

Ссылки по теме:
http://www.net-snmp.org/wiki/index.php/Tutorials










Friday, February 08, 2008

IPMI Service Processor

Сегодня впервые столкнулся с IPMI Service Processor. После отправки сервера SUN ... под Linux Centos 4.1 64bit в ребут не дождался его старта. Нужно было лезть на него консольно.
Погуглив, помогла страничка http://docs.sun.com/source/817-5249-17/appendixF.html#pgfId-1002294
После входа в консоль сначала пришлось выключить сервак по питанию, а затем включить след.образом:

login as: admin
admin@10.27.45.13's password:

Sun Microsystems
IPMI v2.0 Service Processor

Version: V2.2.0.20
localhost $ platform set power state -W -f off
Scheduled platform off

localhost $ platform set os state boot -W -f

localhost $ platform get os state
BIOS booting

localhost $ platform get os state
OS booting

localhost $ platform get os state
OS booting

--
Через некоторое время появился ping до сервака и я облегченно вздохнул .... сервак-то в другом городе и время уже 22 часа.
IPMI - такого зверя я и не знал...

Wednesday, January 30, 2008

Примеры чекеров, скриптов sh

# Чекает не висит ли процесс rman-а больше суток
#!/bin/sh
PATH=/bin
LD=`(date --date='2 days ago' '+%b%d')`
RCPNTP=me@email
HOST=`uname -n`
if
ps -ef|grep -i $LD |grep rman
#if [ $? != 0 ];
then
echo "rman 2 days ago down on "$HOST|mailx -s "rman 2 days ago down on "$HOST ${RCPNTP} < /dev/null fi

##################
Чекает доступность по пингу хоста $HOST
#!/bin/sh
HOST=имя_сервера_который_чекаем
RCPNT=me@email ping -c 2 10.25.40.5 >/dev/null 2>&1
if [ $? -ne 0 ]; then
mail -s 'Alarm!!! Server is down. Check '$HOST $RCPNT < /dev/null
fi
#################
# Бэкапит файлы *jak* из директории /usr/local/BackUp по дням недели, удаляя устаревшие бэкапы
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
BKPDIR=/usr/local/BackUp
TODAY=`date +'%a'`
TOMCAT=/usr/local/jakarta-tomcat-4.1.18
cd $TOMCAT
BKPFILES=`ls`
tar zcf $BKPDIR/$TODAY-jak.tar.gz $BKPFILES
find $BKPDIR/ -type f -name '*jak*' -mtime +2 -exec rm "{}" ";"

Wednesday, January 23, 2008

Physical Memory in HP-UX

Как определить размер физической памяти в HP-UX

1) Способ, не везде срабатывающий
# dmesg |grep Physical

2) Сработал на разных платформах
# /opt/ignite/bin/print_manifest |grep -i memory



Monday, January 21, 2008

Bonding и отключение поддержки IPv6 (sit0) в Centos 4.6

Только что на тестовом серваке Proliant DL360 G4 c двумя оптическими карточками QLA2340 (которые предварительно перепрошил до firmware ver.1.54, скачанным с здесь) с Centos 4.6 на базе двух карточек Broadcom Corporation NetXtreme BCM5704 Gigabit Ehernet (Tigon3 chip) поднял bonding как описано в How can I bond multiple network interfaces (bonding) together into a single channel in Red Hat Enterprise Linux 4?

И тупо проверил выдергиванием кабелей по очереди - все работает.
Сообщил сетевикам, они настроили team на коммутаторах, но пожаловались на то, что с их стороны виден лишний MAC-адрес.
Действительно, в выводе # ifconfig -a маячит интерфейс "sit0 Link encap:IPv6-in-IPv4", который они и попросили убрать.
Очевидно поддержка IPv6 включена по дефолту в ядро 2.6.xxx
Для отключения IPv6 добавил в /etc/modprobe.conf
alias net-pf-10 off
alias ipv6 off
и перегрузился, после чего sit0 исчез из системы.

p.s. прикол в том, что на других боевых системах с Centos sit0 также присутствует :)

Thursday, January 17, 2008

Копирование пользователей с их правами

Здесь и здесь решение задачки переноса юзеров с их грантами из боевой в тестовую БД

set head off
set pages 0
set long 9999999
spool user_script.sql
SELECT DBMS_METADATA.GET_DDL('USER', USERNAME) || '/' DDL
FROM DBA_USERS
UNION ALL
SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT', USERNAME) || '/' DDL
FROM DBA_USERS
UNION ALL
SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT', USERNAME) || '/' DDL
FROM DBA_USERS
UNION ALL
SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT', USERNAME) || '/' DDL
FROM DBA_USERS;
spool off;

Wednesday, January 16, 2008

dbid в шаблоне %F

При восстановлении базы RMAN-ом необходимо установить DBID командой set dbid .
Дабы не искать его в логах лучше пользоваться шаблоном %F - при создании backup_set это первая последовательность цифр в имени файла при использовании шаблона %F - например,

configure controlfile autobackup format for device type disk to '/orabackup/rman2disk/back1_ctl_%F';