Re: [oracle_br] Criação automática de índices

2013-12-18 Por tôpico Roberto Warstat













Re: [oracle_br] Criação automática de índices

2013-12-18 Por tôpico Andre Santos
Pessoal

Só um comentário... a sintaxe "USING INDEX (...)", só é válida para UNIQUE
ou PRIMARY KEY, correto?
Nunca vi esse uso com FK (ou qualquer outro tipo de constraint).

Roberto, para Foreign Keys, se for desejado, o índice deve ser criado
separadamente (comando CREATE INDEX).

Eu geralmente crio, mas antes avalio se já existe algum índice que atenda:
ou seja, cujas primeiras colunas da chave do índice coincidam com a FK.
Se já existir, não é necessário criar um outro só para a FK.

[ ]'s

André Santos



Em 18 de dezembro de 2013 14:36,  escreveu:

>
>
> Bom… para não haver confusão.
>
> Segue um resumo.
>
>
> Roberto,
>
> O Oracle NÃO CRIA um índice em FK (Foreign Key) quando se cria o seu
> modelo físico no banco de dados, OK! O índice é criado AUTOMATICAMENTE
> somente quando se trata de uma PK (Primary Key) ou UK (Unique), conforme o
> Fabio Prado comentou. Esse é o padrão do Oracle 6 até 12c e ponto!
>
> Porém, a observação do Ederson também está 100% correta nos dois pontos
> que ele citou.
>
> Primeiro, geralmente se cria ÍNDICES em FK para evitar LOCKS, retirar
> CONTENÇÃO e fornecer acesso rápido aos dados quando se tem algum predicado
> na sua instrução SQL, WHERE coluna = ‘alguma coisa’;, isso é padrão SQL92,
> SQL2003, ANSI-SQL.. então.. tb disponível desde Oracle 8i… MAS, você deve
> mencionar EXPLICITAMENTE a utilização do índice em sua FK.
>
> Segundo, a criação desse índice é feito a parte em outras instruções SQL,
> não sendo implícita do banco de dados!
>
> Assim se resume melhor todas as explicações, que foram 100% corretas.
>
> E tente matar esse mito na sua empresa, pq quem falou isso, não sabe que
> está agilizando uma instrução SQL e praticamente matando o banco de dados.
>
> Abraços,
> Rodrigo Almeida
>
>
> Em 18/12/2013, à(s) 11:22, ederson200...@yahoo.com.br escreveu:
>
> Correção:
>
> No texto onde se lê:
>
> --> Criar o indice em bairro.cli_cod_bairro, pode agilizar as pesquisas em
> cima de um "where cli_cod_bairro =", mas não é obrigatório.
>
>
> O correto é:
>
> --> Criar o indice em CLIENTE.cli_cod_bairro, pode agilizar as pesquisas
> em cima de um "where cli_cod_bairro =", mas não é obrigatório.
>
> Meu multitask está falhando hj.
>
>
>  
>


Re: [oracle_br] Criação automática de índices

2013-12-18 Por tôpico Roberto Warstat
Pessoal,

Muito obrigado pelas explicações.
Eu tinha em mente que o Oracle não criava índices automaticamente, salvo no
caso de PK´s e UK´s. Mas, tinha que tirar a dúvida, até mesmo para poder
mostrar a opinião de outros para quem vem com essa conversa.

Abraços,
Roberto


Em 18 de dezembro de 2013 13:36,  escreveu:

