linux – oracle查询 – ORA-01652:无法扩展临时段但只能在某些
这个让我很困惑.我编写了一个从我的开发客户端运行良好的查询但在生产客户端上失败并出现错误“ORA-01652:无法扩展临时段……”.在这两种情况下,数据库和用户都是相同的.在我的开发机器(MS
Windows)上,我有SQL * PLUS(版本9.0.1.4.0)和Toad 9.0(都使用了oci.dll的9.0.4.0.1版本).两者都运行代码没有错误.
但是,当我在同一个数据库上运行相同的文件时,使用来自不同机器的相同用户名/密码,这次版本10.2.0.4.0(来自10.2.0.4-1 Oracle即时客户端)我收到错误. 它确实可重复发生. 不幸的是,我只能访问数据库上的字典视图,这些视图设置为只读(甚至无法获得解释计划!). 我试过通过调整查询来解决这个问题(我怀疑有一个大的中间结果集随后被修剪掉了)但是没有设法改变任何一个客户端的行为. 有可能在计算机上部署不同版本的客户端导致问题 – 但目前看起来像是降级到以前的版本. 有任何想法吗? TIA 更新 根据Gary的回答,我看了一下glogin.sql脚本 – 唯一的区别是’SET SQLPLUSCOMPATIBILITY 8.1.7’在工作客户端上存在但在失败的客户端上没有 – 但添加它并没有解决问题. 我也试过了 alter session set workarea_size_policy=manual; alter session set hash_area_size=1048576000; 和 alter session set sort_area_size=1048576000; 无济于事:( 更新2 我设法找到了相同的行为,这次是与Oracle 8i后端交谈.在这种情况下,数据库是RW.这让我可以确认,正如我所怀疑的那样,不同的客户会产生不同的计划.但为什么???? 看看’SHOW PARAMETERS’的输出,两个客户都报告了完全相同的设置! 解决方法
几年前,我在一个完全READONLY的DR数据库上工作,甚至TEMP表空间都不可写.任何试图溢出到temp的查询都会失败(即使要使用的临时空间非常简单).
如果这是相同的情况,如果有一个login.sql(或glogin.sql或登录触发器)执行ALTER SESSION为会话设置更大的PGA内存值,和/或更改,我不会感到惊讶优化器目标为FIRST_ROWS. 如果可以,请比较两个客户端的以下结果: select * from v $parameter 同样来自每个客户端的SQL问题,请尝试使用EXPLAIN PLAN FOR SELECT … 看看它是否提出了不同的查询计划. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |