Instance crashed | AUD: OS Error = 1717 encountered while writing audit record

Имеется БД. Работает на машине:
"Oracle Database 12c Release 12.1.0.1.0 - 64bit Production.
Windows NT Version V6.2"

Сообщение о крахе экземпляра. Последние записи в алертлоге:

Fri Dec 16 00:10:08 2016
AUD: OS Error = 1717 encountered while writing audit record

Что произошло? Дмитрий Бобровский упомянул возможные причины здесь, но ни одна из вероятных причин, по которой журнал событий (event log windows)  сервера был недоступен не была описана.

Как было выявлено впоследствии, ребята из windows team ночью устанавливали patсh на сервер. По всей вероятности он оказал временное влияние на доступ приложений к event log.
Товарищи, будьте бдительны при изменении конфигурации ОС !

Bunch of queries I use.

При работе в SQL*pus бывает удобно посмотреть не только дату, но и конкретное время:
alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss";

Теперь мы знаем точное время запуска экземпляра : )

Порой autoextend = YES (автоматическое расширение файлов данных) не очень хорошая идея. Добавление файлов данных, их расширение и прочие манипуляции будут проводиться вручную, в этом нам помогут :

--Добавление нового файла данных в табличное пространство
ALTER TABLESPACE "ИМЯ_ТАБЛИЧНОГО_ПРОСТРАНСТВА"   ADD     DATAFILE 'ПОЛНЫЙ_ПУТЬ_К_НОВОМУ_ФАЙЛУ_ДАННЫХ' SIZE 10240m;

--Добавление нового файла данных с авторасширением в табличное пространство
ALTER TABLESPACE "PSAPUNDO"   ADD     DATAFILE 'ПОЛНЫЙ_ПУТЬ_К_НОВОМУ_ФАЙЛУ_ДАННЫХ' SIZE 100M autoextend on;
--Изменение размера файла данных
ALTER DATABASE DATAFILE 'ИМЯ_ТАБЛИЧНОГО_ПРОСТРАНСТВА' RESIZE 32767M;

--Список файлов в табличном пространстве с информацией о размере и наличии авторасширения
select substr(file_name,instr(file_name,'\',-1,1)+1,100) as "FileName", file_name "FullName",tablespace_name "TS Name", file_id "ID", autoextensible,
floor((bytes)/(1024*1024*1024))as Total_Gb,floor((bytes)/(1024*1024))as Total_Mb from dba_data_files
where tablespace_name=upper('ИМЯ_ТАБЛИЧНОГО_ПРОСТРАНСТВА')
order by relative_fno;

--Создание табличного пространства
create tablespace "ИМЯ_НОВОГО_ТАБЛИЧНОГО_ПРОСТРАНСТВА" datafile 'ПОЛНЫЙ_ПУТЬ_К_НОВОМУ_ФАЙЛУ_ДАННЫХ' size 1000M;

--Добавление файла во временное табличное пространство
ALTER TABLESPACE "ИМЯ_ВРЕМЕННОГО_ТП"
ADD TEMPFILE 'ПОЛНЫЙ_ПУТЬ_К_НОВОМУ_ФАЙЛУ' SIZE 100M;

--Удаление табличного пространства
DROP TABLESPACE ИМЯ_ТП INCLUDING CONTENTS AND DATAFILES;

--Место занимаемое DF, redo и temp [Можно использовать подзапрос]
select round(sum(Total_GB),2) as Total_GB from
(select File_name, sum(total_mb/1024) as Total_GB from
(
select file_name as File_name, floor((bytes)/(1024*1024)) as Total_Mb from dba_data_files
union all
select lf.member as dir, l.bytes/(1024*1024)as Total_Mb from v$logfile lf, v$log l where lf.group#=l.group#
union all
select name as dir, bytes/(1024*1024) as Total_Mb from v$tempfile
union all
select name, round((block_size*file_size_blks)/1024/1024,2) from v$controlfile
)
group by File_name
);

--Directory list (Список папок/Каталогов Windows)
select substr(file_name,0,instr(file_name,'\',-1,1)) as dir from dba_data_files
union all
select substr(lf.member,0,instr(lf.member,'\',-1,1)) as dir from v$logfile lf, v$log l where lf.group#=l.group#
union all
select substr(name,0,instr(name,'\',-1,1)) as dir from v$tempfile
union all
select substr(name,0,instr(name,'\',-1,1)) as dir from v$controlfile;

--Directory list (Список папок/Каталогов *nix)
select substr(file_name,0,instr(file_name,'/',-1,1)) as dir from dba_data_files
union all
select substr(lf.member,0,instr(lf.member,'/',-1,1)) as dir from v$logfile lf, v$log l where lf.group#=l.group#
union all
select substr(name,0,instr(name,'/',-1,1)) as dir from v$tempfile
union all
select substr(name,0,instr(name,'/',-1,1)) as dir from v$controlfile;

--Свободное место в TS
select t.tablespace_name,floor((t.total)/(1024*1024*1024)) as Total_Gb,floor((f.free)/(1024*1024*1024)) as Free_Gb, floor((t.total-f.free)*100/t.total) as pct from
(select tablespace_name, sum(bytes) as free from dba_free_space group by tablespace_name) f,
(select tablespace_name, sum(bytes) as total from dba_data_files group by tablespace_name) t
where t.tablespace_name=f.tablespace_name
--and t.tablespace_name like 'ИМЯ_ТАБЛИЧНОГО_ПРОСТРАНСТВА_ЕСЛИ_НУЖНО%'
order by pct desc;

--Размер таблицы
SELECT owner, segment_name, segment_type,tablespace_name,
ROUND(SUM (BYTES) / 1024 / 1024) "SIZE (MB)",
SUM (blocks) blocks, COUNT (*) extents
FROM dba_extents
WHERE owner = 'ВЛАДЕЛЕЦ' AND segment_name = 'ИМЯ_ТАБЛИЦЫ'
AND segment_type = 'TABLE'
GROUP BY owner, segment_name, segment_type, tablespace_name;

 

--Размер объектов схемы:
select sum(bytes)/1024/1024 as size_in_mega,
segment_type
from dba_segments
where owner='&owner_name'
group by segment_type;

--Размер всех схем с разбивкой по юзерам:
select sum(bytes)/1024/1024 as size_in_mega, owner
from dba_segments
group by owner;

--Размер данных в базе данных 8192-размер блока:
select (sum(blocks)*8192)/1024/1024/1024 from dba_segments;

Сбор статистики

Иногда просадка по производительности запросов связана с тем, что собранная статистика по таблицам  не актуальна. Поможет нам в этом

Сбор статистики по схеме:
begin
dbms_stats.gather_schema_stats(ownname => 'ИМЯ_СХЕМЫ',
estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, cascade=>TRUE);
end;

Сбор статистики по таблице:
dbms_stats.gather_table_stats('ИМЯ_СХЕМЫ',upper('ИМЯ_ТАБЛИЦЫ'))

Посмотреть статистику по юзеру:
select * from DBA_TAB_STATISTICS
where OWNER like 'ИМЯ_СХЕМЫ'
--and num_rows is not null
--order by num_rows desc