Dúvida com Delphi + Unidac (ORA-01000: máximo de cursores abertos excedido)
06/05/2019
0
Bom dia,
Estou tendo um problema com ORA-01000 utilizando os componentes do UniDac.
Tenho uma ferramenta que aplica atualizações de estrutura no banco de dados Oracle, ou seja, a ferramenta pode executar comandos de INSERT/UPDATE/DELETE e CREATE/ALTER/DROP em uma única atualização.
Em alguns casos está ocorrendo o erro "ORA-01000: máximo de cursores abertos excedido" durante a atualização, geralmente para resolver é alterado a configuração do banco aumentando a quantidade de cursores.
Existe alguma maneira de gerenciar isso via código, abrindo e encerrando os cursores para não chegar no limite?
Eu utilizo o TUniQuery da seguinte maneira:
Estou tendo um problema com ORA-01000 utilizando os componentes do UniDac.
Tenho uma ferramenta que aplica atualizações de estrutura no banco de dados Oracle, ou seja, a ferramenta pode executar comandos de INSERT/UPDATE/DELETE e CREATE/ALTER/DROP em uma única atualização.
Em alguns casos está ocorrendo o erro "ORA-01000: máximo de cursores abertos excedido" durante a atualização, geralmente para resolver é alterado a configuração do banco aumentando a quantidade de cursores.
Existe alguma maneira de gerenciar isso via código, abrindo e encerrando os cursores para não chegar no limite?
Eu utilizo o TUniQuery da seguinte maneira:
var vQuery: TUniQuery; begin vQuery: TUniQuery.Create(Self); try vQuery.Connection := MinhaConexao; vQuery.SQL.Text := 'Meu comando SQL'; vQuery.Open; //ou .Execute; finally vQuery.Close; FreeAndNil(vQuery); end; end;
André Wurges
Curtir tópico
+ 0
Responder
Posts
13/08/2019
Anderson Gonçalves
Bom dia,
Estou tendo um problema com ORA-01000 utilizando os componentes do UniDac.
Tenho uma ferramenta que aplica atualizações de estrutura no banco de dados Oracle, ou seja, a ferramenta pode executar comandos de INSERT/UPDATE/DELETE e CREATE/ALTER/DROP em uma única atualização.
Em alguns casos está ocorrendo o erro "ORA-01000: máximo de cursores abertos excedido" durante a atualização, geralmente para resolver é alterado a configuração do banco aumentando a quantidade de cursores.
Existe alguma maneira de gerenciar isso via código, abrindo e encerrando os cursores para não chegar no limite?
Eu utilizo o TUniQuery da seguinte maneira:
Estou tendo um problema com ORA-01000 utilizando os componentes do UniDac.
Tenho uma ferramenta que aplica atualizações de estrutura no banco de dados Oracle, ou seja, a ferramenta pode executar comandos de INSERT/UPDATE/DELETE e CREATE/ALTER/DROP em uma única atualização.
Em alguns casos está ocorrendo o erro "ORA-01000: máximo de cursores abertos excedido" durante a atualização, geralmente para resolver é alterado a configuração do banco aumentando a quantidade de cursores.
Existe alguma maneira de gerenciar isso via código, abrindo e encerrando os cursores para não chegar no limite?
Eu utilizo o TUniQuery da seguinte maneira:
var vQuery: TUniQuery; begin vQuery: TUniQuery.Create(Self); try vQuery.Connection := MinhaConexao; vQuery.SQL.Text := 'Meu comando SQL'; vQuery.Open; //ou .Execute; finally vQuery.Close; FreeAndNil(vQuery); end; end;
Bom pela lógica você está criando uma Query ali em cima mas não está destuindo ela no final você está somente liberando da memória, ai você cria outra, outra, outra e etc...
Outra coisa... quando for passar a instrução sql fecha a query e limpa a propriedade sql antes.
vQuery.Close;
vQuery.SQL.Clear;
Assim é mais garantido que você vai fazer o procedimento com ela fechada de certeza, dentro do finally pode ocorrer algum desvio no código e não passar por lá, eu gosto de usar muito é o except para verificar erros e evitar mensagens em inglês ao usuário se ocorrer esses erros.
Espero ter ajudado.
Responder
Clique aqui para fazer login e interagir na Comunidade :)