>
>
> Bom… para não haver confusão.
>
> Segue um resumo.
>
>
> Roberto,
>
> O Oracle NÃO CRIA um índice em FK (Foreign Key) quando se cria o seu
> modelo físico no banco de dados, OK! O índice é criado AUTOMATICAMENTE
> somente quando se trata de uma PK (Primary Key) ou UK (Unique), conforme o
> Fabio Prado comentou. Esse é o padrão do Oracle 6 até 12c e ponto!
>
> Porém, a observação do Ederson também está 100% correta nos dois pontos
> que ele citou.
>
> Primeiro, geralmente se cria ÍNDICES em FK para evitar LOCKS, retirar
> CONTENÇÃO e fornecer acesso rápido aos dados quando se tem algum predicado
> na sua instrução SQL, WHERE coluna = ‘alguma coisa’;, isso é padrão SQL92,
> SQL2003, ANSI-SQL.. então.. tb disponível desde Oracle 8i… MAS, você deve
> mencionar EXPLICITAMENTE a utilização do índice em sua FK.
>
> Segundo, a criação desse índice é feito a parte em outras instruções SQL,
> não sendo implícita do banco de dados!
>
> Assim se resume melhor todas as explicações, que foram 100% corretas.
>
> E tente matar esse mito na sua empresa, pq quem falou isso, não sabe que
> está agilizando uma instrução SQL e praticamente matando o banco de dados.
>
> Abraços,
> Rodrigo Almeida
>
>
> Em 18/12/2013, à(s) 11:22, ederson200...@yahoo.com.br escreveu:
>
> Correção:
>
> No texto onde se lê:
>
> --> Criar o indice em bairro.cli_cod_bairro, pode agilizar as pesquisas em
> cima de um "where cli_cod_bairro =", mas não é obrigatório.
>
>
> O correto é:
>
> --> Criar o indice em CLIENTE.cli_cod_bairro, pode agilizar as pesquisas
> em cima de um "where cli_cod_bairro =", mas não é obrigatório.
>
> Meu multitask está falhando hj.
>
>
>  
>


Re: [oracle_br] Criação automática de índices

2013-12-18 Por tôpico dbarodrigo
Bom… para não haver confusão.

Segue um resumo.


Roberto,

O Oracle NÃO CRIA um índice em FK (Foreign Key) quando se cria o seu modelo 
físico no banco de dados, OK! O índice é criado AUTOMATICAMENTE somente quando 
se trata de uma PK (Primary Key) ou UK (Unique), conforme o Fabio Prado 
comentou. Esse é o padrão do Oracle 6 até 12c e ponto!

Porém, a observação do Ederson também está 100% correta nos dois pontos que ele 
citou.

Primeiro, geralmente se cria ÍNDICES em FK para evitar LOCKS, retirar CONTENÇÃO 
e fornecer acesso rápido aos dados quando se tem algum predicado na sua 
instrução SQL, WHERE coluna = ‘alguma coisa’;, isso é padrão SQL92, SQL2003, 
ANSI-SQL.. então.. tb disponível desde Oracle 8i… MAS, você deve mencionar 
EXPLICITAMENTE a utilização do índice em sua FK.

Segundo, a criação desse índice é feito a parte em outras instruções SQL, não 
sendo implícita do banco de dados!

Assim se resume melhor todas as explicações, que foram 100% corretas. 

E tente matar esse mito na sua empresa, pq quem falou isso, não sabe que está 
agilizando uma instrução SQL e praticamente matando o banco de dados.

Abraços,
Rodrigo Almeida


Em 18/12/2013, à(s) 11:22, ederson200...@yahoo.com.br escreveu:

> Correção:
> 
> No texto onde se lê:
> 
> --> Criar o indice em bairro.cli_cod_bairro, pode agilizar as pesquisas em 
> cima de um "where cli_cod_bairro =", mas não é obrigatório.
> 
> 
> 
> O correto é:
> 
> --> Criar o indice em CLIENTE.cli_cod_bairro, pode agilizar as pesquisas em 
> cima de um "where cli_cod_bairro =", mas não é obrigatório.
> 
> 
> Meu multitask está falhando hj.
> 
> 



Re: [oracle_br] Treinamento Oracle RAC Oficial Região nordeste.

2013-12-18 Por tôpico Rafael Mendonca
Aqui em recife não existe mais centros de treinamentos, infelizmente.
A apply é uma empresa aqui em recife muito mal vista no mercado.
Pode existir outro centro de treinamento pelo NE, o problema é encontrar 
pessoas necessárias para fechar uma turma.






