Re: [oracle_br] Criação automática de índices
Re: [oracle_br] Criação automática de índices
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
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
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.
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
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
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
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
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
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
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
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
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
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
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