<Insert Picture Here>
Cursos Hands On
2
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...
3
<Insert Picture Here>
Cursos Nerv
4
Cursos NervOracle 11g Backup & Recovery (3 Sábados)
RMAN 11gR2 - ConfiguraçãoRMAN 11gR2- BackupRMAN 11gR2 - RecoveryRMAN 11gR2 - Avançado
Oracle Performance Diagnostics & Tuning (3 Sábados)Oracle Event InterfaceOLTP Performance TuningDW 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çãoSwitch Over / Switch Back / Failover
5
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.
6
<Insert Picture Here>
Instrutor
7
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.
8
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
9
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.
10
Minha abordagem
Alunos
11
Alunos
• Se apresente.
• Trabalha, estuda?
• Comente sua experiência com Oracle.
• Diga algo interessante sobre você.
12
<Insert Picture Here>
I – Single Instance x RAC
13
<Insert Picture Here>
14
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 !
15
<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.
16
<Insert Picture Here>
LAB I – Sequences
Hands Off !
17
<Insert Picture Here>
II – ASM
18
<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.
19
<Insert Picture Here>
LAB II – ASM
Hands On !
20
<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_DISKV$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 -pASMCMD [+] > help
21
<Insert Picture Here>
LAB II – ASM
Hands Off !
22
<Insert Picture Here>
III – Parallel SQL
23
<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
24
<Insert Picture Here>
LAB III – Parallel SQL
Hands On !
25
<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;
26
<Insert Picture Here>
LAB III – Parallel SQL
Hands Off !
27
<Insert Picture Here>
IV – Load Balance (Client)
28
<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 ) ) )
29
<Insert Picture Here>
LAB IV – Load Balance (Client)
Hands On !
30
<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.
31
<Insert Picture Here>
LAB IV – Load Balance (Client)
Hands Off !
32
<Insert Picture Here>
V – Load Balance (Server)
33
<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='*';
34
<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
35
<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);
36
<Insert Picture Here>
LAB V – Load Balance (Server)
Hands On !
37
<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.
38
<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);
39
<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;/
40
<Insert Picture Here>
LAB V – Load Balance (Server)
Hands Off !
41
<Insert Picture Here>
VI – Resource Plan
42
<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)
43
<Insert Picture Here>
Resource Plan
44
<Insert Picture Here>
Resource Plan
Pending AreaEXEC 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çadasALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'PEAKTIME';ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'OFF-PEAK';
45
<Insert Picture Here>
LAB VI – Resource Plan
Hands On !
46
<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.
47
<Insert Picture Here>
LAB VI – Resource Plan
Hands Off !
48
<Insert Picture Here>
VII – AWR
49
<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
50
<Insert Picture Here>
LAB VII – AWR
Hands On !
51
<Insert Picture Here>
LAB - AWR
Tire um relatório da aula toda e analise seu conteúdo:
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
52
<Insert Picture Here>
LAB VII – AWR
Hands Off !
53
<Insert Picture Here>
VIII – GV$ Views
54
<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
55
<Insert Picture Here>
LAB VIII – GV$ Views
Hands On !
56
<Insert Picture Here>
LAB – GV$ Views
Verifique as Views de Waits e analise seu conteúdo:
GV$SYSTEM_EVENTGV$SESSION_EVENTGV$SESSION_WAIT
57
<Insert Picture Here>
LAB VIII – GV$ Views
Hands Off !
58
<Insert Picture Here>
IX – Benchmark
59
<Insert Picture Here>
Benchmark
TCP-C: OLTP TCP-H: Data Warehouse
Hammerora
Swingbench
60
<Insert Picture Here>
LAB IX – Benchmark
Hands On !
61
<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
62
<Insert Picture Here>
LAB IX – Benchmark
Hands Off !
63
<Insert Picture Here>
X – Rolling Upgrades
64
<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.
65
<Insert Picture Here>
LAB X – Rolling Upgrades
Hands On !
66
<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 apply
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/adminsqlplus / AS SYSDBASQL> @catbundle.sql cpu applySQL> QUIT
67
<Insert Picture Here>
LAB X – Rolling Upgrades
Hands Off !
68
<Insert Picture Here>
Extra – RAC Data Guard
69
<Insert Picture Here>
RAC Data Guard
Configurações:http://download.oracle.com/docs/cd/B19306_01/server.102/b25159/appconfig.htm
70
Top Related