• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Oracle 10gR2 RAC: Performance Tuning
 

Oracle 10gR2 RAC: Performance Tuning

on

  • 3,030 views

Oracle 10gR2 RAC: Performance Tuning

Oracle 10gR2 RAC: Performance Tuning

Statistics

Views

Total Views
3,030
Views on SlideShare
2,995
Embed Views
35

Actions

Likes
1
Downloads
231
Comments
1

3 Embeds 35

http://www.ryanpadilha.com.br 33
http://www.slideshare.net 1
http://blog.ryanpadilha.com.br 1

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • could make it this ppt in English so that i can easy understand
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Oracle 10gR2 RAC: Performance Tuning Oracle 10gR2 RAC: Performance Tuning Presentation Transcript

    • Oracle 10gR2 RAC: Performance Tuning Ricardo Portilho Proni [email_address]
    • <Insert Picture Here> Cursos Hands On
    • Aprendizado
      • Visão: 5%
      • Audição: 8%
      • Visão e Audição: 12%
      • Execução: 22%
      • Execução com erro: 42%
      • E 50% é perdido em 2 anos...
    • <Insert Picture Here> Cursos Nerv
    • Cursos Nerv Oracle 11g Backup & Recovery (3 Sábados ) RMAN 11gR2 - Configuração RMAN 11gR2- Backup RMAN 11gR2 - Recovery RMAN 11gR2 - Avançado Oracle Performance Diagnostics & Tuning (3 Sábados) Oracle Event Interface OLTP Performance Tuning DW Performance Tuning Oracle RAC 11gR2 REAL (3 Sábados) Instalação / Configuração / Administração / Performance Tuning Oracle Data Guard 11gR2 REAL (3 Sábados) Instalação / Configuração / Administração Switch Over / Switch Back / Failover Oracle Data Guard
    • Diferenciais
      • Cursos únicos no mercado.
      • Material impresso e digital.
      • Contrato e Nota fiscal.
      • Facilidade no pagamento.
      • Estacionamento grátis.
      • Análise no ambiente do Cliente (Treinamento In Company).
      • Carta de recomendação do Instrutor.
      Oracle Data Guard
    • <Insert Picture Here> Instrutor
    • Instrutor
      • Com cerca de 20 anos de experiência profissional, já trabalhou em grande parte dos maiores bancos de dados Oracle do Brasil.
      • É atualmente o Coordenador do CES – Centro de Excelência Solvo, unidade dedicada às atividades de consultoria, arquitetura, pré-venda e suporte 3o. Nível da Solvo S/A, empresa especializada na implementação e suporte de ambientes de missão crítica e atuação em toda a América Latina.
      • Foi eleito pela Oracle Corporation um Oracle ACE Member, um dos maiores especalistas do mundo em tecnologia de banco de dados. Também foi palestrante do V ENPO (Encontro Nacional de Profissionais Oracle), sobre Load Balance em RAC, conselheiro do GPO (Grupo de Profissionais Oracle), e escritor regular de artigos para a revista SQL Magazine.
    • Instrutor
      • Certificações
      • Oracle ACE
      • Oracle Database 10g Administrator Certified Associate
      • Oracle Database 10g Administrator Certified Professional
      • Oracle Database 10g: RAC Administrator Certified Expert
      • Oracle Database 10g: Managing Oracle on Linux Certified Expert
      • Microsoft Certified Professional
      • Microsoft Certified Database Administrator
      • Microsoft Certified Technology Specialist: SQL Server 2005
      • Microsoft Certified IT Professional: Database Administrator
      • Certified MySQL Database Administrator
      • IBM Certified Database Associate
      • IBM Certified Database Administrator
      • Sybase Adaptive Server Administrator Associate
      • Pense em Recovery, e não em Backup.
      • A maior responsabilidade de um DBA é o Recovery.
      • Os Bancos de Dados estão cada vez maiores, e o Recovery, mais difícil.
      • Cerca de 80% dos grandes Bancos de Dados não são recuperáveis.
      • Backup e Recovery é com RMAN.
      • O RMAN é grátis: se você comprou o Oracle, ele já é seu.
      • O RMAN não precisa ser instalado.
      • Se o Banco de Dados é importante, deve estar em ARCHIVELOG.
      • Se o Banco de Dados não é importante, para que colocar dados nele?
      • Não há motivo que justifique Backup Offline (“Backup Frio”).
      • Recovery é uma situação estressante.
      • Durante uma situação estressante, tendemos a utilizar as opções que conhecemos melhor.
      • Recovery deve ser praticado, treinado, dominado.
      • Você terá que fazer um Recovery. A questão não é SE, é QUANDO.
      • Saiba o tempo necessário para um Recovery – irão lhe perguntar.
      • Durante o Recovery, se puder, tenha uma segunda pessoa olhando o que você está fazendo.
      • Conheça outros RDBMS. TI não é lugar para paixões. Você ficaria surpreso em descobrir que os Transaction Logs do SQL Server tem melhor desempenho, os Bin Logs do MySQL são mais flexíveis, e o DB2 cresce e diminui os Logs conforme necessita.
      Minha abordagem
    • Alunos
    • Alunos
      • Se apresente.
      • Trabalha, estuda?
      • Comente sua experiência com Oracle.
      • Diga algo interessante sobre você.
    • <Insert Picture Here> I – Single Instance x RAC
    • <Insert Picture Here> Single Instance x RAC - Full Table Scans - Sequences / Sequences Artificiais - Bind Variables / Cursor Sharing - Optimizer Statistics, Histograms, System Statistics - Locally Managed Tablespaces / ASSM - Reverse Key Indexes - Partitioning - Job x Scheduler - DBMS_ALERT - DBMS_PIPE - UTL_FILE - V$SESSION - Directories / External Tables / Data Pump - BFILEs
    • <Insert Picture Here> LAB I – Sequences Hands On !
    • <Insert Picture Here> LAB - Sequences - Conecte no RAC como scott/tiger, no ORCL1. - Analise e execute o script cria_sequence.sql. - Analise e execute o script insert_sequence_lenta.sql - Analise e execute o script insert_sequence_rapida.sql - Repita os scripts de insert algumas vezes e veja se o resultado continua similar. - Abra uma sessão no ORCL1 e outra no ORCL2. - Execute o insert_sequence_lenta.sql ao mesmo tempo no ORCL1 e ORCL2. - Execute o insert_sequence_rapida.sql ao mesmo tempo no ORCL1 e ORCL2.
    • <Insert Picture Here> LAB I – Sequences Hands Off !
    • <Insert Picture Here> II – ASM
    • <Insert Picture Here> Automatic Storage Management - Lançado em 2003. - A Oracle privilegia o desenvolvimento do ASM ao OCFS2. - A Administração dos Discos é do DBA. - Possui Mirroring e Striping: RAID 1+0 de Software. - Não usa filesystem: tão rápido quanto Raw Devices. - Distribui os arquivos automatica e uniformemente entre os discos. - O Striping possui tamanhos de blocos diferenciados por tipo de arquivo. - Menos trabalho para o DBA, utilizando totalmente OFA e OMF.
    • <Insert Picture Here> LAB II – ASM Hands On !
    • <Insert Picture Here> LAB – Automatic Storage Management - Para efetuar logon no ASM1: $ export ORACLE_SID=+ASM1 $ sqlplus / as sysdba - Verifique os discos existentes, e espaço disponível: V$ASM_DISK V$ASM_DISKGROUP - Adicione dois discos no Disk Group DATA: SQL> ALTER DISKGROUP data ADD DISK '/dev/raw/raw4'; SQL> ALTER DISKGROUP data ADD DISK '/dev/raw/raw5'; - Verifique novamente os discos existentes, e espaço disponível: - Adicione um DATAFILE: SQL> ALTER TABLESPACE users ADD DATAFILE; - Execute o asmcmd, e navegue pelos diretórios do Disk Group. $ asmcmd -p ASMCMD [+] > help
    • <Insert Picture Here> LAB II – ASM Hands Off !
    • <Insert Picture Here> III – Parallel SQL
    • <Insert Picture Here> Parallel SQL - Permite Query, DML e DDL. - O RAC permite distribuir entre SQL entre Instances. - Um objeto pode ter Parallel permanente, independente do SQL: SQL> ALTER TABLE SCOTT.T PARALLEL DEGREE 4; - O Parallel SQL pode ser utilizado diretamente no SQL: SQL> SELECT /*+ PARALLEL(T2,4,2) */ COUNT(*) FROM T2; - Parâmetros: - PARALLEL_MIN_SERVERS - PARALLEL_MAX_SERVERS - OPTIMIZER_PERCENT_PARALLEL - INSTANCE_GROUPS - PARALLEL INSTANCE_GROUPS
    • <Insert Picture Here> LAB III – Parallel SQL Hands On !
    • <Insert Picture Here> LAB – Parallel SQL Execute um Parallel DDL: SQL> CREATE TABLE T2 PARALLEL (DEGREE 4) AS SELECT * FROM ALL_OBJECTS; Altere o Parallel de um objeto: SQL> ALTER TABLE T2 PARALLEL (DEGREE 4); Execute Parallel DML, usando as duas Instances: SQL> ALTER SESSION ENABLE PARALLEL DML; SQL> INSERT /*+ PARALLEL (T2,4,2) */ INTO T2 SELECT * FROM ALL_OBJECTS; SQL> COMMIT; SQL> ALTER SESSION DISABLE PARALLEL DML; Execute Parallel Query; SQL> SELECT /*+ PARALLEL(T2,4,2) */ COUNT(*) FROM T2;
    • <Insert Picture Here> LAB III – Parallel SQL Hands Off !
    • <Insert Picture Here> IV – Load Balance (Client)
    • <Insert Picture Here> Load Balance (Client) Client tnsnames.ora ORCL = (DESCRIPTION= (LOAD_BALANCE=ON) ->->-> Escolha Aleatória (FAILOVER=ON) ->->-> Tenta acessar o 1o, depois o 2o (ADDRESS=(PROTOCOL=TCP)(HOST=172.16.131.111)(PORT=1521)) ->->-> VIP (ADDRESS=(PROTOCOL=TCP)(HOST=172.16.131.112)(PORT=1521)) ->->-> VIP (CONNECT_DATA= (SERVICE_NAME=ORCL) (FAILOVER_MODE= (TYPE=SELECT) ->->-> SESSION ou SELECT (METHOD=BASIC) ->->-> BASIC ou PRECONNECT (RETRIES=10) ->->-> 10 tentativas de conexão (DELAY=1) ->->-> 1 segundo para cada tentativa ) ) )
    • <Insert Picture Here> LAB IV – Load Balance (Client) Hands On !
    • <Insert Picture Here> LAB – Load Balance (Client) - Conecte-se várias vezes, e verifique em que Instance está:. SQL> SELECT INSTANCE_NAME FROM V$INSTANCE; - Mude no tnsnames.ora para utilizar o METHOD=PRECONNECT. - Conecte-se como “scott', e veja em que instance está. - Conecte-se como “sys as sysdba” na outra instance, e veja se há a pré-conexão do “scott” nela. - Desligue o RAC2. - Verique o status dos recursos com “crs_stat -t”. - Enquanto o RAC1 não assume o VIP do RAC2, veja se recebe erro ao conectar. - Após o RAC1 assumir o VIP do RAC2, veja se recebe erro ao conectar.
    • <Insert Picture Here> LAB IV – Load Balance (Client) Hands Off !
    • <Insert Picture Here> V – Load Balance (Server)
    • <Insert Picture Here> Load Balance (Server) Nodes listener.ora: LISTENER_RAC1 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.localdomain)(PORT = 1521)) ) ) SID_LIST_LISTENER_RAC1 = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) ) Parâmetros LOCAL_LISTENER e REMOTE_LISTENER: SQL> ALTER SYSTEM SET LOCAL_LISTENER='ORCL1' SCOPE=SPFILE SID='ORCL1'. SQL> ALTER SYSTEM SET LOCAL_LISTENER='ORCL2' SCOPE=SPFILE SID='ORCL2'. SQL> ALTER SYSTEM SET REMOTE_LISTENER='LISTENERS_RAC' SCOPE+SPFILE SID='*';
    • <Insert Picture Here> Load Balance (Server) Services Goal - GOAL_NONE - GOAL_SERVICE_TIME ->->-> Bom para OLTP - GOAL_THROUGHPUT ->->-> Bom para Batch Services Connection Load Balance Goal - CLB_GOAL_SHORT ->->-> Bom para OLTP - CLB_GOAL_LONG ->->-> Bom para Batch Services Distributed Transaction Processing - TRUE - FALSE
    • <Insert Picture Here> LAB – Load Balance (Server) Package DBMS_SERVICE: EXEC DBMS_SERVICE.MODIFY_SERVICE( - service_name => 'BATCH_SERVICE', - goal => DBMS_SERVICE.GOAL_THROUGHPUT, - failover_method => DBMS_SERVICE.FAILOVER_METHOD_BASIC, - failover_type => DBMS_SERVICE.FAILOVER_TYPE_SELECT, - failover_retries => 10, - failover_delay => 1, - clb_goal => DBMS_SERVICE.CLB_GOAL_LONG);
    • <Insert Picture Here> LAB V – Load Balance (Server) Hands On !
    • <Insert Picture Here> LAB – Load Balance (Server) Veja os Services configurados atualmente: $ srvctl config database -d ORCL Crie Services para OLTP, BATCH, e DBA: $ srvctl add service -d ORCL -s OLTP_SERVICE -r ORCL1,ORCL2 $ srvctl add service -d ORCL -s BATCH_SERVICE -r ORCL2 -a ORCL1 $ srvctl add service -d ORCL -s DBA_SERVICE -r ORCL2 -a ORCL1 Inicie os Services: $ srvctl start service -d ORCL -s OLTP_SERVICE $ srvctl start service -d ORCL -s BATCH_SERVICE $ srvctl start service -d ORCL -s DBA_SERVICE Altere o tnsnames.ora do Client para utilizar estes Services.
    • <Insert Picture Here> LAB – Load Balance (Server) Altere os Services criados de acordo com a necessidade de cada um: EXEC DBMS_SERVICE.MODIFY_SERVICE( - service_name => 'BATCH_SERVICE', - goal => DBMS_SERVICE.GOAL_THROUGHPUT, - failover_method => DBMS_SERVICE.FAILOVER_METHOD_BASIC, - failover_type => DBMS_SERVICE.FAILOVER_TYPE_SELECT, - failover_retries => 10, - failover_delay => 1, - dtp => TRUE, - clb_goal => DBMS_SERVICE.CLB_GOAL_LONG);
    • <Insert Picture Here> LAB – Load Balance (Server) Crie uma Job Class no Scheduler para o Service DBA: BEGIN DBMS_SCHEDULER.create_job_class ( job_class_name => 'DBA_JOB_CLASS', service => 'DBA_SERVICE'); END; / Crie um Job no Scheduler para utilizar o Service DBA: BEGIN DBMS_SCHEDULER.create_job ( job_name => 'sys.oltp_job_test', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN EXEC DBMS_STATS.GATHER_DATABASE_STATS; END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY;', job_class => 'SYS.DBA_JOB_CLASS', end_date => NULL, enabled => TRUE, comments => 'Job linked to the OLTP_JOB_CLASS.'); END; /
    • <Insert Picture Here> LAB V – Load Balance (Server) Hands Off !
    • <Insert Picture Here> VI – Resource Plan
    • <Insert Picture Here> Resource Plan 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 (11g)
    • <Insert Picture Here> Resource Plan
    • <Insert Picture Here> Resource Plan Pending Area EXEC DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA; EXEC DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA; EXEC DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA; EXEC DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA; Mudanças Forçadas ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'PEAKTIME'; ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'OFF-PEAK';
    • <Insert Picture Here> LAB VI – Resource Plan Hands On !
    • <Insert Picture Here> LAB – Resource Plan Analise o código do arquivo resource.sql. Altere para suprir as necessidades dos serviços que você criou. Crie 2 Resources Plans, um para horário de pico, outro para horário normal.
    • <Insert Picture Here> LAB VI – Resource Plan Hands Off !
    • <Insert Picture Here> VII – AWR
    • <Insert Picture Here> Automatic Workload Repository É possível controlar os períodos de coleta: BEGIN DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings( retention => 43200, -- Minutos (= 30 Dias). interval => 30); -- Minutos. END; / Podem ser criados novos Snapshots, ou removidos: EXEC DBMS_WORKLOAD_REPOSITORY.create_snapshot; BEGIN DBMS_WORKLOAD_REPOSITORY.drop_snapshot_range ( low_snap_id => 22, high_snap_id => 42); END; / Criação de relatórios: @$ORACLE_HOME/rdbms/admin/awrrpt.sql @$ORACLE_HOME/rdbms/admin/awrrpti.sql
    • <Insert Picture Here> LAB VII – AWR Hands On !
    • <Insert Picture Here> LAB - AWR Tire um relatório da aula toda e analise seu conteúdo: @$ORACLE_HOME/rdbms/admin/awrrpt.sql
    • <Insert Picture Here> LAB VII – AWR Hands Off !
    • <Insert Picture Here> VIII – GV$ Views
    • <Insert Picture Here> GV$ Views As Views GV$ são as Views V$ consolidadas. Waits que demonstram latência no Interconnect: - global cache busy - buffer busy global cache - buffer busy global cr Pincipais Views para Performance: - GV$SYSTEM_EVENT - GV$SESSION_EVENT - GV$SESSION_WAIT - GV$SESSION - GV$LOCK - GV$SQL - GV$SQLTEXT - GV$SQLAREA
    • <Insert Picture Here> LAB VIII – GV$ Views Hands On !
    • <Insert Picture Here> LAB – GV$ Views Verifique as Views de Waits e analise seu conteúdo: GV$SYSTEM_EVENT GV$SESSION_EVENT GV$SESSION_WAIT
    • <Insert Picture Here> LAB VIII – GV$ Views Hands Off !
    • <Insert Picture Here> IX – Benchmark
    • <Insert Picture Here> Benchmark TCP-C: OLTP TCP-H: Data Warehouse Hammerora Swingbench
    • <Insert Picture Here> LAB IX – Benchmark Hands On !
    • <Insert Picture Here> LAB - Benchmark Copie o swingbench para o RAC1, como usuário oracle. Descompacte o swingbench.zip. Configure as variáveis de ambiente e carregue: $ source /home/oracle/swingbench/swingbench.env Execute o Calling Circle: $ /home/oracle/swingbench/bin/ccwizard
    • <Insert Picture Here> LAB IX – Benchmark Hands Off !
    • <Insert Picture Here> X – Rolling Upgrades
    • <Insert Picture Here> Rolling Upgrades - Permite aplicação de Patches sem indisponibilidade. - Para-se uma Instance, aplica-se o Patch, inicia a Instance, e parte para a Instance seguinte. - O Patch precisa suportar o Rolling Upgrade. - Só é possível utilizando-se um ORACLE_HOME para cada Node. - Necessário para alteração de rede dos Nodes.
    • <Insert Picture Here> LAB X – Rolling Upgrades Hands On !
    • <Insert Picture Here> LAB – Rolling Upgrades Pare o ORCL1 e ASM1 e Listener do RAC1, usando srvctl. Aplique o CPU Patch April 2009 no RAC1: cd $ORACLE_HOME/8290506 $ORACLE_HOME/OPatch/opatch appl y Inicie o ORCL1 e ASM1 e Listener do RAC1, usando srvctl. Pare o ORCL2 e ASM2 e Listener do RAC2, usando srvctl. Aplique o CPU Patch April 2009 no RAC1: cd /home/oracle/8290506 $ORACLE_HOME/OPatch/opatch apply Inicie o ORCL2 e ASM2 e Listener do RAC2, usando srvctl. Aplique o SQL do Patch, em apenas um Node: cd $ORACLE_HOME/rdbms/admin sqlplus / AS SYSDBA SQL> @catbundle.sql cpu apply SQL> QUIT
    • <Insert Picture Here> LAB X – Rolling Upgrades Hands Off !
    • <Insert Picture Here> Extra – RAC Data Guard
    • <Insert Picture Here> RAC Data Guard Configurações: http://download.oracle.com/docs/cd/B19306_01/server.102/b25159/appconfig.htm