Oracle DB, Oracle APEX, Linux etc.

среда, 12 октября 2011 г.

Oracle: ORA-00600 [16305] + ORA-03113 при открытии БД

Обновил в очередной раз Debian на своей домашней машине, запускаю экземпляр Oracle - и что я вижу? ORA-03113 в консоли + ORA-00600 [16305] в alert.log. Порыскав немного по OTN Forums и MOS и попутно заглядывая в трассу PMON, наткнулся на Doc ID 466056.1. Проверяя кэйс, выполнил ifconfig - а в выводе нет работающего loopback-интерфейса. В общем, для решения проблемы было достаточно его поднять:
sudo ifup lo
И можно смело запускать экземпляр.
Читать далее

Oracle: V$SESSION_LONGOPS и несколько одновременных длинных операций

Для того, чтобы отразить в V$SESSION_LONGOPS состояние нескольких одновременных длительных операций - например, общее выполнение процесса и конкретный большой шаг - нужно сохранять значение параметра slno процедуры DBMS_APPLICATION_INFO.set_session_longops. Используя затем пару значений (rindex,slno), можно менять необходимую строку в V$SESSION_LONGOPS. Вот пример работы с двумя длительными операциями:
declare
  first_row pls_integer := dbms_application_info.set_session_longops_nohint;
  second_row pls_integer := dbms_application_info.set_session_longops_nohint;
  slno1 pls_integer;
  slno2 pls_integer;
begin
  dbms_application_info.set_session_longops(rindex => first_row
                                            ,slno => slno1
                                            ,op_name => '1_op'
                                            ,sofar => 1
                                            ,totalwork => 2
                                            ,units => 'step'
                                           );
  dbms_application_info.set_session_longops(rindex => second_row
                                            ,slno => slno2
                                            ,op_name => '2_op'
                                            ,sofar => 1
                                            ,totalwork => 1
                                            ,units => 'step'
                                           );
  dbms_application_info.set_session_longops(rindex => first_row
                                            ,slno => slno1
                                            ,op_name => '1_op'
                                            ,sofar => 2
                                            ,totalwork => 2
                                            ,units => 'step'
                                           );
 
end;
/

select MESSAGE from v$session_longops where (sid,serial#) =
(select sid,serial# from v$session where audsid = USERENV('SESSIONID'));
Тема на SQL.RU: set_session_longops Можно ли вернуться к предидущей строке?
Читать далее