oracle 事务
事务开始
事务开始于会话的第一条DML语句,一般采用的隐性方式开始。通过视图 v$transaction 来查看。
SQL> select xid from v$transaction
事务结束的几种情况:
1.当你执行DDL语句的时候,按照提交:commit
DDL语句执行:1.commit 2.执行ddl语句 3.commit
事务开始的标识,第一条DML语句(隐式的开启事务),DDL(隐式提交事务)
2.当你执行TCL语句的时候,按照提交:commit
3.当你主动退出命令行的时候,按照提交:commit
4.当你非正常退出的时候,按照回滚:rollback
5.服务器出现故障、数据库崩溃,按照回滚:rollback
6.当发出shutdown immediate;关库,按照回滚:rollback
事务的保存点savepoint
因为有事务才会有锁。
oracle里面锁的分类:DML锁 DDL锁 SYSTEM锁
TX锁(表锁)
TM锁(行锁)
成对出现,行锁每行都可以发生。。
在DML操作的时候,Oracle自动完成加锁。
也可以手工进行加锁
FOR UPDATE 选项
Select * from abc for update; -- 该表及所有行全部上锁
有时候采用手工加锁,或自动加锁,会导致事务等待。
nowait选项--不等待,发现有锁,直接报错
这时候可以进行手工试探:select * from abc for update nowait;--手工试探
wait选项 --等待多少秒,如果之前事务在10秒内被释放,直接加锁,否则报错
死锁:两个会话 四行数据交叉形成 。
双方同时争用对方的资源,就会产生死锁
SQL> select * from abc for update wait 10
ERROR at line 1:
ORA-00060: deadlock detected while waiting for resource。。
查询下
SQL> select sid,SERIAL#,blocking_session,username,event from v$session where
blocking_session_status='VALID';
杀会话进程
SQL> alter system kill session '146,455';
System altered.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!