首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle如何彻底解决锁的有关问题?

2012-04-13 
oracle怎么彻底解决锁的问题?急。。。环境是WINDOWS XP + ORACLE 10服务器启动很慢?而且服务器一启动占有很大

oracle怎么彻底解决锁的问题?急。。。
环境是WINDOWS XP + ORACLE 10

服务器启动很慢?而且服务器一启动占有很大的资源?
感觉还是服务器进程里面有进程被锁?
看了下v$lock

SQL code
select * from v$lock;ADDR     KADDR           SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK-------- -------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------21C34228 21C3423C        165 XR            4          0          1          0        425          021C34284 21C34298        165 CF            0          0          2          0        402          021C3433C 21C34350        165 RS           25          1          2          0        390          021C343F4 21C34408        166 RT            1          0          6          0        393          021C34508 21C3451C        164 PS            1          0          4          0        299          021C34564 21C34578        167 MR            1          0          4          0        315          021C345C0 21C345D4        167 MR            2          0          4          0        315          021C3461C 21C34630        167 MR            3          0          4          0        315          021C34678 21C3468C        167 MR            4          0          4          0        315          021C346D4 21C346E8        167 MR            5          0          4          0        315          021C34730 21C34744        167 MR          201          0          4          0        315          021C3478C 21C347A0        164 PS            1          1          4          0        299          021C347E8 21C347FC        164 TS            3          1          3          0        299          021C34844 21C34858        164 PS            1          2          4          0        299          021C348A0 21C348B4        164 PS            1          3          4          0        298          021C348FC 21C34910        155 PS            1          1          4          0        298          021C34958 21C3496C        154 PS            1          2          4          0        298          021C349B4 21C349C8        152 PS            1          3          4          0        298          021C34A10 21C34A24        153 PS            1          0          4          0        298          021C34A6C 21C34A80        164 TX       131111       4537          6          0        298          020 rows selectedselect * from v$session where sid in(select sid from v$lock);                                                                                                                       SADDR           SID    SERIAL#     AUDSID PADDR         USER#    OWNERID  STATUS   SERVER       SCHEMA# SCHEMANAME  -------- ---------- ---------- ---------- -------- ---------- ----------  -------- --------- ---------- ------------22736EAC        152          1          0 2264DDCC          0      65700  ACTIVE   DEDICATED          0 SYS         22738174        153          1          0 2264CBFC          0      65700  ACTIVE   DEDICATED          0 SYS         2273943C        154          1          0 2264D7DC          0      65700  ACTIVE   DEDICATED          0 SYS         2273A704        155          3          0 2264D1EC          0      65700  ACTIVE   DEDICATED          0 SYS         2274500C        164          1          0 22649C7C          0 2147483644  ACTIVE   DEDICATED          0 SYS         227462D4        165          1          0 2264968C          0 2147483644  ACTIVE   DEDICATED          0 SYS         2274759C        166          1          0 2264909C          0 2147483644  ACTIVE   DEDICATED          0 SYS         22748864        167          1          0 22648AAC          0 2147483644  ACTIVE   DEDICATED          0 SYS  这lock视图里面看到比正常多了几个?通过alter system kill session '152,1';杀了几个进程后,通过LOCK视图查出来还是有很多锁?这里不能杀掉SID 大于164的进程




[解决办法]
看不出问题,好像都是oracle的后台进程.


用statspack看看
[解决办法]
服务器启动很慢?而且服务器一启动占有很大的资源? 

与你机器的配置有关,小于2g的情况下,尽量不用10g。

另,服务刚起来,有对象锁,也是系统的,不用理会。
[解决办法]
是不是你机器的硬件配置很低的?毕竟oracle10是运行在高性通服务器上,你电脑配置底肯定会慢的
你试查看启动到正常后,系统里有多少个进程?

[解决办法]

引用楼主 jufeng2309 的帖子:
环境是WINDOWS XP + ORACLE 10

服务器启动很慢?而且服务器一启动占有很大的资源?
感觉还是服务器进程里面有进程被锁?
看了下v$lock
SQL codeselect*fromv$lock;

ADDR KADDR SID TYPE ID1 ID2 LMODE REQUEST CTIME BLOCK-------- -------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------21C34228 21C3423C165XR4010425021C34284 2…

[解决办法]
可以通过v$session和v$process查到sid再结束掉
[解决办法]
探讨
服务器启动很慢?而且服务器一启动占有很大的资源?

[解决办法]
探讨
关键在session里面查不到...
以前服务器挺快的,但是因为
自从我前几天晚上执行了一个存储过程,执行了一个晚上
第二天一看,存储过程还没有执行完
然后数据库就巨慢,所以就怀疑到是锁表问题,
在数据库进程中有僵死进程在里面,而且占有很大内存。
一直都没有释放。
但就是在session里面查不到SID

[解决办法]
建议你最好的方法:
就是规范你的程序.过程中该回滚的地方要回滚,该提交的地方要提交..
[解决办法]
从锁的类型来看,是RMAN备份在运行
[解决办法]

[解决办法]
我调试过需要运行7个小时的procedure
因为很慢, 所以怀疑到锁, 后来发现绝大多数的锁是正常的
但是经常有行并发写被阻塞锁定, 所以最后单独建了一个用户scheme调试, 避免了相互干扰

在linux/unix下, 可以通过session定位process, 然后再kill释放资源, 
但是在xp下, 估计kill session没有什么作用(没有实验过, 只是猜测)
因为xp中oracle是以单进程多线程运行的, 线程只能通过进程来获取资源

当然这个资源是指内存上的, 而不是说数据表的块
kill session能解决一时问题, 但终归不是一个好主意, 我觉得
最终的办法是在procedure的优化上面

关于如何定位查看对效率有影响的lock, 我总结成了一个文档, 
等会我找找, 贴一部分楼主可能用得上的上来
[解决办法]
没找到, 好像放家里了, 不好意思
[解决办法]
不懂,帮顶
[解决办法]
探讨
关键在session里面查不到...
以前服务器挺快的,但是因为
自从我前几天晚上执行了一个存储过程,执行了一个晚上
第二天一看,存储过程还没有执行完
然后数据库就巨慢,所以就怀疑到是锁表问题,
在数据库进程中有僵死进程在里面,而且占有很大内存。
一直都没有释放。
但就是在session里面查不到SID

[解决办法]
遇到过一次,数据库也很慢,重起也不管用,
当时产生的原因是由于数据不规范产生的死循环,有一个进程一直在计算,
楼主可以查查程序,有没类似的问题

热点排行