Em Segunda-feira, 16 de Dezembro de 2013 11:33, Rosivaldo Ramalho 
 escreveu:
 
  
Amigo,

Tem a Sysdesign (www.sysdesign.com.br), contudo ela situa-se em Salvador.



2013/12/16 Emerson Martins 


>
>
>Não tenho boas referências desse Centro de Treinamento.Não sei mas caso alguém 
>possa se manifestar, caso tenha alguém aqui na lista..
>
>
>Att,
>
>
>Emerson Martins 
>DBA Oracle
>Oracle 11g Certified Associate
>*Contatos:*
>+ 55 82 91235504 /
>+ 55 82 81702325
>
>
>Em 16 de dezembro de 2013 09:23, Emerson Martins  
>escreveu:
>
>
>Obrigado Hebert.
>>
>>
>>Att,
>>
>>
>>Emerson Martins 
>>DBA Oracle
>>Oracle 11g Certified Associate
>>*Contatos:*
>>+ 55 82 91235504 /
>>+ 55 82 81702325
>>
>>
>>Em 16 de dezembro de 2013 08:01, herbert rodrigues da silva 
>> escreveu:
>>
>>
>> 
>>>  
>>>Bom dia!
>>>
>>>
>>>Consultando o site da Oracle,:
>>>
>>>
>>>http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=317&p_org_id=378219&lang=PTB
>>>
>>>
>>>
>>>A referencia indicada é essa:
>>>http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=547&get_params=location_code:OU-PC-APP-RECIFE
>>>
>>>
>>>
>>>Espero ter ajudado
>>>
>>>
>>>Abraço 
>>>
>>>
>>>
>>>
>>>
>>>Em 13 de dezembro de 2013 11:12, Emerson Martins  
>>>escreveu:
>>>
>>>
>>> 
  
Ola pessoal.


Estou procurando Centros de Treinamento na Região de Recife ou redondezas 
para treinamento de Oracle RAC Oficial que o pessoal possa indicar.




Att,


Emerson Martins 
DBA Oracle
Oracle 11g Certified Associate
*Contatos:*
+ 55 82 91235504 /
+ 55 82 81702325
>>>
>>
>
>
>
>


-- 
Rosivaldo Azevedo Ramalho 
Consultor Oracle Database & Fusion Middlerware

http://about.me/rosivaldo 


[oracle_br] RE: Criação automática de índices

2013-12-18 Por tôpico ederson2001br
Correção:

No texto onde se lê:
 --> Criar o indice em bairro.cli_cod_bairro, pode agilizar as pesquisas em 
cima de um "where cli_cod_bairro =", mas não é obrigatório.
 

 O correto é:
 --> Criar o indice em CLIENTE.cli_cod_bairro, pode agilizar as pesquisas em 
cima de um "where cli_cod_bairro =", mas não é obrigatório.

Meu multitask está falhando hj.

[oracle_br] RE: Criação automática de índices

2013-12-18 Por tôpico ederson2001br
Na pressa, esqueci de listar:

--> o Oracle CRIA SIM o indice, SE VC INFORMAR, como no exemplo:

alter table teste add constraint check_nome unique (nome) 
using index(create index teste_nome on teste(nome)) enable novalidate;

 Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0

Labor improbus omnia vincit



[oracle_br] RE: Criação automática de índices

2013-12-18 Por tôpico ederson2001br
Roberto,

Somente criação de contraint PK cria automaticamente um indice.

Criar uma constraint FK **NAO** cria automaticamente um índice, em nenhuma 
versão que trabalhei até hj (estou na estrada desde a versão 7.2).

Tem confusão aí na parada, porque estão envolvidas duas tabelas, ex:

Tab_A (CLIENTE)
-Existe uma PK em cli_cod_cliente (indice automático)
-Existe uma tributo CLI_COD_BAIRRO (sem indice)

