Поиск по этому блогу

пятница, 6 апреля 2012 г.

СТЭ: поиск и удаление "потерянных" файлов

Поиск и удаление «потерянных» файлов БД – ситуация когда на ФС есть а в словаре данных нет.
Небольшой скрипт выводящий в файл наличие файлов БД на файловой системе и в базе данных, показывающий "лишние" файлы.


К сожалению блог "съедает" часть скрипта, поэтому выкладываю в виде файла.

# Путь до файлов БД согласно ТА, для APRODE
DBPATH=/ftas01/prod/oebs/db/apps_st/data
#Поиск файлов БД на файловой системе, по группам, с последующей записью в файлы
find $DBPATH/files/* -print > fs_datafiles.txt
find $DBPATH/redo/* -print > fs_redo.txt
find $DBPATH/temp/* -print > fs_temp.txt
find $DBPATH/undo/* -print > fs_undo.txt

# Запись в файл списка файлов учтённых в БД. Разбито на 4 группы.
sqlplus -S system/manager<<c1
spool on;
spool database_files_datafile.txt;
set pages 0;
set heading off;
set feedback off;
select name from v\$datafile where name not like '%undo%' order by name;
spool off;
exit;
/
c1

sqlplus -S system/manager<<c2
spool on;
spool database_files_undo.txt;
set pages 0;
set heading off;
set feedback off;
select name from v\$datafile where name like '%undo%' order by name;
spool off;
exit;
/
c2

sqlplus -S system/manager<<c3
spool on;
spool database_files_temp.txt;
set pages 0;
set heading off;
set feedback off;
select name from v\$tempfile order by name;
spool off;
exit;
/
c3

sqlplus -S system/manager<<c4
spool on;
spool database_files_redo.txt;
set pages 0;
set heading off;
set feedback off;
select member from v\$logfile order by member;
spool off;
exit;
/
c4
# Команда сравнения файлов на ФС и БД по группам и вывод разницы в один результирующий файл
sdiff database_files_datafile.txt fs_datafiles.txt > diff_datafiles.log
sdiff database_files_undo.txt fs_undo.txt >> diff_datafiles.log
sdiff database_files_temp.txt fs_temp.txt >> diff_datafiles.log
sdiff database_files_redo.txt fs_redo.txt >> diff_datafiles.log
# Удаление всех промежуточных результатов
rm database_files_datafile.txt fs_datafiles.txt database_files_undo.txt fs_undo.txt database_files_temp.txt fs_temp.txt database_files_redo.txt fs_redo.txt



Скрипт можно скачать здесь: count_diff.sh

понедельник, 26 марта 2012 г.

OeBS: Трассировка канкарентов (TraceConcurrent)

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

Включить трассировку для "Перенос записей в ГК". Как это сделать:

Полномочие "Системный администратор"
Руководитель - Программа - Определение
Осуществляем поиск нужной программа (F11- Ctrl + F11) не забываем поставить галку "Включено" в строке поиска по называнию программы.

Ставим или снимаем галку с пункта "Включить трассировку" по необходимости.

Запустить запрос на выполнение. Подождать 10-15 мин.

Файл трассировки появится в каталоге udump определить его имя можно использовав следующий запрос:

select oracle_process_id from fnd_concurrent_requests
where request_id=[request_id]

Поиск включенной трассировки

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

select fv.PROGRAM_SHORT_NAME, fv.PROGRAM from fnd_concurrent_requests fc, fnd_conc_req_summary_v fv
where fc.enable_trace = 'Y'
and fc.request_id=fv.REQUEST_ID



среда, 14 марта 2012 г.

OeBS: Детализированный вывод выполняющихся канкарентов

Запрос в деталях расскажет какие канкаренты сейчас исполняются.

select distinct r.request_id,
PR.USER_CONCURRENT_PROGRAM_NAME,
TO_CHAR((sysdate - r.requested_start_date) * 24 * 60, '9999') MINUTES,
s.SID,
s.SQL_ID,
s.WAIT_CLASS,
s.event,
s.SECONDS_IN_WAIT,
s.BLOCKING_SESSION,
U.USER_NAME,
r.requested_start_date,
r.priority
FROM FND_CONCURRENT_REQUESTS R
left join v$session s on s.PROCESS = r.os_process_id
INNER JOIN FND_USER U ON U.USER_ID = R.REQUESTED_BY
INNER JOIN FND_CONCURRENT_PROGRAMS_TL PR ON PR.CONCURRENT_PROGRAM_ID = R.CONCURRENT_PROGRAM_ID
where  STATUS_CODE = 'R'

среда, 25 января 2012 г.

OeBS : Статусы конкарент запросов и фазы их выполнения

Коллегой была найдена отличная заметка Arun Kumar'a на заданную тему, оригинал здесь

Статусы конкарент запросов и фазы их выполнения с вольным переводом.

STATUS_CODE Column:

A - Waiting (Ожидание)
B - Resuming (Возобновление)
C - Normal (Нормальное выполнение)
D - Cancelled (Отменено)
E - Error (Ошибка)
F - Scheduled (Запланировано)
G - Warning (Предупреждение)
H - On Hold (В ожидании)
I - Normal (Нормальное выполнение)
M - No Manager (Нет диспетчера)
Q - Standby (Ожидания)
R - Normal (Нормальное выполнение)
S - Suspended (Приостановлено)
T - Terminating (Завершение)
U - Disabled (Отключено)
W - Paused (Приостановлено)
X - Terminated (Завершено)
Z - Waiting (Ожидание)



PHASE_CODE column:

C - Completed (Завершено)
I - Inactive (Неактивно)
P - Pending (В ожидании)
R - Running  (Выполняется)

суббота, 7 января 2012 г.

OeBS : Не останавливается БД

Бывают такие моменты, что база данных останавливается неприемлемое количество времени, что делать в таких случаях:

Под пользователем БД в ОС выполнить команду
ps -fe |grep pdboebs

Если в выводе окажутся строки с вот таким текстом (LOCAL=NO) это наш случай.

Решение: выполнить команду в ОС под пользователем БД

for a in `ps -aef | grep -v grep | grep "APRODE (LOCAL=NO" | awk '{print $2}'`; do kill -9 "$a"; done 

После чего из вывода первой команды характерные строки должны уйти. Если они не ушли обратите внимание на название инстанса в примере это APRODE, регистр имеет значение.

Если и это не помогло, необходимо принудительно остановить БД выполнив следующее:

sqlplus / as sysdba
shutdown abort;
startup;

СУФД : Таблицы, запросы, мониторинг


Цитирую документ Таблицы запросы мониториг_new

ЦЕПОЧКА ТАБЛИЦ В СУФД

---------Цепочка таблиц входящие
select * from queue_packet_in
select * from queue_in_pack2docq
select * from queue_document
select * from doc
select * from abstractdoc

---------Цепочка таблиц исходящие
select * from abstractdoc
select * from doc
select * from queue_document
select * from queue_out_pack2docq
select * from queue_packet_out
--------------------------------------
select * from document_queue_to_org


OeBS : История исполнения ASFK_NIGHT_SERVICES


Посмотреть историю и результат сбора статистики по схемам за последние несколько дней можно следующим запросом:

select request_id, request_date,requested_start_date, requested_by, phase_code,status_code,actual_start_date,actual_completion_date,completion_text from fnd_concurrent_requests
where concurrent_program_id=(select concurrent_program_id from fnd_concurrent_programs
where concurrent_program_name='ASFK_NIGHT_SERVICES')
order by request_id desc

Посмотреть более детально по схемам можно так:

select last_analyzed, table_name  from all_tables 
where owner='XXT' and temporary!='Y' order by 1 desc
 
select last_analyzed, table_name  from all_tables 
where owner='APPLSYS' and temporary!='Y' order by 1 desc
 
select last_analyzed, table_name  from all_tables 
where owner='GL' and temporary!='Y' order by 1 desc
 
select last_analyzed, table_name  from all_tables 
where owner='XLA' and temporary!='Y' order by 1 desc
 
select last_analyzed, table_name  from all_tables 
where owner='AP' and temporary!='Y' order by 1 desc
 
select last_analyzed, table_name  from all_tables 
where owner='SUFD' and temporary!='Y' order by 1 desc
 
select last_analyzed, table_name  from all_tables 
where owner='SUFD2' and temporary!='Y' order by 1 desc
 

 
Поле last_analyzed отображает дату последнего сбора. 

OeBS : Поиск блокирующих сессий


Цитирую известный документ. 

1. Поиск блокирующих сессий (blocking session).

Для поиска блокирующих сессий можно использовать следующий запрос


select p.pid, s.sid, s.serial#,s.process,
s.blocking_session, -- sid блокирующей сессии
s.seconds_in_wait, -- время ожидания в секундах
s.username, s.program, s.module
from v$session s, v$process p
where s.paddr = p.addr
and blocking_session is not null
order by seconds_in_wait

select sid, status, serial#, sql_id, action, event
from v$session where sid = < sid блокирующей сессии >


На основании полученной информации можно рассматривать вопрос о принудительном отсоединении блокирующей сессии.

alter system kill session '< sid блокирующей сессии >, < serial# блокирующей сессии >'



2. Поиск блокирующих сессий для события ожидания «Сursor: pin S wait on X».

SELECT p2raw ,
to_number(substr(to_char(rawtohex(p2raw)), 1, 8), 'XXXXXXXX') sid
FROM v$session
WHERE event = 'cursor: pin S wait on X';

select sid, status, serial#, sql_id, action, event
from v$session where sid = < sid блокирующей сессии >


На основании полученной информации можно рассматривать вопрос о принудительном отсоединении блокирующей сессии

alter system kill session '< sid блокирующей сессии >, < serial# блокирующей сессии >'

среда, 4 января 2012 г.

Pidgin - модульный клиент мгновенного обмена сообщениями (для протокола IRC)

Эта небольшая инструкция поможет Вам установить и правильно настроить pidgin используя протокол обмена мгновенными сообщениями IRC Дистрибутив клиента pidgin можно скачать на его официальном сайте http://www.pidgin.im/

Скачать инструкцию в удобном для Вас формате можно здесь:

howto-pidgin-irc-windows.doc
howto-pidgin-irc-windows.odt
howto-pidgin-irc-windows.pdf
howto-pidgin-irc-windows.mht
howto-pidgin-irc-windows.html
howto-pidgin-irc-windows все форматы




P.S. Инструкция по установке и настройке немного другого, но тоже очень хорошего клиента IRC howto-x-chat-irc-windows