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

четверг, 27 октября 2016 г.

Oracle SQL Developer vs FOR UPDATE


Порой возникает необходимость что-то быстренько изменить в любимой БД, пока никто не видел, делать это стандартным способом через написание апдейта конечно не хочется, так как это не так быстро как хотелось бы, да и сильно изнашивает клавиатуру. В дурацком и дорогом PL/SQL Developer'e, для таких как мы, давно уже придумали обходной путь в виде самопального оператора for update, который быстро и без напряга позволяет поменять всё и вся. А что же в бесплатном и кроссплатформеном Oracle SQL/Devekoper'e? Как все мы давно уже поняли компания Oracle лёгких путей не ищёт, но всё же на это случай она придумала свой, как всегда, "элегантный" способ. Вот он.


Последовательность действий следующая:

1. Выполняем интересующий запрос к БД, понимаем что  нам нужно изменить в конкретной строке. Выделяем условие выборки следующее за оператором where и сохраняем его в буфер обмена (Ctrl + c)




2. Зажимаем клавишу Ctrl, наводим курсор манипулятора мышь на название интересующей таблицы, в моём примере это таблица doc, и нажимаем левую кнопку манипулятора.



3. После выполнения второго пункта откроется расширенное меню таблицы. В нём необходимо перейти на вкладку  Data








4. Копируем в строку ввода Filter условия выборки запроса. И нажимаем клавишу Enter




5. Выбираем поле которое необходимо отредактировать, и открываем его  двойным щелчком по левой кнопке манипулятора мышь.








6. Вносим необходимые изменения и нажимаем кнопку ОК





7. Чтобы зафиксировать изменения в БД необходимо нажать на кнопку Commit changes (пиктограмма БД с зеленой галкой)





8. Изменения внесены, теперь можем проверить их корректность выполнив ещё раз начальный запрос.




Спасибо за внимание.

P.S. Oracle SQL Developer хорош ещё тем, что умеет общаться и с другими БД например с PostgreSQL, MSSQL, MYSQL используя специальные плагины.

 

пятница, 11 июля 2014 г.

OeBS: Поднять приоритет запросу ожидающего своей очереди

update apps.fnd_concurrent_requests set priority=40 
    where request_id=95678 
    and phase_code='P'

четверг, 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