Tab_B (BAIRRO)
-Existe uma PK em bai_cod_bairro (indice automático)
 

 Ao rodar:
 alter table cliente add constraint cod_bairro_cli_bairro_fk foreign key 
(CLI_COD_BAIRRO)
 references BAIRRO (bai_cod_bairro);
 

 --> isto não vai criar um indice na tabela CLIENTE. O detalhe é que vc deve 
analisar se EXISTE a necessidade de criar este indice, pois pode haver LOCK na 
tabela BAIRRO quando vc estiver realizando certas operações DML na tabela 
CLIENTE.
 --> Criar o indice em bairro.cli_cod_bairro, pode agilizar as pesquisas em 
cima de um "where cli_cod_bairro =", mas não é obrigatório.
 

 []'s
 
Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0

Labor improbus omnia vincit




Re: [oracle_br] Criação automática de índices

2013-12-18 Por tôpico Roberto Warstat
Fábio,

Muito obrigado pela resposta.

Att.,
Roberto Warstat


Em 18 de dezembro de 2013 10:00, Fabio Prado  escreveu:

>
>
> No Oracle em qq versao indices nao sao criados automaticamebte em FKs.
> Eles soh sao criados automaticamente em PKs e UKs ok?
>
> Abs
>
> Fabio Prado
> www.fabioprado.net
> Em 18/12/2013 10:49, "Roberto Warstat"  escreveu:
>
>
>>
>> Pessoal,
>>
>> A questão é a seguinte: de acordo com a crença popular na empresa, em um
>> banco Oracle 10G (no caso estamos com o 10.2.0.5), ao criarmos uma FK ele
>> automaticamente criaria um índice. E seguindo essa mesma crença, em um
>> banco 11G isso não aconteceria.Fiz o teste de criação de uma FK em um banco
>> 10.2.0.5 e um 11.2.0.3 e em ambos o resultado foi o mesmo, o índice não foi
>> criado automaticamente.
>> Tem alguma situação aonde ao criar uma FK no Oracle 10 seja criado
>> automaticamente um índice? Considerando que a criação da FK é feita a
>> partir do script abaixo
>> alter table syn_revisao_kit add constraint srk_cps_fk foreign key
>> (cps_id) references ciap_periodo_saldo (id);
>>
>> Grato,
>> Roberto Warstat
>>
>>
>


Re: [oracle_br] Criação automática de índices

2013-12-18 Por tôpico Fabio Prado
No Oracle em qq versao indices nao sao criados automaticamebte em FKs. Eles
soh sao criados automaticamente em PKs e UKs ok?

Abs

Fabio Prado
www.fabioprado.net
Em 18/12/2013 10:49, "Roberto Warstat"  escreveu:

>
>
> Pessoal,
>
> A questão é a seguinte: de acordo com a crença popular na empresa, em um
> banco Oracle 10G (no caso estamos com o 10.2.0.5), ao criarmos uma FK ele
> automaticamente criaria um índice. E seguindo essa mesma crença, em um
> banco 11G isso não aconteceria.Fiz o teste de criação de uma FK em um banco
> 10.2.0.5 e um 11.2.0.3 e em ambos o resultado foi o mesmo, o índice não foi
> criado automaticamente.
> Tem alguma situação aonde ao criar uma FK no Oracle 10 seja criado
> automaticamente um índice? Considerando que a criação da FK é feita a
> partir do script abaixo
> alter table syn_revisao_kit add constraint srk_cps_fk foreign key (cps_id)
> references ciap_periodo_saldo (id);
>
> Grato,
> Roberto Warstat
>  
>


[oracle_br] Criação automática de índices

2013-12-18 Por tôpico Roberto Warstat
Pessoal,

A questão é a seguinte: de acordo com a crença popular na empresa, em um
banco Oracle 10G (no caso estamos com o 10.2.0.5), ao criarmos uma FK ele
automaticamente criaria um índice. E seguindo essa mesma crença, em um
banco 11G isso não aconteceria.Fiz o teste de criação de uma FK em um banco
10.2.0.5 e um 11.2.0.3 e em ambos o resultado foi o mesmo, o índice não foi
criado automaticamente.
Tem alguma situação aonde ao criar uma FK no Oracle 10 seja criado
automaticamente um índice? Considerando que a criação da FK é feita a
partir do script abaixo
alter table syn_revisao_kit add constraint srk_cps_fk foreign key (cps_id)
references ciap_periodo_saldo (id);

