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是运行在高性通服务器上,你电脑配置底肯定会慢的
你试查看启动到正常后,系统里有多少个进程?
[解决办法]
[解决办法]
可以通过v$session和v$process查到sid再结束掉
[解决办法]
[解决办法]
[解决办法]
建议你最好的方法:
就是规范你的程序.过程中该回滚的地方要回滚,该提交的地方要提交..
[解决办法]
从锁的类型来看,是RMAN备份在运行
[解决办法]
[解决办法]
我调试过需要运行7个小时的procedure
因为很慢, 所以怀疑到锁, 后来发现绝大多数的锁是正常的
但是经常有行并发写被阻塞锁定, 所以最后单独建了一个用户scheme调试, 避免了相互干扰
在linux/unix下, 可以通过session定位process, 然后再kill释放资源,
但是在xp下, 估计kill session没有什么作用(没有实验过, 只是猜测)
因为xp中oracle是以单进程多线程运行的, 线程只能通过进程来获取资源
当然这个资源是指内存上的, 而不是说数据表的块
kill session能解决一时问题, 但终归不是一个好主意, 我觉得
最终的办法是在procedure的优化上面
关于如何定位查看对效率有影响的lock, 我总结成了一个文档,
等会我找找, 贴一部分楼主可能用得上的上来
[解决办法]
没找到, 好像放家里了, 不好意思
[解决办法]
不懂,帮顶
[解决办法]
[解决办法]
遇到过一次,数据库也很慢,重起也不管用,
当时产生的原因是由于数据不规范产生的死循环,有一个进程一直在计算,
楼主可以查查程序,有没类似的问题