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.

posted @   小刚zzg  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示

目录导航