Grato,
Roberto Warstat


RE: RES: RES: RES: RES: RES: [oracle_br] Re: Duvidas Backup RMAN

2013-12-18 Por tôpico ederson2001br
Edinilson,

O destino dos backups, vc confere e configura com SHOW ALL e se não esver 
correto, basta rodar:

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 
'/d01/backup/%F';
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/d01/backup/%U' MAXPIECESIZE 10 G;

 Neste diretório (/d01/backup), devem permanecer os arquivos ao fim do backup, 
senão eles foram removidos por outro processo.
 

 Inclusive, vc pode monitorar os arquivos sendo "escritos" durante a execução 
do rman da outra janela, abrindo outra sessão TTY ou putty e fazendo:
 

 $ cd /d01/backup
 $ watch -d ls -lt
 

 Verifica o conteúdo do arquivo gerado na linha (confira o nome q vc colocou):
 

 rman target=/ log=/home/oracle/bkp03_rman.log << EOF
 

 Qualquer coisa, coloca o conteúdo do arquivo no corpo da mensagem.
 

 []'s
 

 

 Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0 
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0

Labor improbus omnia vincit
   




RES: RES: RES: RES: RES: [oracle_br] Re: Duvidas Backup RMAN

2013-12-18 Por tôpico Ednilson Silva
Ederson,

Desculpe minha ignorancia, mas algo que não entendi muito bem, o backup estava 
sendo gerado em /d01/backup, ao final esses arquivos sumiram, procede?

Os archive log, realmente não foram deletados ao final.

 

Quero antes conseguir fazer um backup full 100%, depois irei focar nos backups 
incremental e depois restore.

 

Grato,

Ednilson Silva

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome 
de ederson200...@yahoo.com.br
Enviada em: quarta-feira, 18 de dezembro de 2013 09:29
Para: oracle_br@yahoogrupos.com.br
Assunto: RE: RES: RES: RES: RES: [oracle_br] Re: Duvidas Backup RMAN

 

  

Edinilson,

 

Os archivelogs podem ser deletados após serem gravados em um backuppiece pelo 
comando "backup archivelog all", esta é mesmo a intenção.

 

A alteração que fiz no script 2 separa o backup datafiles de archivelog, para 
que o processo que iniciar a cópia dos datafiles em paralarelo, isto é, mais de 
um datafile sendo copiado simultâneo, não concorra com o archivelog. Partindo 
da premissa que um archivelog é pequeno e será gravado mais rapidamente que um 
datafile. Separando estas cópias, acredito que minimiza o problema de já ter 
removido o arquivo em outro processo.

 

O próximo passo é implementar o backup incremental diário.

 

FASE 2: muito importante completar um RESTORE deste backup com diversos 
cenários de crash.

 

Este tópico me interessa muito, pois eu passo o dia neste cenário em minhas 
atividades diárias. Releve aí se eu fui redundante nas respostas.

 

Se precisar e eu souber, ajudo com prazer (senão, aproveito para estudar uma 
nova situação).

 

[]' s

 

Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0

Labor improbus omnia vincit

 





RE: RES: RES: RES: RES: [oracle_br] Re: Duvidas Backup RMAN

2013-12-18 Por tôpico ederson2001br
Edinilson,
 

 Os archivelogs podem ser deletados após serem gravados em um backuppiece pelo 
comando "backup archivelog all", esta é mesmo a intenção.
 

 A alteração que fiz no script 2 separa o backup datafiles de archivelog, para 
