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

Откуда:
Сообщений: 113
Здравствуйте
Есть сервер с Oracle 11.2.0.3 Windows 2008. Импорт базы размером 87Gb идет 2,5 часа
Возникла необходимость попробовать Oracle на Linux. На этом же оборудовании установил Oracle Linux 6.7 и Oracle 11.2.0.4.7(пробовал и 11.2.0.3 результат тот же)
Импорт стал 5,5 часов

Решил проверить на одной таблице, включил трассировку
ALTER SYSTEM SET EVENTS '10046 trace name context forever, level 12';

Дамп и данный находятся на разных физических дисках.
Кэширование для дисков в Windows отключено.
filesystemio_options=setall для Oracle на Linux

Параметры импорта следующие:
USERID='/ as sysdba'
SCHEMAS=ODB
DUMPFILE=EXPDAT.DMP
INCLUDE=TABLE:"IN ('BKL_PRI')"
LOGFILE=IMPORTT1.LOG
CONTENT=DATA_ONLY
METRICS=YES

Это результат на Windows 2008

OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1505 0.06 0.09 0 857 0 0
Execute 1744 47.51 148.43 1514 42937 836373 1396
Fetch 1602 0.17 0.13 23 12042 0 5088
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4851 47.75 148.66 1537 55836 836373 6484

Misses in library cache during parse: 337
Misses in library cache during execute: 301

Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
KSV master wait 1 0.25 0.25
Disk file operations I/O 11 0.02 0.04
wait for unread message on broadcast channel
11 1.01 2.19
Datapump dump file I/O 5329 0.11 9.21
direct path write 14458 0.21 85.90
db file scattered read 188 0.01 0.39
db file sequential read 35 0.00 0.02
control file sequential read 7 0.00 0.00
local write wait 4 0.01 0.06
buffer busy waits 1 0.00 0.00
enq: TX - contention 1 0.00 0.00
log file switch (private strand flush incomplete)

Это на Linux 6.7

OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2074 0.08 0.08 0 103 0 0
Execute 5312 48.60 223.43 1740 48626 839198 1409
Fetch 12099 0.35 0.99 1246 44229 42 15501
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 19485 49.04 224.51 2986 92958 839240 16910

Misses in library cache during parse: 249
Misses in library cache during execute: 221

Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
KSV master wait 1 0.04 0.04
Disk file operations I/O 11 0.01 0.01
wait for unread message on broadcast channel
16 0.99 2.19
Datapump dump file I/O 5515 0.15 6.38
direct path write 6268 0.05 76.71
reliable message 1 0.00 0.00
db file scattered read 326 0.00 0.20
db file sequential read 254 0.01 0.62
library cache: mutex X 1 0.00 0.00
control file sequential read 7 0.00 0.00
direct path read 9 0.00 0.02
buffer busy waits 1 0.00 0.00
enq: HW - contention 1 0.00 0.00
local write wait 12 0.02 0.22
enq: TQ - DDL contention 1 0.03 0.03

Время waited на Linux даже лучше, но elapsed гораздо хуже.
Во время импорта заметил что на Windows(монитор ресурсов) скорость чтения/записи примерно 38-40Мб/с, а на Linux(iostat) 20-23Мб/с.
Почему? Может есть возможность как то увеличить эту скорость?
14 окт 15, 09:40    [18275989]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
mefman
Member

Откуда:
Сообщений: 3165
оракля на линукс ставили с соблюдением всех рекомендаций или next-next-finish?
14 окт 15, 09:45    [18276025]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
тщт
Guest
SergeyNZ,

а для OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS где?
14 окт 15, 09:55    [18276076]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
SergeyNZ
Member

Откуда:
Сообщений: 113
Устанавливал как в документации
oracle-rdbms-server-11gR2-preinstall.x86_64, потом сам Oracle. После установки настроил HugePage

это Windows

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 0 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 0 0.00 0.00 0 0 0 0

Misses in library cache during parse: 0

Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
class slave wait 2 0.00 0.00
KSV master wait 1 0.00 0.00
direct path write 1 0.00 0.00

Это Linux

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 0 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 0 0.00 0.00 0 0 0 0

Misses in library cache during parse: 0

Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
class slave wait 2 0.00 0.00
KSV master wait 1 0.00 0.00
Disk file operations I/O 1 0.00 0.00
direct path write 1 0.01 0.01
db file scattered read 5 0.00 0.00
db file sequential read 154 0.01 0.23
14 окт 15, 10:03    [18276113]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
SergeyNZ
Member

Откуда:
Сообщений: 113
На Windows NTFS - c размером кластера 32Кб
14 окт 15, 10:05    [18276126]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
SergeyNZ
Member

