- Este tópico contém 6 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 4 meses atrás por
vieri.
-
AutorPosts
-
9 de novembro de 2009 às 3:21 pm #90773
MauroLacerda
ParticipanteBom dia,
Com o problema dos desenvolvedores não usarem bind variables, gostaria de pedir uma ajuda para a utilização do parametro cursor_sharing=FORCE.
Apesar de ter lido varios artigos sobre o assunto, ainda restaram muitas duvidas. A uso do parametro como FORCE é bom? Se é bom porque não é default?Desde já agradeço a ajuda,
Abs.
9 de novembro de 2009 às 4:07 pm #90775juliano_sf
ParticipanteOlá,
Geralmente qiuando você trabalha só com campos simples (varchar2, number, date, etc), o cursor_sharing=force funciona legal. Porém, já tive problemas com uma aplicação Delphi que usava campos MEMO, aí dava pau.
Lembre-se que setando CURSOR_SHARING=force vai fazer com que todos os SQLs parecidos tenham o mesmo plano de execução, o que em certos casos pode não ser bom.
O melhor de setar CURSOR_SHARING=force é que ele agrupa os SQLs parecidos no statspack, aí você saberá exatamente qual SQL atacar em uma rodada de tuning.
CURSOR_SHARING=force, obviamente, também reduz o trabalho no parse, já que ele reusa os SQLs, porém, nunca observei ganhos com isso na prática, apesar da documentação dizer que esta fase de parse (hard parse) é muito custosa.
Espero que ajude
9 de novembro de 2009 às 4:11 pm #90776hudsona
ParticipanteO Ideal é que se use as variavéis bind, não tem para onde fugir. Porém o parametro CURSOR_SHARING=force traz sim um ganho de performance,
Definir CURSOR_SHARING = force reduz a disputa sobre o cache de biblioteca e consumo reduzido de CPU.
Você mesmo pode efetuar testes e tirar a sua conclusão.9 de novembro de 2009 às 4:20 pm #90779MauroLacerda
ParticipantePrezados,
Infelizmente a briga entre DBA e Desenvolvedor para o assunto BIND é grande. Mais ainda se os sistemas forem de terceiros.
De qualquer forma agradeço a ajuda de todos.9 de novembro de 2009 às 4:29 pm #90780hudsona
ParticipanteConcordo Plenamente, essa é uma briga que pelo menos eu, vi poucos DBAs ganharem . E quando o software é de terceiros é uma das situações mais indicadas para o uso do CURSOR_SHARING=force , porque ai não podemos alterar o código da aplicação.
9 de novembro de 2009 às 4:52 pm #90781lilian
ParticipantePessoal
Só para compartilhar experiências: Eu utilizei em um projeto anterior cursor_sharing = force e =similar, em uma aplicação com gigantescos problemas de bind …. e não obtive muito sucesso, tive um lentidão absurda e alguns erros na aplicação (Oracle 10G em RAC)
Por isso, creio que seja interessante o teste. O desempenho pode variar de ambiente para ambiente.
Até mais,
9 de novembro de 2009 às 5:52 pm #90784vieri
Participantemonitore o uso da shared_pool e wait’s event’s “concurrency” antes e depois da alteração do parâmetro.
A alteração desse parâmetro só surtira o efeito desejavel
se vc realmente tiver problemas com Falta de Bind’s , pois vc pode ter falta de Bind’s mas isso não te gerar problemas varia muito de ambiente para ambiente !! -
AutorPosts
- Você deve fazer login para responder a este tópico.