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

четверг, 31 октября 2013 г.

OeBS: Отчет о состоянии служебных процессов в системе

При возникновении ошибок в результирующем отчете о состоянии служебных процессов в системе необходимо запустить следующий запрос в схеме apps.

alter session set nls_language = american nls_territory = america
/
declare
x_errm varchar2(4000);
x_errc number;
begin
xxt_bs_services.delete_set;
xxt_bs_services.check_or_fix_admin_prg(x_errm, x_errc, true);
dbms_output.put_line('errc= '||x_errc);
dbms_output.put_line('errm= '||x_errm);
end;
/

вторник, 25 июня 2013 г.

OeBS: Время работы БД с последнего запуска. (Uptime oracle database)

Иногда, для разбора полётов, полезно знать насколько долго уже живёт пациент (БД oracle), своего рода аналог команды uptime в *nix системах.


select STARTUP_TIME from v$instance

вторник, 15 января 2013 г.

OeBS: Поиск пользователей с установленным режимом debug_mode


-- Ищем у кого установлен профиль "Запускать операцию в debug_mode"
    
SELECT fpo.profile_option_name,fpov.level_value,f.user_name
,fpo.user_profile_option_name
,fpov.profile_option_value
from fnd_profile_option_values fpov,
fnd_profile_options_vl    fpo,
fnd_user f
where fpov.application_id    = fpo.application_id
and fpov.profile_option_id = fpo.profile_option_id
and f.user_id=fpov.level_value
and fpo.user_profile_option_name='ФК: Запускать операцию в debug_mode'
and fpov.profile_option_value='Y'

воскресенье, 13 января 2013 г.

OeBS: пакетная отмена выполнения запросов

Отмена всех одноимённых запросов:

1. Найти program_short_name по ид одного из нужных запросов.

select program_short_name from fnd_conc_req_summary_v where request_id='50654852'

2. Отменить все запросы в очереди по program_short_name

Для запросов ожидающих своей очереди:

update fnd_concurrent_requests set status_code='D', phase_code='C'
where request_id in (select request_id from fnd_conc_req_summary_v
where program_short_name='результат предыдущего запроса' and phase_code='P')
commit;

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

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

update fnd_concurrent_requests set status_code='D', phase_code='C'
where request_id in (select request_id from fnd_conc_req_summary_v
where program_short_name='результат предыдущего запроса' and phase_code='R')
commit;

пятница, 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'