几个小小问题,当天结贴给分!

dennis03 2004-05-08 12:29:15
1.请问v$session,v$lock,v$sqltext这三个表在企业管理器的什么地方能找到啊!我在sys和system两个方案里找了半天也没找到,它们是表还是视图啊!
2.我在哪可以找到这几个表的字段说明文档啊!很多字段都看不明白啥意思,这几个表之间的联系.
3.在企业管理器里的锁的显示那一部分有几个地方我看不明白
在锁类型里TX和TM分别代表啥
在占用模式NONE,EXCLUSIVE,ROW EXCLUSIVE分别代表啥
SID代表啥
还有就是为啥有的记录前有个加号,展开之后变成两条记录,这两个记录是啥联系?
4.我经常发现更新一条记录会失败,想了半天可能的原因只有出了表级死锁,但表级死锁是怎么产生的啊!
5.各位大佬能不能给一些查找死锁原因和相应的解决之道啊!
...全文
47 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ern 2004-05-08
  • 打赏
  • 举报
回复
1 视图
2 看数据字典和动态性能视图(大概是这么翻译的吧)的文档
3 NONE 无,EXCLUSIVE 表锁,ROW EXCLUSIVE 行锁
SID是会话ID吧
4 可能有游标select你的表for update了吧
beckhambobo 2004-05-08
  • 打赏
  • 举报
回复
Exclusive DDL Locks
Most DDL operations, except for those listed in the next section, "Share DDL Locks", require exclusive DDL locks for a resource to prevent destructive interference with other DDL operations that might modify or reference the same schema object. For example, a DROP TABLE operation is not allowed to drop a table while an ALTER TABLE operation is adding a column to it, and vice versa.

During the acquisition of an exclusive DDL lock, if another DDL lock is already held on the schema object by another operation, the acquisition waits until the older DDL lock is released and then proceeds.

DDL operations also acquire DML locks (data locks) on the schema object to be modified.

beckhambobo 2004-05-08
  • 打赏
  • 举报
回复
可以通过alter system kill session ‘sid,serial#’来杀掉会话

SELECT /*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK', NULL) LOCK_LEVEL, o.owner,o.object_name,o.object_type, s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser FROM v$session s,v$lock l,dba_objects o WHERE l.sid = s.sid AND l.id1 = o.object_id(+) AND s.username is NOT NULL
welyngj 2004-05-08
  • 打赏
  • 举报
回复
如何查看锁的情况

select a.username,decode(b.type,'TM','TABLE LOCK',
'TX','ROW LOCK',NULL),c.owner,c.object_name,c.object_type
from v$lock b,v$session a,dba_objects c
where a.sid = b.sid
and b.id1=c.object_id
and a.username is not null;
welyngj 2004-05-08
  • 打赏
  • 举报
回复
注意一下:
我经常发现更新一条记录会失败,想了半天可能的原因只有出了表级死锁
----------------------
个人认为不一定是表级死锁,死锁不是那么容易发生的。
更新一条记录会失败可能是这个事务不能获得锁。所以要等待其他的事务释放锁。

提交一个事务用commit
回滚一个事务用rollback.


dennis03 2004-05-08
  • 打赏
  • 举报
回复
多谢各位大佬指点,再问最后一个问题,下班结贴散分.
我发现现在这套java程序都没加事务控制,是不是所有语句比如select,delete,update等都要加事务控事,能不能写一小段有事务控制的代码示范一下,还有就是事务控制对死锁有没有效果,比如执行一条update语句而这条语名死锁了,事务是不是立即回滚这条语句而不让它一直等待下去,事务要多长时间才能回滚,如果事务不能解决死锁,各位又用什么方法解决死锁或保证系统不会出现死锁?
ZHANGGANGG 2004-05-08
  • 打赏
  • 举报
回复
1 v$XXX 视图。
v$session是当前的数据库会话,其中一部分的会话type是background,表示是后台会话
v$lock 给你个网址,自己去看看http://www.ddvip.net/database/oracle/158.htm
v$sqltext 记录最近操作的sql语句

3 NONE 无,EXCLUSIVE 表锁,ROW EXCLUSIVE 行锁
sid 会话ID

4 可能有游标select .. from <your_table> where .. for update了
ern 2004-05-08
  • 打赏
  • 举报
回复
对,要确定已经提交了更新
LGQDUCKY 2004-05-08
  • 打赏
  • 举报
回复
你查询到的是另外事物没有提交的数据跟提交后的数据。如果不同事物不提交数据
在另外的事物是不会看到的。
dennis03 2004-05-08
  • 打赏
  • 举报
回复
还有一个问题我一直也不太明白,就是我更新了一条记录的一个字段值,然后连续几次查询这条记录,发现这个字段值在几次查询过程中一会儿显示为旧值,一会儿显示为更新后的值,这是什么原因造成的啊!程序编码如何解决啊!
zhaokeke2004 2004-05-08
  • 打赏
  • 举报
回复
1.是动态性能视图
2.eg. SQL>desc v$session;
3.4.5建议你去看看相关oracle书籍
welyngj 2004-05-08
  • 打赏
  • 举报
回复
http://otn.oracle.com/pls/db901/db901.catalog_views?remark=homepage
conan19771130 2004-05-08
  • 打赏
  • 举报
回复
建议用pl/sql developer
dennis03 2004-05-08
  • 打赏
  • 举报
回复
到啊可以找到这几个视图的字段说明啊!
welyngj 2004-05-08
  • 打赏
  • 举报
回复
TX - Transaction enqueue
TM - DML enqueue
welyngj 2004-05-08
  • 打赏
  • 举报
回复
1.很少用oem,用sqlplus很方便的 ,只要 desc v$session ,就可以查看表,视图,同义词的字段信息。
select object_type from dba_objects where object_name='V$SESSION'
它们是同义词

2.tahiti.oracle.com 或者下载oracle的文档

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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