Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 подсчет количества измений в таблице за период  [new]
Газироффка
Member

Откуда:
Сообщений: 47
Доброго времени суток.
Не поскажете, есть ли какие-то способы получить количество транзакций за период по таблице (количество операций вставки, изменения, уделения), не прибегая к сохранению копии этой таблицы и сравнению результатов с существующей таблицей через заданный период времени?
Анализ статистики, архив логов, еще как-то?
13 сен 10, 15:14    [9430474]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
Газироффка,

dba_tab_modifications показывает изменения с момента последнего сбора статистики
13 сен 10, 15:16    [9430495]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
если заданный период - это сбор статистики, то dba_tab_modification..
ну или перед сбором статы делайте снапшот этой въюхи )
13 сен 10, 15:17    [9430501]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
LogMiner
13 сен 10, 15:18    [9430511]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
Adtain
Member

Откуда: Moscow
Сообщений: 290
А можно ж написать свой триггер...
13 сен 10, 15:22    [9430552]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
Газироффка
Member

Откуда:
Сообщений: 47
Спасибо большое, dba_tab_modifications - то что надо, единственная проблема - должен быть выставлен атрибут MONITORING для таблицы. А в моем случае есть большое ограничение - на схеме, на которой находятся таблица, нельзя делать никаких изменений. Вариант с триггерами по этой же причине не подходит. На LogMiner еще посмотрю, но в нем тоже сомневаюсь...
Есть еще уточнение, после которого придется все таки копию сохранять и сравнивать - если в таблице произошло 100 апдейтов одной и той же записи, мне нужна информация только об одном апдейте.
13 сен 10, 16:06    [9430850]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
-2-
Member

Откуда:
Сообщений: 15330
create flashabck archive xxx ....;
alter table yyy flashback archive xxx;

select VERSIONS_OPERATION, count(*)
from yyy versions between timestamp current_timestamp-interval '1' day and current_timestamp
group by VERSIONS_OPERATION;
13 сен 10, 16:07    [9430854]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
PaulEr
Member

Откуда:
Сообщений: 3794
-2-
create flashabck archive xxx ....;
alter table yyy flashback archive xxx;

select VERSIONS_OPERATION, count(*)
from yyy versions between timestamp current_timestamp-interval '1' day and current_timestamp
group by VERSIONS_OPERATION;


Если автор сказал, что нельзя делать изменений в схеме(то есть, включить MONITORING через alter table yyy monitoring нельзя), то Ваш вариант тоже не подойдет.
13 сен 10, 16:12    [9430893]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Газироффка
на схеме, на которой находятся таблица, нельзя делать никаких изменений


Основание ?
13 сен 10, 16:36    [9431091]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
Газироффка
Member

Откуда:
Сообщений: 47
Доступ к данным есть только на чтение.
13 сен 10, 16:56    [9431249]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
Газироффка,

аудитом разрулите. и матвьюху которая будет подсасывать оттуда данные и сортировать по типу операции.
13 сен 10, 17:05    [9431315]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
вот в некоторых прикладных решениях (пальцем не буду показывать)
сабж решен так: в каждой строке, явно, как атрибут, торчит ея (строки) версия

(видать к ним тоже приставали с этой хренью )
13 сен 10, 17:15    [9431415]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
-2-
Member

Откуда:
Сообщений: 15330
Газироффка
А в моем случае есть большое ограничение - на схеме, на которой находятся таблица, нельзя делать никаких изменений. Вариант с триггерами по этой же причине не подходит.
Сделать триггер в другой схеме.
13 сен 10, 17:20    [9431458]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Газироффка
Доступ к данным есть только на чтение.


Ничего не понял.
При чем тут доступ к данным, когда речь идет об операции ALTER ?
13 сен 10, 18:08    [9431784]     Ответить | Цитировать Сообщить модератору
 Re: подсчет количества измений в таблице за период  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
Газироффка
Спасибо большое, dba_tab_modifications - то что надо, единственная проблема - должен быть выставлен атрибут MONITORING для таблицы.
Это было актуально в 9i. В 10g это игнорируется
tst> create table t1(a number) NOMONITORING;

Table created.

tst> exec dbms_stats.gather_table_stats(user, 'T1')

PL/SQL procedure successfully completed.

tst> select timestamp, inserts, updates, deletes from user_tab_modifications where table_name='T1';

no rows selected

tst> insert into t1 values(4);

1 row created.

tst> exec dbms_stats.flush_database_monitoring_info
BEGIN dbms_stats.flush_database_monitoring_info; END;

*
ERROR at line 1:
ORA-20000: Insufficient privileges
ORA-06512: at "SYS.DBMS_STATS", line 2151
ORA-06512: at "SYS.DBMS_STATS", line 14390
ORA-06512: at line 1


tst> connect system/manager@tst
Connected.
tst> exec dbms_stats.flush_database_monitoring_info

PL/SQL procedure successfully completed.

tst> connect u1/u1@tst
Connected.
tst> select timestamp, inserts, updates, deletes from user_tab_modifications where table_name='T1';

TIMESTAMP    INSERTS    UPDATES    DELETES
--------- ---------- ---------- ----------
14-SEP-10          1          0          0
14 сен 10, 02:24    [9433096]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить