Что такое AUDSID? (Oracle 11g).
SQL> desc v$session
Name Type Nullable Default Comments
-----------------------------
------------ -------- ------- --------
SADDR RAW(8) Y
SID NUMBER
Y
SERIAL# NUMBER Y
AUDSID NUMBER Y
PADDR RAW(8) Y
USER# NUMBER Y
USERNAME
VARCHAR2(30) Y
В этой небольшой заметке
нам интересна колонка AUD_SID. AUDSID –
это уникальный идентификатор для сессии и он используется в таблицах аудита, в
частности в sys.aud$, как колонка SESSIONID. Следует заметить, что по колонкам SESSIONID\SES$TID раньше (до версии Oracle 11g) строился индекс I_AUD1, но с версии Oracle 11g этот индекс больше не используется и
был удален из дистрибутива.
См. ID 334486.1\
ID 6023472.8 (Bug 6023472)
As of database
version 11g this index is no longer needed, see note 6023472.8
За включение аудита в Oracle (по умолчанию аудит выключен) отвечает параметр AUDIT_TRAIL (см. v$parametr).
Возможные
значения AUDIT_TRIAL:
Values
|
AUDIT_TRAIL
|
none or false
|
Аудит БД отключен
|
Os
|
Аудит БД включен, аудит перенаправляется
в ОС
|
db or true
|
Аудит БД включен, все записи хранятся в
БД (SYS.AUD$)
|
db_extended
|
Аудит БД включен, все записи хранятся в
БД (SYS.AUD$). Так же заполняются колонки SQLBIND и SQLTEXT в таблице
SYS.AUD$
|
Xml
|
Аудит БД включен, все данные пишутся в
xml файл ОС
|
xml,extended
|
Аудит БД включен, все данные пишутся в
xml файл ОС, добавляются колонки SQLBIND и SQLTEXT
|
Стоит заметить, что за включение аудита пользователей SYS отвечает отдельный параметр - AUDIT_SYS_OPERATIONS.
Изменения параметров AUDIT_SYS_OPERATIONS\AUDIT_TRAIL требуют рестарта экземпляра.
Все записи аудита ведутся, используя значения колонки AUDSID/SESSIONID, при этом AUDSID никак не связан с SID, SERIAL#, USERNAME и т.д.
Посмотрим на посмотрим V$session:
select sid, serial# ,audsid
,username,OSUSER,schemaname from v$session
SID SERIAL# AUDSID USERNAME
OSUSER
---------- ---------- ---------- --------------------
-----------
485
4745 165550
LEX_AAAAAEX
oracle
487
23712 165546
LEX_AAAAAEX
oracle
497
40388
0
oracle
498
19269
0
oracle
502
13362 165432
EAAAAA
govanii
505
407 163821
LEXAAAAA
oracle
506
6302 4294967295
SYS
widlake
511
11702 165518
OAAAAA
backerella
512
17076 165490
LEX_AAAAAEX
oracle
518
9066 165507
OAAAAA
Manoled
519
6956 163976
LEX_AAAAAEX
oracle
521
15272 4294967295 SYS
widlake
523
4825 163975
LEX_AAAAAEX
oracle
536
63941 4294967295
SYS
backerella
524
19740 165548
LEX_AAAAAEX
oracle
525
850 165549
LEX_AAAAAEX
oracle
526
45112 165516
XXX
backerella
527
11086 163963
LEX_AAAAAEX
oracle
529
1662 163818
LEX_AAAAA
oracle
530
62788 4294967295
SYS
widlake
Интересное замечание - на этой БД не
включен аудит, а колонка AUDSID все равно заполняется. Так же интересно, что у всех аккаунтов SYS колонка AUDSID тоже заполнена (0, какое-нибудь значение
или 4294967295 (1024*1024*1024*4 - 1)). Почему у некоторых пользователей SYS AUDSID ноль? Потому что это внутренние
процессы оракла. Активность PMON, SMON,
CKPT не аудируется. Для всех же «нормальных»
аккаунтов (обычных пользователей) значения AUDSID уникальны
и имеют некоторое значение. Если посмотреть в таблицу sys.aud$ - SESSIONID с течением времени инкрементируется,
это значение берется из последовательности (sequence) AUDSES$:
----
select ds.sequence_name, ds.max_value, ds.cycle_flag, ds.last_number from dba_sequences ds where ds.sequence_name
= 'AUDSES$';
----
SEQUENCE_NAME MAX_VALUE CYCLE_FLAG LAST_NUMBER
---------------------- ---------------- ---------------- -------------------
AUDSES$ 2000000000 Y 13098046
Максимальное значение счетчика 2 000 000 000, это значит, что
его хватит на 2 миллиарда сессий, а после этого счетчик вернется к значению
один (CYCLE_FLAG=YES), поэтому после достижения
максимального значения аудит нужно будет очистить.
P.S.
Если, например, у нас есть система с подключениями раз в секунду, то для того чтобы исчерпать все 2 млрд.
потребуется 63 года (2 000 000 000/60*60*24*365).
Комментариев нет:
Отправить комментарий