que o processo que iniciar a cópia dos datafiles em paralarelo, isto é, mais de 
um datafile sendo copiado simultâneo, não concorra com o archivelog. Partindo 
da premissa que um archivelog é pequeno e será gravado mais rapidamente que um 
datafile. Separando estas cópias, acredito que minimiza o problema de já ter 
removido o arquivo em outro processo.
 

 O próximo passo é implementar o backup incremental diário.
 

 FASE 2: muito importante completar um RESTORE deste backup com diversos 
cenários de crash.
 

 Este tópico me interessa muito, pois eu passo o dia neste cenário em minhas 
atividades diárias. Releve aí se eu fui redundante nas respostas.
 

 Se precisar e eu souber, ajudo com prazer (senão, aproveito para estudar uma 
nova situação).

 

 []' s

 

 Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0 
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0

Labor improbus omnia vincit
 

 




RES: RES: RES: RES: [oracle_br] Re: Duvidas Backup RMAN

2013-12-18 Por tôpico Ednilson Silva
Ederson,

Alterei o script conforme sua proposta, acontece que ao final os arquivos foram 
deletados.

Ficou só o log.

 

Grato,

Ednilson Silva

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome 
de ederson200...@yahoo.com.br
Enviada em: terça-feira, 17 de dezembro de 2013 14:36
Para: oracle_br@yahoogrupos.com.br
Assunto: RE: RES: RES: RES: [oracle_br] Re: Duvidas Backup RMAN

 

  

Colega Edinilson,

Esta mensagem refere-se a um arquivo que já foi processado e removido por outro 
processo. No seu caso, aconteceu porque vc ativou o parelelismo, veja 
exemplo/explicação com detalhes no blog abaixo:

http://pavandba.com/2011/01/18/resolving-ora-19588-archived-log-recid-stamp-is-no-longer-valid/

Com Paralelismo, melhor fazer o backup do archivelog separado do database ou 
baixar o nível do paralelismo para um valor onde aconteça o equilíbrio entre os 
processos ativos e o seu hardware. 

Como chegar ao número mágico? Deu erro? baixe o número do paralelismo. Está 
demorando mais para backup_ear em paralelo do que quando era =1? baixe o valor 
do paralelismo e vá ajustando.

Eu gosto mais de fazer assim: testar com paralelism=1 e marcar o tempo de full 
backup. No dia seguinte, colocar paralelism=2 e rodar novamente marcando o 
tempo. Vou parar de subir de um em um quando o backup ficar dentro da janela 
que panejei. Se o valor de paralelism já estiver alto (ex: =6), significa que 
não vai baixar muito o tempo daí prá frente, pois haverá aumento de processos e 
vai gerar uma lentidão pelos demais processos de banco/usuários, prejudicando 
ao invés de ajudar.

Portanto, se acontecer de não haver melhora com aumento de paralelismo, eu vou 
baixar o valor para um valor, digamos, metade do que está no último teste (=3 
portanto) e vou pensar em backup incremental. Um backup full no domingo e 
incremental durante a semana. Assim vc terá um bom backup no final de semana, 
sem preocupar com a janela de duração do processo e em contrapartida, durante a 
semana com o backup incremental, será apenas backup dos archivelogs e será 
muito rápido. Lembrando que caso seja criado um novo datafile durante a semana, 
ele será reportado como "need backup" e será feito a cópia deste datafile no 
primeiro backup incremental.

Fechando, também dei uma estudada sobre este erro e vou sugerir:

Mudar o script:

--Original
RUN {
  BACKUP AS COMPRESSED BACKUPSET incremental level 0 DATABASE PLUS ARCHIVELOG 
delete all input;
  delete noprompt obsolete;
}


--Proposta:
delete noprompt obsolete device type disk;
RUN {
  BACKUP AS COMPRESSED BACKUPSET incremental level 0 DATABASE;  
  crosscheck backup;  
  crosscheck archivelog all;
  backup ARCHIVELOG all;
}
delete noprompt obsolete device type disk;

Testar e homologar. Creio que estes procedimentos devem corrigir o problema.


Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0

Labor improbus omnia vincit