首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PDO的ORA-03113

使用PDO的ORA-03113
EN

Stack Overflow用户
提问于 2018-01-06 03:01:57
回答 1查看 159关注 0票数 0

我有一个用PHP制作的内部内部网,我们这里有Oracle服务器,但它已经移到了云服务器上。从那以后我就有了一个问题。

如果我在PHP中执行一个简单的查询,比如"select * from empresas“,它会正常执行,但如果我使用一些连接和where子句执行一个更复杂的查询,它会给出错误ORA-03113。尝试从PL/SQL Developer执行此特定查询大约需要5秒,它只返回大约15行。

我没有访问Oracle日志的权限,因为这个云对我们来说只是一个实例。

我认为这可能是一个PDO配置或版本,我需要配置/检查来解决这个问题,只是不知道如何开始。

旧的Oracle服务器是Windows服务器,Oracle版本是12。云是Oracle 11,是Linux服务器。

下面是查询:

代码语言:javascript
复制
`SELECT distinct
  ct.descricao MARCA, 
  e.nome EMPRESA, 
  vi.cod_item CODIGO, 
  i.descricao DESCRICAO, 
  igi.cod_grupo_interno CODTIPO, 
  igi.descricao TIPO, 
  ic.cod_curva CLASSEABC,
  v.cod_cliente COD_CLIENTE, 
  cd.nome NOME_CLIENTE,
  ci.descricao CID_CLIENTE, 
  ci.uf UF_CLIENTE,
  CASE WHEN cd.cpf<>' ' THEN 'F' ELSE 'J' END TIPO_CLIENTE,
  cl.descricao DESCTP_CLIENTE,
  SUM(vi.qtde) QTDE, 
  vi.preco_unitario PPUBLICO, 
  SUM(vi.qtde * vi.preco_unitario) FAT_BRT, 
  SUM(vi.TOTAL_DESCONTOS) DESCONTO, 
  SUM(vi.preco_liquido_final) FAT_LIQ, 
  SUM(vi.qtde * vi.preco_contabil) CUSTO, 
  SUM(vi.base_icms) BASE_ICMS, 
  SUM(vi.valor_icms) VLR_ICMS, 
  '0' VLR_COP,
  '0' ACRESCIMO, 
  SUM(vi.valor_pis + vi.valor_cofins) VLR_PCOF,
  SUM(vi.valor_ipi) VLR_IPI, 
  NULL VLR_MARGEM,
  v.controle|| '-' || v.serie NF, 
  TO_CHAR(v.emissao, 'DD/MM/YYYY') DTNF, 
  n.cod_natureza CODNATUREZA, 
  n.descricao NATUREZA, 
  eu.id_funcionario VENDEDOR, 
  eu.nome_completo FUNCIONARIO, 
  eu.nome LOGIN, 
  eu.cod_funcao TIPO_FUN, 
  'N' STATUS,
  v.numero_os OS,
  v.chassi_resumido VEICULO,
  cd.bairro BAIRRO_CLIENTE, 
  v.controle|| '-' || v.serie NOTA,
  pg.descricao CONDICAO_PG, 
  pg.cod_forma_pgto COD_CONDICAO, 
  os.tipo CD_TP_OS, 
  ost.descricao DS_TP_OS,
  '0' PERCUSTOOPER,
  ed.cod_empresa_departamento DEPARTAMENTO, 
  ic.custo_fornecedor VLRREPOSICAO
FROM vendas v
INNER JOIN venda_itens vi ON vi.cod_empresa = v.cod_empresa and vi.controle = v.controle
INNER JOIN itens_custos ic ON ic.cod_empresa = v.cod_empresa AND ic.cod_item = vi.cod_item AND ic.cod_fornecedor = vi.cod_fornecedor
INNER JOIN itens_fornecedor if ON if.cod_item = vi.cod_item AND if.cod_fornecedor = vi.cod_fornecedor
INNER JOIN fornecedor_estoque fe ON fe.cod_fornecedor = if.cod_fornecedor
INNER JOIN itens i ON i.cod_item = vi.cod_item
INNER JOIN itens_grupo_interno igi ON igi.cod_grupo_interno = i.cod_grupo_interno
INNER JOIN empresas e ON e.cod_empresa = v.cod_empresa
INNER JOIN empresas_usuarios eu ON eu.nome = v.vendedor
INNER JOIN empresas_funcoes ef ON ef.cod_funcao = eu.cod_funcao
INNER JOIN empresas_departamentos ed ON ed.cod_empresa = v.cod_empresa AND ed.cod_empresa_departamento = v.cod_empresa_departamento
INNER JOIN parm_sys p ON p.cod_empresa = v.cod_empresa
INNER JOIN concessionaria_tipo ct ON ct.cod_tipo_concessionaria = p.tipo_concessionaria 
INNER JOIN cliente_diverso cd ON cd.cod_cliente = v.cod_cliente AND cd.cod_empresa = v.cod_empresa
INNER JOIN clientes_tipo cl ON cl.cod_tipo = cd.cod_tipo
INNER JOIN cidades ci ON ci.cod_cidades = cd.cod_cidades
LEFT JOIN pagamento_venda pv ON pv.controle = v.controle AND pv.serie = v.serie
LEFT JOIN forma_pgto pg ON pg.cod_forma_pgto = pv.cod_forma_pgto
LEFT JOIN os ON os.cod_empresa = v.cod_empresa and os.numero_os = v.numero_os
LEFT JOIN os_tipos ost ON ost.tipo = os.tipo
LEFT JOIN natureza n ON n.cod_natureza = vi.cod_natureza and n.grupo = vi.grupo 
LEFT JOIN operacoes ops ON ops.cod_empresa = v.cod_empresa and ops.cod_operacao = v.cod_operacao
WHERE v.status <> '1' AND v.total_produtos > 0
AND (ops.grupo is null or ops.grupo = 2)
AND v.emissao >= to_date(SYSDATE-20)
AND i.COD_GRUPO_INTERNO <> 13
GROUP BY ct.descricao, e.nome, vi.cod_item, i.descricao, igi.cod_grupo_interno, igi.descricao, ic.cod_curva, v.cod_cliente, 
cd.nome, ci.descricao, ci.uf, CASE WHEN cd.cpf<>' ' THEN 'F' ELSE 'J' END, cl.descricao, vi.preco_unitario, vi.preco_contabil, 
v.margem, v.controle|| '-' || v.serie, TO_CHAR(v.emissao, 'DD/MM/YYYY'), n.cod_natureza, n.descricao, eu.id_funcionario, 
eu.nome_completo, eu.nome, eu.cod_funcao, v.numero_os,  v.chassi_resumido, cd.bairro, v.controle|| '-' || v.serie, 
pg.descricao,pg.cod_forma_pgto, os.tipo, ost.descricao, ed.cod_empresa_departamento, ic.custo_fornecedor`
EN

回答 1

Stack Overflow用户

发布于 2018-01-10 20:46:28

我向管理员索要Oracle日志,结果一无所获,管理员看到我的查询甚至到达了那里,然后我尝试了很多方法,最终我的老板找到了答案。他发现问题出在PHP通过我们与云之间的VPN连接发送的包的大小。因此,解决方案(至少现在)是添加到PDO连接我们需要的大小使用:"(DESCRIPTION=(SDU=1400) ...“在连接字符串上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48119742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档