Senhores, boa tarde!
Ontem migrei um ambiente e hoje uma das aplicações apresentou alguns
problemas, segue descrições:
# Ambiente Antigo:
RHEL 4.7 64bit
Oracle SE 9.2.0.8 64bit
BDE 5.01
# Novo ambiente:
RHEL 5.5 64bit
Oracle SE 11.2.0.2.3
BDE 5.01
Não houve nenhuma alteração na camada da aplicação, apenas na camada de BD.
Inicialmente ao abrir um determinado módulo da APP o seguinte erro era
encontrado:
QueryRejeitada: Type mismatch for field 'WORKFLOWEMAILSEQ', expecting:
Integer actual: Float.
Observei que, se eu alterasse os parâmetros optimizer_features_enable
(11.2.0.2 --> 9.2.0.8) e optimizer_index_cost_adj (30 --> 100) o problema
era resolvido, sendo assim criei uma trigger de logon que altera estes
parâmetros somente na sessão deste módulo.
Mas, depois notei que uma das queries executada por este módulo não retorna
valor algum na APP já no SQLPLus o valor é retornado normalmente, segue SQL:
SELECT "WORKFLOWEMAILSEQ", "WORKFLOWEMAILSTAT", "WORKFLOWEMAILASSUNTO",
"WORKFLOWEMAILDATA", "WORKFLOWEMAILPARANOME", "WORKFLOWEMAILPARAEMAIL",
"WORKFLOWEMAILDENOME", "WORKFLOWEMAILDEEMAIL", "WORKFLOWEMAILCOPIAPARA",
"WORKFLOWEMAILFORMATO", "WORKFLOWEMAILPRIORIDADE", "WORKFLOWEMAILCORPO",
"WORKFLOWEMAILDOCEMPCOD", "WORKFLOWEMAILDOCESPEC",
"WORKFLOWEMAILDOCSERIE",
"WORKFLOWEMAILDOCNUM", "WORKFLOWEMAILOBS", "WORKFLOWEMAILARQUIVOHTML",
"WORKFLOWEMAILARQUIVOSANEXOS"
FROM
WORKFLOW_EMAIL WHERE (("WORKFLOWEMAILSTAT") >= ('Enviar')) AND
(("WORKFLOWEMAILSTAT") <= ('Enviar')) ORDER BY "WORKFLOWEMAILSTAT"
Apenas para entendimento, esta APP verifica a tabela WORKFLOW_EMAIL, e caso
tenha dados com status "enviar", a mesma dispara email, esta APP roda como
um serviço Windows.
Esta APP tem apenas duas telas, uma que mostra os emails a serem enviados,
resultado da querie acima e outra que mostra os email rejeitados, resultados
da querie abaixo:
SELECT "WORKFLOWEMAILSEQ", "WORKFLOWEMAILSTAT", "WORKFLOWEMAILASSUNTO",
"WORKFLOWEMAILDATA",
"WORKFLOWEMAILPARANOME", "WORKFLOWEMAILPARAEMAIL", "WORKFLOWEMAILDENOME",
"WORKFLOWEMAILDEEMAIL",
"WORKFLOWEMAILCOPIAPARA", "WORKFLOWEMAILFORMATO", "WORKFLOWEMAILPRIORIDADE",
"WORKFLOWEMAILCORPO", "WORKFLOWEMAILDOCEMPCOD", "WORKFLOWEMAILDOCESPEC",
"WORKFLOWEMAILDOCSERIE", "WORKFLOWEMAILDOCNUM",
"WORKFLOWEMAILOBS", "WORKFLOWEMAILARQUIVOHTML",
"WORKFLOWEMAILARQUIVOSANEXOS"
FROM WORKFLOW_EMAIL
WHERE ("WORKFLOWEMAILSTAT") = ('Rejeitada')
ORDER BY "WORKFLOWEMAILSEQ" DESC
A querie 2 funciona normalmente, já a 1 acima não retorna resultado algum
(somente na APP, no SQLPLUS funciona normalmente), notei que a diferença
entre as duas é a cláusula where, onde na segunda queire é utilizado o
operador "=" e na querie 1 são utilizados os operadores de "<", ">" e "=",
já solicitei ao desenvolvedor para alterar a mesma para testes, porem não
sei se a alteração será feita.
Gostaria de saber se alguém já passou por esta situação ou tem idéia de algo
que possa ser feito.
No aguardo.
--
R.P.
DBA Oracle
Oracle Database 11g Administrator Certified Professional
Oracle Database 10g Real Applications Clusters AdministratorCertified Expert
Oracle Enterprise Linux Certified Implementation Specialist
Oracle Database 11g Administrator Certified Associate
[As partes desta mensagem que não continham texto foram removidas]