quarta-feira, 29 de setembro de 2010

Relatórios XML Publisher com Alto Volume de Dados

Oi Pessoal,

Como todos sabem, o XML/BI Publisher é a ferramenta padrão para criação de relatórios no EBS R12. No entanto, relatórios com grande volume de dados frequentemente falham quando executados em XML Publisher, com erros como OutOfMemoryError ou erros de lentidão excessiva. Para contornar essa situação, o XML Publisher tem um modo de trabalho chamado escalável (Scalable Mode) que pode ser ativado com configurações simples. O passo a passo:

1. Ligar a opção Scalable Mode para o relatório em questão:
1. System Administrator: Concurrent->Program->Define
2. Consultar o Concurrent do Relatório XML Publisher que desejar ativar
3. Adicionar um parâmetro com o nome ScalableFlag:
? Value Set: yes_no
? Default Value: Yes
? Selecionar checkboxes Enable e Required
? NÃO SELECIONAR checkbox Displayed, para impedir o desligamento em runtime.
? Token precisa ser ScalableFlag (Case Sensitive).

2. Configurar o Administrador do XML Publisher
1. XML Publisher Administrator: Administration -> Configuration
2. General -> Temporary Directory: Setar para o valor da variavel de ambiente $APPLPTMP
3. FO Processing -> Use XML Publisher XSLT PRocessor = True
4. FO Processing -> Enable Scalable Feature of XSLT PRocessor = FALSE
5. FO Processing -> Enable XSLT Runtime Optimizations = True

3. Configurar o Output Post Processor (OPP)
1. Logado como APPS, executar (trocar o -mx2048m pela memoria maxima desejada):
update FND_CP_SERVICES set DEVELOPER_PARAMETERS =
'J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx2048m'
where SERVICE_ID = (select MANAGER_TYPE from FND_CONCURRENT_QUEUES
where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');
2. Fazer o Bounce do Concurrent Manager

Para melhorar ainda mais a performance, aplicar o patch 7687414 que corrige alguns problemas de ordenação no XDK (XML Developer Kit) usado pelo XMLP para ordenar os registros.

Abraços!!

quarta-feira, 7 de abril de 2010

Recuperando erro inesperado no Oracle Data Integrator (ODI)

Depois de muito tempo sem postar, estamos aqui novamente, o motivo foi excesso de trabalho (rsrsrsrsrs)

Hoje o Post é de bastante utilidade no desenvolvimento de Integrações, tanto simples quanto complexa.

No desenvolvimento padrão de um ODI, utilizamos vários procedimentos, variáveis e interfaces, porém na execução dos mesmos, poderão ocorrer erros que não estavam previstos e assim fica bastante complicado localizar ou mesmo saber qual foi a origem do erro.
Nesse caso o indicadio criar um procedimento genérico que todos os procedimentos, interfaces ou variáveis apontem o "KO" para ele, assim todo o erro não previsto vai redirecionar para ele com o seguinte código abaixo, você conseguirá exibi-lo:

%=odiRef.getPrevStepLog("MESSAGE")%

Esse comando pode ser utilizado da maneira que você achar mais fácil e que atenda sua necessidade.

Até a próxima...