Oracle 10gR2 RAC: Performance Tuning

2,821
-1

Published on

Oracle 10gR2 RAC: Performance Tuning

Published in: Technology, News & Politics
1 Comment
4 Likes
Statistics
Notes
  • could make it this ppt in English so that i can easy understand
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
2,821
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
328
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Oracle 10gR2 RAC: Performance Tuning

  1. 1. Oracle 10gR2 RAC: Performance Tuning Ricardo Portilho Proni [email_address]
  2. 2. <Insert Picture Here> Cursos Hands On
  3. 3. Aprendizado <ul><li>Visão: 5% </li></ul><ul><li>Audição: 8% </li></ul><ul><li>Visão e Audição: 12% </li></ul><ul><li>Execução: 22% </li></ul><ul><li>Execução com erro: 42% </li></ul><ul><li>E 50% é perdido em 2 anos... </li></ul>
  4. 4. <Insert Picture Here> Cursos Nerv
  5. 5. 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
  6. 6. Diferenciais <ul><li>Cursos únicos no mercado. </li></ul><ul><li>Material impresso e digital. </li></ul><ul><li>Contrato e Nota fiscal. </li></ul><ul><li>Facilidade no pagamento. </li></ul><ul><li>Estacionamento grátis. </li></ul><ul><li>Análise no ambiente do Cliente (Treinamento In Company). </li></ul><ul><li>Carta de recomendação do Instrutor. </li></ul>Oracle Data Guard
  7. 7. <Insert Picture Here> Instrutor
  8. 8. Instrutor <ul><li>Com cerca de 20 anos de experiência profissional, já trabalhou em grande parte dos maiores bancos de dados Oracle do Brasil. </li></ul><ul><li>É 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. </li></ul><ul><li>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. </li></ul>
  9. 9. Instrutor <ul><li>Certificações </li></ul><ul><li>Oracle ACE </li></ul><ul><li>Oracle Database 10g Administrator Certified Associate </li></ul><ul><li>Oracle Database 10g Administrator Certified Professional </li></ul><ul><li>Oracle Database 10g: RAC Administrator Certified Expert </li></ul><ul><li>Oracle Database 10g: Managing Oracle on Linux Certified Expert </li></ul><ul><li>Microsoft Certified Professional </li></ul><ul><li>Microsoft Certified Database Administrator </li></ul><ul><li>Microsoft Certified Technology Specialist: SQL Server 2005 </li></ul><ul><li>Microsoft Certified IT Professional: Database Administrator </li></ul><ul><li>Certified MySQL Database Administrator </li></ul><ul><li>IBM Certified Database Associate </li></ul><ul><li>IBM Certified Database Administrator </li></ul><ul><li>Sybase Adaptive Server Administrator Associate </li></ul>
  10. 10. <ul><li>Pense em Recovery, e não em Backup. </li></ul><ul><li>A maior responsabilidade de um DBA é o Recovery. </li></ul><ul><li>Os Bancos de Dados estão cada vez maiores, e o Recovery, mais difícil. </li></ul><ul><li>Cerca de 80% dos grandes Bancos de Dados não são recuperáveis. </li></ul><ul><li>Backup e Recovery é com RMAN. </li></ul><ul><li>O RMAN é grátis: se você comprou o Oracle, ele já é seu. </li></ul><ul><li>O RMAN não precisa ser instalado. </li></ul><ul><li>Se o Banco de Dados é importante, deve estar em ARCHIVELOG. </li></ul><ul><li>Se o Banco de Dados não é importante, para que colocar dados nele? </li></ul><ul><li>Não há motivo que justifique Backup Offline (“Backup Frio”). </li></ul><ul><li>Recovery é uma situação estressante. </li></ul><ul><li>Durante uma situação estressante, tendemos a utilizar as opções que conhecemos melhor. </li></ul><ul><li>Recovery deve ser praticado, treinado, dominado. </li></ul><ul><li>Você terá que fazer um Recovery. A questão não é SE, é QUANDO. </li></ul><ul><li>Saiba o tempo necessário para um Recovery – irão lhe perguntar. </li></ul><ul><li>Durante o Recovery, se puder, tenha uma segunda pessoa olhando o que você está fazendo. </li></ul><ul><li>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. </li></ul>Minha abordagem
  11. 11. Alunos
  12. 12. Alunos <ul><li>Se apresente. </li></ul><ul><li>Trabalha, estuda? </li></ul><ul><li>Comente sua experiência com Oracle. </li></ul><ul><li>Diga algo interessante sobre você. </li></ul>
  13. 13. <Insert Picture Here> I – Single Instance x RAC
  14. 14. <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
  15. 15. <Insert Picture Here> LAB I – Sequences Hands On !
  16. 16. <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.
  17. 17. <Insert Picture Here> LAB I – Sequences Hands Off !
  18. 18. <Insert Picture Here> II – ASM
  19. 19. <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.
  20. 20. <Insert Picture Here> LAB II – ASM Hands On !
  21. 21. <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
  22. 22. <Insert Picture Here> LAB II – ASM Hands Off !
  23. 23. <Insert Picture Here> III – Parallel SQL
  24. 24. <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
  25. 25. <Insert Picture Here> LAB III – Parallel SQL Hands On !
  26. 26. <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;
  27. 27. <Insert Picture Here> LAB III – Parallel SQL Hands Off !
  28. 28. <Insert Picture Here> IV – Load Balance (Client)
  29. 29. <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 ) ) )
  30. 30. <Insert Picture Here> LAB IV – Load Balance (Client) Hands On !
  31. 31. <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.
  32. 32. <Insert Picture Here> LAB IV – Load Balance (Client) Hands Off !
  33. 33. <Insert Picture Here> V – Load Balance (Server)
  34. 34. <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='*';
  35. 35. <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
  36. 36. <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);
  37. 37. <Insert Picture Here> LAB V – Load Balance (Server) Hands On !
  38. 38. <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.
  39. 39. <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);
  40. 40. <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; /
  41. 41. <Insert Picture Here> LAB V – Load Balance (Server) Hands Off !
  42. 42. <Insert Picture Here> VI – Resource Plan
  43. 43. <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)
  44. 44. <Insert Picture Here> Resource Plan
  45. 45. <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';
  46. 46. <Insert Picture Here> LAB VI – Resource Plan Hands On !
  47. 47. <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.
  48. 48. <Insert Picture Here> LAB VI – Resource Plan Hands Off !
  49. 49. <Insert Picture Here> VII – AWR
  50. 50. <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
  51. 51. <Insert Picture Here> LAB VII – AWR Hands On !
  52. 52. <Insert Picture Here> LAB - AWR Tire um relatório da aula toda e analise seu conteúdo: @$ORACLE_HOME/rdbms/admin/awrrpt.sql
  53. 53. <Insert Picture Here> LAB VII – AWR Hands Off !
  54. 54. <Insert Picture Here> VIII – GV$ Views
  55. 55. <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
  56. 56. <Insert Picture Here> LAB VIII – GV$ Views Hands On !
  57. 57. <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
  58. 58. <Insert Picture Here> LAB VIII – GV$ Views Hands Off !
  59. 59. <Insert Picture Here> IX – Benchmark
  60. 60. <Insert Picture Here> Benchmark TCP-C: OLTP TCP-H: Data Warehouse Hammerora Swingbench
  61. 61. <Insert Picture Here> LAB IX – Benchmark Hands On !
  62. 62. <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
  63. 63. <Insert Picture Here> LAB IX – Benchmark Hands Off !
  64. 64. <Insert Picture Here> X – Rolling Upgrades
  65. 65. <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.
  66. 66. <Insert Picture Here> LAB X – Rolling Upgrades Hands On !
  67. 67. <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
  68. 68. <Insert Picture Here> LAB X – Rolling Upgrades Hands Off !
  69. 69. <Insert Picture Here> Extra – RAC Data Guard
  70. 70. <Insert Picture Here> RAC Data Guard Configurações: http://download.oracle.com/docs/cd/B19306_01/server.102/b25159/appconfig.htm
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×