oracle性能问题,急急急!!!!

jzlxiwanggood 2009-08-17 09:42:27
oracle 11g中部分存储过程,出现4个表连接时,即使没有数据,也会出现死锁,无法查询到数据。在使用临时表讲连接次数减少后,性能提高!!!!!!!各位专家是否有其他解决方法。

还有一个问题是oracle中的临时表在有多表连接时,空间增长过快,除了删除临时表从新建立新新临时表空间,还有其他比较好的解决方法。!!!!!!急急急。
...全文
118 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingwang75 2009-08-27
  • 打赏
  • 举报
回复
从执行计划分析。Oracle查询会出现死锁还是第一次听到,是查询超时?
strongandy 2009-08-25
  • 打赏
  • 举报
回复
查看数据库alter日志了吗?
liuyi8903 2009-08-24
  • 打赏
  • 举报
回复
多半是个bug
liuyi8903 2009-08-24
  • 打赏
  • 举报
回复
11.6还是11.7?

什么平台?

另外.trace是啥结果?
huoxh_007 2009-08-19
  • 打赏
  • 举报
回复
huoxh_007 2009-08-19
  • 打赏
  • 举报
回复
顶一下
zhangchu_63 2009-08-18
  • 打赏
  • 举报
回复
四张表,三个条件,如果数据量再大点,肯定有大量的笛卡尔积。
你的过程里面是不是有其他的SQL会将表锁死。

select b.owner,b.object_name,a.SESSION_ID,a.LOCKED_MODE,a.OS_USER_NAME
from v$locked_object a,dba_objects b
where a.OBJECT_ID=b.object_id

使用这个来看看锁死的信息。然后KILL掉。
临时表是不需要删除的,一个SESSION完结后自动清空。
d0565911 2009-08-18
  • 打赏
  • 举报
回复
我认为临时表没有什么关系,四张表形成的笛卡积太大,你可以在把表相连时先把各个表的范围用条件缩小,这样可以少占用内存,对性能有很大的提升.
jzlxiwanggood 2009-08-17
  • 打赏
  • 举报
回复
就是使用自然连接,比如 select * from a,b,c,d where a.id = b.id and c.id = d.id.

即使4个表中都没有数据,执行时20分钟都无法查询出数据。在使用会话临时表处理后,速度大幅提升。
inthirties 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jzlxiwanggood 的回复:]
我们临时表一般都是先建好,然后一直使用。而且使用的是会话临时表,应该不用每次删除吧!!!
[/Quote]

不需要没次删除。会话结束,数据自动会消失。

出现4个表连接时,即使没有数据,也会出现死锁
出现是检查一下v$lock和v$locked_objects表,看看有什么对象。你这里的多表连接指的什么?
jzlxiwanggood 2009-08-17
  • 打赏
  • 举报
回复
我们临时表一般都是先建好,然后一直使用。而且使用的是会话临时表,应该不用每次删除吧!!!
shiyiwan 2009-08-17
  • 打赏
  • 举报
回复
写一个 package,里面包含一系列的procedure
处理如下事务:
1.建临时表1
2.建临时表2
。。。
n-2.查询你要的结果并保存在临时表final
n-1.将final表数据传出,视需求而定,比如我们项目是依照final表数据使用sqr产生pdf文件,或者导出成txt文件和xls文件
n.drop所有临时表

写一个公共的main procedure,while循环处理一系列事务,任意环节出错则将该环节循环数i记录在一个专门的表compl_parm,下次运行时候直接读出,以此获得restart能力。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