Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > redo и arc файлы


Автор: ALESIA 27.4.2011, 16:46
здравствуйте.
мне необходимо выполнить следующую задачу:  выполнить некоторые изменения с таблицей ( insert update delete), а затем найти в каком именно файле ( REDO001, REDO002, REDO003 или в каком ARC-файле) хранятся сведения об этом изменении, если эти изменения были выполнены какого-то конкретного числа.

буду благодарна за помощь.

Автор: Hroft 27.4.2011, 17:28
Насколько я понимаю, удобнее всего будет воспользоваться Logminer.
http://download.oracle.com/docs/cd/A87860_01/doc/server.817/a76956/archredo.htm
Ну и стандарный вопрос Тома Кайта: а зачем? Может, все проще? Может, есть аудит?

Выдержка из приведенного мануала:
Код

# Start the LogMiner. Limit the search to the specified time range.
EXECUTE DBMS_LOGMNR.START_LOGMNR( -
DICTFILENAME => 'orcldict.ora', -
STARTTIME => to_date('01-Jan-1998 08:30:00', 'DD-MON-YYYY HH:MI:SS') -
ENDTIME => to_date('01-Jan-1998 08:45:00', 'DD-MON-YYYY HH:MI:SS')); 

SELECT sql_redo, sql_undo FROM v$logmnr_contents 
WHERE username = 'JOEDEVO' AND tablename = 'SALARY';

# The following data is displayed (properly formatted)

SQL_REDO                                 SQL_UNDO
--------                                 --------
delete * from SALARY                     insert into SALARY(NAME,EMPNO, SAL)
where EMPNO = 12345                      values ('JOEDEVO', 12345,500)
and ROWID = 'AAABOOAABAAEPCABA';

insert into SALARY(NAME, EMPNO, SAL)     delete * from SALARY
values('JOEDEVO',12345,2500)             where EMPNO = 12345
                                         and ROWID = 'AAABOOAABAAEPCABA';
2 rows selected


Автор: LSD 27.4.2011, 17:42
1. Непосредственно перед выполнением DML, выполняешь:
Код

SELECT current_scn FROM v$database

и записываешь scn.

2. Выполняешь свой DML.

3. Выполняешь:
Код

SELECT current_scn FROM v$database

и записываешь scn. Теперь у тебя есть диапазон scn в который попали твои изменения.

4. Дальше берешь вьюхи 
Код

SELECT * FROM v$log ORDER BY sequence#

SELECT * FROM v$logfile

SELECT * FROM v$archived_log order by sequence#

в каком файле сейчас твои изменения. Если все scn попали в один файл, то все.

5. Если не повезло, то берешь http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/logminer.htm и начинаешь копать файлы, что куда попало.

Автор: ALESIA 27.4.2011, 23:51
дело в том, что мне необходимо получить название этого журнала.

Автор: LSD 28.4.2011, 09:35
v$logfile содержит имена файлов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)