Откуда:
Сообщений: 113
На Linux - ext4

Filesystem volume name: <none>
Last mounted on: /oradata
Filesystem UUID: 7f140fd3-f91a-4bc3-bac6-1c7e7f6cb2f1
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 122101760
Block count: 488378000
Reserved block count: 24418900
Free blocks: 315001848
Free inodes: 122101705
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 907
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
RAID stripe width: 1048575
Flex block group size: 16
Filesystem created: Thu Oct 8 18:50:15 2015
Last mount time: Tue Oct 13 18:19:17 2015
Last write time: Tue Oct 13 18:19:17 2015
Mount count: 16
Maximum mount count: -1
Last checked: Thu Oct 8 18:50:15 2015
Check interval: 0 (<none>)
Lifetime writes: 2753 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 5a44497d-8cfc-4483-b3b6-2759848890ea
Journal backup: inode blocks
14 окт 15, 10:07    [18276130]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
landy
Member

Откуда:
Сообщений: 1474
На ext4 filesystemio_options='ASYNCH' или NONE - нота 1487957.1

use_large_pages="ONLY' ???
ipcs -m - oracle использует?
14 окт 15, 10:39    [18276342]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
SergeyNZ
Member

Откуда:
Сообщений: 113
landy,

This is a Linux defect known to be fixed in Oracle Linux version kernel-uek-2.6.39-200.29.3.el6uek.
У меня
3.8.13-98.4.1.el6uek.x86_64

use_large_pages='ONLY' Да. Предварительно сделав настройки в системе как написано в документации

HugePages_Total: 25605
HugePages_Free: 24053
HugePages_Rsvd: 24049
HugePages_Surp: 0
Hugepagesize: 2048 kB


[oracle@testserver arhiv]$ ipcs -m - oracle

------ Сегменты совм. исп. памяти --------
ключ shmid владелец права байты nattch состояние
0x00000000 557060 oracle 640 402653184 23
0x00000000 589829 oracle 640 53284438016 23
0x6ee06a04 622598 oracle 640 2097152 23

14 окт 15, 10:52    [18276432]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
landy
Member

Откуда:
Сообщений: 1474
a free что показывает ?
14 окт 15, 11:03    [18276500]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
landy
Member

Откуда:
Сообщений: 1474
Диски, где данные лежат - локальные ?
14 окт 15, 11:04    [18276512]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
SergeyNZ
Member

Откуда:
Сообщений: 113
landy,

[root@testserver arhiv]# cat /proc/meminfo
MemTotal: 65682360 kB
MemFree: 5749968 kB
Buffers: 41192 kB
Cached: 6296920 kB
SwapCached: 0 kB
Active: 530284 kB
Inactive: 6181016 kB
Active(anon): 306424 kB
Inactive(anon): 74824 kB
Active(file): 223860 kB
Inactive(file): 6106192 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 71303152 kB
SwapFree: 71303152 kB
Dirty: 12 kB
Writeback: 0 kB
AnonPages: 379912 kB
Mapped: 86072 kB
Shmem: 1408 kB
Slab: 287036 kB
SReclaimable: 209348 kB
SUnreclaim: 77688 kB
KernelStack: 5016 kB
PageTables: 25448 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 77924812 kB
Committed_AS: 798608 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 402172 kB
VmallocChunk: 34359310436 kB
HardwareCorrupted: 0 kB
HugePages_Total: 25605
HugePages_Free: 23946
HugePages_Rsvd: 23942
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 9916 kB
DirectMap2M: 2052096 kB
DirectMap1G: 67108864 kB
[root@testserver arhiv]# free
total used free shared buffers cached
Mem: 65682360 59928220 5754140 1408 41200 6296924
-/+ buffers/cache: 53590096 12092264
Swap: 71303152 0 71303152

Диски локальные

UUID=59dad5be-748e-4219-8915-3a6d7e6c0198 / ext4 defaults 1 1
UUID=7f140fd3-f91a-4bc3-bac6-1c7e7f6cb2f1 /oradata ext4 defaults 1 1
дамп на первом данные на втором
14 окт 15, 11:10    [18276535]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
landy
Member

Откуда:
Сообщений: 1474
Ну я бы для начала проверил работает ли асинхронный ввод-вывод
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/sect-Oracle_9i_and_10g_Tuning_Guide-Enabling_Asynchronous_IO_and_Direct_IO_Support-Verifying_Asynchronous_IO_Usage.html

И вообще - просто копирование с раздела на раздел быстро выполняется ?
14 окт 15, 11:21    [18276608]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
А почему RoWS различается в 3 раза - 5к на винде против 15к на линухе? (и QUERY = 12к потив 44к).
Что-то здесь не так. Смотрите разницу трейса по конкретным запросам.
14 окт 15, 11:23    [18276616]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
landy
Member

