我的ORACLE是8i的,ODBC连接操作时,偶尔会出现数据库操作一直没有反应,不知是什么原因,不知大家有没有碰到过这个情况。这种情况也很少发生,但一旦发生的话就不管什么数据库操作都没有任何反应。我只是进行数据的查询和插入,不过查询和插入的频率比较集中和多而已。我没有用过什么锁等高级操作,只是一些select语句和insert语句的操作。
解决方案 »
- 求助:plsql无法连接虚拟机上的oracle10g
- oracle在运行高峰期老是提示存储空间不足,导致新用户连接不上服务器
- 求更新数据库前N条记录的语句
- 求教育,这个sql应该怎么写。
- 家里的计算机正在运行Oracle,我不小心把电源拔了。计算机重新启动后似乎还能够运行Oracle,怎么看Oracle有没有损坏?为了Oracle能够在家
- 合并根据不同条件as出来的列到一张表中,并有分页、排序
- 请教如何写复杂的视图
- 如何登录到sql*plus?
- 一个关于JAVA取ORACLE数据库中存储过程信息的问题
- oracle表索引失效,会影响其他表的查询么?
- 如何随机生成10000个范围在0-10000000内的不同数字呢?
- 更新90万件数据的表,3个钟还没完,谁来优化一下我的PL/SQL
0:none
1:null 空 2:Row-S 行共享(RS):共享表锁
3:Row-X 行专用(RX):用于行的修改
4:Share 共享锁(S):阻止其他DML操作
5:S/Row-X 共享行专用(SRX):阻止其他事务操作
6:exclusive 专用(X):独立访问使用
数字越大锁级别越高, 影响的操作越多。
一般的查询语句如select ... from ... ;是小于2的锁.以DBA角色, 查看当前数据库里锁的情况可以用如下SQL语句:
select object_id,session_id,locked_mode from v$locked_object;
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
如果有长期出现的一列,可能是没有释放的锁。我们可以用下面SQL语句杀掉长期没有释放非正常的锁:
alter system kill session 'sid,serial#';
建议你在查询的时候不要加共享锁.