Достаточно часто требуется хотя бы приблизительно оценить или сравнить производительность дисковой подсистемы. Неразбирающиеся люди запускают какой-нибудь тотал коммандер и копируют файл. На самом деле интересует работоспособность дисков при доступе из БД (со своим кешированием) и не в один поток.
Для начала убедитесь, что параметры БД выставлены в следующее значение (странно, если они у вас какие-то другие)
timed_statistics=true
FILESYSTEMIO_OPTIONS=setall
нижеследующий запрос должен показать асинхронный доступ к файлам
SQL код:
select name,asynch_io from v$datafile f,v$iostat_file i where f.file#=i.file_no and (filetype_name='Data File' or filetype_name='Temp File');
После этого необходимо запустить калибровку
SQL код:
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (<DISKS>, <MAX_LATENCY>, iops, mbps, lat);
например, так
SQL код:
SET SERVEROUTPUT ON
DECLARE
lat INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (2, 10, iops, mbps, lat);
DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops);
DBMS_OUTPUT.PUT_LINE ('latency = ' || lat);
dbms_output.put_line('max_mbps = ' || mbps);
end;
в результате будет приблизительно следующее
Цитата: max_iops = 7104
latency = 10
max_mbps = 784
или какие там на вашей хранилке цифры
Если вдруг забудете результаты, их можно посмотреть в таблице DBA_RSRC_IO_CALIBRATE