10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP Lendas do...

50
10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP TITLE Speaker Lendas do Oracle 1 Ricardo Portilho Proni [email protected] Esta obra está licenciada sob a licença Creative Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.

Transcript of 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP Lendas do...

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    TITLESpeaker

    Lendas do Oracle

    1

    Ricardo Portilho [email protected]

    Esta obra está licenciada sob a licençaCreative Commons Atribuição-SemDerivados 3.0 Brasil.

    Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.

    mailto:[email protected]

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Melhores Práticas

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    ● Aplicação de conhecimento de Projetos anteriores.● Valiosas no início de um Projeto.● Engenharia → Projetos.

    Também conhecidas como:● Rules of thumb.● Industry Standards.● Blue prints.● Guidelines.

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    ● Cada vez mais populares.● Gerentes e Clientes estão obcecados por elas.● Tornaram-se leis em TI.● Projetos inteiros são dedicados às Melhores Práticas.● A tecnologia evolui demais para ter regras que duram anos.● São perigosas se aplicadas indiscriminadamente.● São aplicadas cegamente quando não se conhece a causa real.● Aplicar Melhores Práticas cegamente = adivinhação.● A culpa dessa situação é dos DBAs.

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    ● Devemos entender sua origem.● Devemos saber que problemas elas resolvem.● Devemos conhecer seus efeitos colaterais.● Devemos saber como elas funcionam.● Devemos saber porque elas funcionam.● Devemos saber porque elas não funcionam.

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    6

    Eficiência X Eficácia

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Regras → Histórias → Mitos → Lendas → Paradigmas

    7

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    A experiência é mais perigosa do que a inexperiência.

    “Não é só porque algo está escrito, que se trata da verdade.”Jonathan Lewis

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Lendas

    9

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Todo SELECT deverá utilizar um índice.

    10

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Optimizer StatisticsTable statistics

    Number of rowsNumber of blocksAverage row length

    Column statisticsNumber of distinct values (NDV) in columnNumber of nulls in columnData distribution (histogram)Extended statistics

    Index statisticsNumber of leaf blocksLevelsClustering factor

    System StatisticsI/O performance and utilizationCPU performance and utilization

    Estatísticas

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    ● CURSOR_SHARING● DB_FILE_MULTIBLOCK_READ_COUNT● OPTIMIZER_INDEX_CACHING● OPTIMIZER_INDEX_COST_ADJ● OPTIMIZER_MODE● PGA_AGGREGATE_TARGET● STAR_TRANSFORMATION_ENABLED

    Influenciando o Otimizador

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Access Paths

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Access Paths

    ● Full Table Scan● Index Fast Full Scan● Index Full Scan● Index Unique Scan● Index Range Scan● Index Skip Scan● Index Join

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Índice BITMAP deve ser criado para colunas com baixa cardinalidade.

    15

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    SESSÃO 1SQL> INSERT INTO T VALUES (1);1 linha criada.

    SESSÃO 2SQL> INSERT INTO T VALUES (2);1 linha criada.

    SESSÃO 1:SQL> INSERT INTO T VALUES (2);Neste momento a Sessão 1 fica aguardando a conclusão da transação da Sessão 2.

    SESSÃO 2:SQL> INSERT INTO T VALUES (1);Neste momento a Sessão 2 fica aguardando a conclusão da transação da Sessão 1.

    SESSÃO 1:ERRO na linha 1:ORA-00060: conflito detectado ao aguardar recurso

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    17

    SQL> SELECT COUNT(*) FROM T; - - Sem índice.COUNT(1)———-10936000

    SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T; - - Sem índice.COUNT(DISTINCT(OWNER))———————-28Decorrido: 00:00:26.75

    SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T; - - Com índice BTREE.COUNT(DISTINCT(OWNER))———————-28Decorrido: 00:00:05.29

    SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T; - - Com índice BITMAP.COUNT(DISTINCT(OWNER))———————-28Decorrido: 00:00:01.84

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    18

    SQL> SELECT COUNT(*) FROM T;COUNT(1)———-10936000

    SQL> SELECT COUNT(DISTINCT(OWNER)) FROM T;COUNT(DISTINCT(OWNER))———————-28

    SQL> SELECT COUNT(DISTINCT(OBJECT_NAME)) FROM T; -- Com índice BTREECOUNT(DISTINCT(OBJECT_NAME))—————————-40998Decorrido: 00:00:08.95

    SQL> SELECT COUNT(DISTINCT(OBJECT_NAME)) FROM T; – Com índice BITMAPCOUNT(DISTINCT(OBJECT_NAME))—————————-40998Decorrido: 00:00:03.15

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Tabelas grandes devem ser particionadas.

    19

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    20

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Deverá fazer COMMIT a cada N linhas.

    21

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Qual a transação mais longa que o sistema deve suportar?UNDO_RETENTIONCREATE UNDO TABLESPACE … RETENTION GUARANTEEAUTOEXTEND ON

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    O desenvolvedor não quer alterar o SQL.

    Não tem jeito.

    23

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    DBMS_ADVANCED_REWRITE

    BEGIN SYS.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE ( NAME => 'PORTILHO_REWRITE', SOURCE_STMT => 'SELECT /*+ INDEX(T_ALIAS,IDX_T) */ COUNT(*) FROM T T_ALIAS WHERE OBJECT_NAME = ''T''', DESTINATION_STMT => 'SELECT COUNT(OBJECT_NAME) FROM T T_ALIAS WHERE OBJECT_NAME = ''T''', VALIDATE => FALSE, REWRITE_MODE => 'TEXT_MATCH');END;/

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    É melhor criar bancos / servidores separados, para um não incluenciar o outro.

    25

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Separação de Recursos por:● ORACLE_USER● SERVICE_NAME● CLIENT_OS_USER● CLIENT_PROGRAM● CLIENT_MACHINE● MODULE_NAME● MODULE_NAME_ACTION● SERVICE_MODULE● SERVICE_MODULE_ACTION

    Controle dos Recursos:● CPU● Sessões Ativas● Paralelismo● I/O (>= 11gR1)

    Resource Plan

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Terá uma área de SWAP com o dobro da RAM.

    27

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    28

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Não utilizará mais que 50% da RAM para a SGA.

    29

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    [root@nerv01 ~]# free total used free shared buffers cachedMem: 3913052 957340 2955712 0 108616 318084-/+ buffers/cache: 530640 3382412Swap: 8388600 0 8388600[root@nerv01 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/sda1 286G 12G 260G 5% /tmpfs 1.9G 0 1.9G 0% /dev/shm

    RAM Total do Servidor - (quantidade máxima de conexões simultâneas + 40) x 20MB

    - Memória do Sistema Operacional = (OLTP) 80% SGA e 20% PGA OU

    = (OLAP) 20% PGA e 80% SGA

    30

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Deverá separar dados e índices.

    31

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    32

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Seus DATAFILEs deverão ter no máximo nGB.

    35

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    36

    Eventos relacionados● control file single write● control file parallel write● control file sequential read● db file single write

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    37

    Não utilizará AUTOEXTEND ON.

    37

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    3838

    Eventos relacionados● Data file init write

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Deverá ter no máximo um Switch a cada 20m.

    Não deverá ter grandes Redo Log.

    Archive causa lentidão.

    39

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Eventos relacionadosSwitchlog file switchlog file switch (checkpoint incomplete)log file switch (clearing log file)log file switch (private strand flush incomplete)log file switch completion

    Archivelog file sequential readlog file switch (archiving needed)

    Como controlar?archive_lag_target

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Mais é melhor.

    41

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Oracle RACGC *

    SHARED_POOL_SIZElatch freelatch: library cachelatch: shared pool

    DB_CACHE_SIZEbuffer busyfree bufferread by oher sessionlatch: cache buffers chainslatch: row cache objects

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    LOG_BUFFERlog buffer spacelog file parallel writelog file single writelog file switchlog file sync

    43

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Deverá desfragmentar seu banco regularmente.

    44

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    ● Blocos logicamente contíguos espalhados fisicamente.● Espaço livre na TABLESPACE / DATAFILEs.● Espaço livre da TABELA.● Espaço livre no ÍNDICE.● Row Chaining.● Migrated Rows.● EXTENTs.

    45

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Fragmentação: COALESCE

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    47

    Fragmentação: COALESCE

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    48

    Fragmentação: Row Chaining

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    49

    Fragmentação: Row Migration

  • 10 de Agosto de 2013 no Hotel Blue Tree Morumbi, São Paulo - SP

    Dúvidas?

    50

    Ricardo Portilho [email protected]

    mailto:[email protected]

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49Slide 50