Откуда:
Сообщений: 1474
К примеру
iostat -x 2

что показывает ?
14 окт 15, 11:24    [18276625]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
SergeyNZ
Member

Откуда:
Сообщений: 113
Скорость копирования файлов как раз отличная порядка 90-100Мб поэтому и задумался почему так медленно импорт происходит

Нашел тут статью
Available Mount Options to Improve ext4 Filesystem Performance (Doc ID 1476869.1)
Для увеличения производительности предлагают попробовать следующие параметры при монтировании

barrier=0
data=writeback
commit=60
последние 2 никак не повлияли а вот barrier=0 скорость стала даже быстрее чем на Windows

OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2580 0.23 0.28 13 1345 0 0
Execute 6649 36.67 69.44 1933 53511 841889 1493
Fetch 16039 0.34 1.53 1589 43978 42 19050
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 25268 37.24 71.26 3535 98834 841931 20543

Misses in library cache during parse: 539
Misses in library cache during execute: 469

Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
KSV master wait 1 0.27 0.27
Disk file operations I/O 12 0.00 0.00
db file sequential read 623 0.02 1.27
wait for unread message on broadcast channel
15 0.99 2.77
library cache: mutex X 1 0.00 0.00
Datapump dump file I/O 7125 0.12 5.43
direct path write 11719 0.20 23.76
reliable message 2 0.00 0.00
db file scattered read 337 0.02 0.41
control file sequential read 7 0.00 0.01
direct path read 9 0.00 0.00
local write wait 12 0.03 0.06
enq: CR - block range reuse ckpt 1 0.00 0.00

Это как было первоначально /dev/sdb1 /oradata ext4 rw,seclabel,relatime,data=ordered 0 0

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 94,50 23936,00 8,00 47872 16
sdb 268,50 56,00 30194,50 112 60389

avg-cpu: %user %nice %system %iowait %steal %idle
2,20 0,00 0,25 6,35 0,00 91,20

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 93,50 23680,00 6,00 47360 12
sdb 281,50 56,25 29991,75 112 59983

avg-cpu: %user %nice %system %iowait %steal %idle
2,14 0,00 0,25 6,79 0,00 90,82

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 96,50 24448,00 8,00 48896 16
sdb 247,00 32,00 30744,00 64 61488

avg-cpu: %user %nice %system %iowait %steal %idle
2,01 0,00 0,25 7,86 0,00 89,87

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 95,00 24064,00 8,00 48128 16
sdb 274,50 60,00 30864,00 120 61728

Это с /dev/sdb1 /oradata ext4 rw,seclabel,relatime,nobarrier,data=ordered 0 0

avg-cpu: %user %nice %system %iowait %steal %idle
5,97 0,00 0,75 6,10 0,00 87,18

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 341,00 81792,00 6680,00 163584 13360
sdb 457,00 144,00 103737,50 288 207475

avg-cpu: %user %nice %system %iowait %steal %idle
5,52 0,00 0,63 7,28 0,00 86,57

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 289,00 73728,00 8,00 147456 16
sdb 430,50 228,00 93861,75 456 187723

avg-cpu: %user %nice %system %iowait %steal %idle
7,04 0,00 0,69 5,78 0,00 86,49

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 369,50 94336,00 60,00 188672 120
sdb 524,50 140,00 119309,25 280 238618

Значит все таки от файловой системы зависит
Буду смотреть как barrier влияет на надежность, плохо если не надежно станет

Или может другие файловые системы более подходят для Oracle?
хотя ext4 идет по умолчанию в Oracle Linux 6.7, а в Oracle Linux 7 уже XFS по молчанию
14 окт 15, 11:39    [18276762]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных в Linux и в Windows. Почему такая разница?  [new]
SergeyNZ
Member

Откуда:
Сообщений: 113
landy,

[oracle@testserver trace]$ ldd $ORACLE_HOME/bin/oracle | grep libaio
libaio.so.1 => /lib64/libaio.so.1 (0x0000003b81800000)
[oracle@testserver trace]$ nm $ORACLE_HOME/bin/oracle | grep io_getevent
w io_getevents@@LIBAIO_0.4

[root@testserver arhiv]# egrep "kioctx|kiocb" /proc/slabinfo
kioctx 27 60 384 10 1 : tunables 54 27 8 : slabdata 6 6 0
kiocb 26 30 256 15 1 : tunables 120 60 8 : slabdata 2 2 0


Получается что включен
14 окт 15, 11:46    [18276813]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить