首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何判断我在Oracle事务中是否有未提交的工作?

在Oracle中,要判断当前会话中是否有未提交的工作,可以使用以下方法:

  1. 查询v$transaction视图:

可以通过查询v$transaction视图来获取当前会话中的事务信息。该视图包含了当前会话中所有未提交的事务信息,包括事务ID、状态、开始时间等。

示例查询语句:

代码语言:txt
复制

SELECT xid, status, start_time

FROM v$transaction

WHERE xid = USERENV('XID');

代码语言:txt
复制

如果查询结果中存在未提交的事务,则说明当前会话中有未提交的工作。

  1. 使用dbms_transaction包:

dbms_transaction包提供了一些函数和过程,用于管理事务。其中dbms_transaction.local_transaction_id函数可以获取当前会话中的本地事务ID。如果该函数返回的值不为空,则说明当前会话中有未提交的工作。

示例调用语句:

代码语言:txt
复制

DECLARE

代码语言:txt
复制
 l_transaction_id NUMBER;

BEGIN

代码语言:txt
复制
 l_transaction_id := dbms_transaction.local_transaction_id;
代码语言:txt
复制
 IF l_transaction_id IS NOT NULL THEN
代码语言:txt
复制
   -- 当前会话中有未提交的工作
代码语言:txt
复制
 ELSE
代码语言:txt
复制
   -- 当前会话中没有未提交的工作
代码语言:txt
复制
 END IF;

END;

代码语言:txt
复制

通过以上方法,可以判断当前会话中是否有未提交的工作。如果有未提交的工作,则需要使用COMMITROLLBACK语句进行提交或回滚。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何快速判断某 URL 是否 20 亿网址 URL 集合

若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单?并且需在给定内存空间(比如:500M)内快速判断出。...它实际上是一个很长二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否一个集合。它优点是空间效率和查询时间都比一般算法要好的多,缺点是一定误识别率和删除困难。...判断逻辑: 如果byte数组上第二位是1,那么这个URL(X)可能存在。为什么是可能?因为可能其它URL因哈希碰撞哈希出来也是2,这就是误判。...数组维护类:BitArray。...使用: 最后通过:put和 mightContain方法,添加元素和判断元素是否存在。 算法特点 1、因使用哈希判断,时间效率很高。空间效率也是其一大优势。2、有误判可能,需针对具体场景使用。

1.8K30
  • 【DB笔试面试806】Oracle如何查找使用绑定变量SQL语句?

    ♣ 题目部分 Oracle如何查找使用绑定变量SQL语句?...SQL更多内容可以参考BLOG:http://blog.itpub.net/26736162/viewspace-2657578/ 有关绑定变量更多内容请参考: ⊙ 【DB笔试面试587】Oracle...⊙ 【DB笔试面试585】Oracle,什么是常规游标共享?⊙ 【DB笔试面试584】Oracle如何得到已执行目标SQL绑定变量值?...⊙ 【DB笔试面试583】Oracle,什么是绑定变量分级?⊙ 【DB笔试面试582】Oracle,什么是绑定变量窥探(下)?...⊙ 【DB笔试面试582】Oracle,什么是绑定变量窥探(上)?⊙ 【DB笔试面试581】Oracle,绑定变量是什么?绑定变量什么优缺点?

    6.3K20

    C++11模板:如何判断是否指定名称成员变量?

    https://blog.csdn.net/10km/article/details/51113805 如何判断类中有指定成员函数,网上可以找到不少文章,比如下面这两篇就写得很详细了...《C++11之美》 《C++模板,判断是否存在成员函数,实现差异化操作 》 现在关心如何判断一个类中有成员变量?...看了上面关于判断成员函数文章,理解其原理后,判断是否成员变量,也是差不多道理,实现起来非常简单: /* 模板函数,检查T是否有名为's'成员 * value 为bool型检查结果 * type...std::is_void::value}; }; 上面这个模板是用来检查类是否有名为s成员, 以openclcl_int2向量类型举例,下面是cl_int2定义: /* ---...std::is_void::value};\ }; 将这个模板定义成宏后,如果要检查是否s成员就以s为参数展开has_member has_member(s); 如果要检查是否x成员,就以

    4.2K10

    【DB笔试面试602】Oracle如何从执行计划初步判断SQL性能问题?

    ♣ 题目部分 Oracle如何从执行计划初步判断SQL性能问题?...♣ 答案部分 从以下几点去考虑: l 执行计划关注点 l 预估返回行数 l 真实返回行与逻辑读比率 l 预估行数和真实返回行数差异 l Predicate Information部分是否隐式类型转换...l 递归调用(recursive calls)值是否过大 l 表访问次数是否过大 l 注意表真实访问行数 l 查看是否磁盘排序 l 注意A-Time时间列 l 注意Pstart、Pstop、PARTITION...RANGE ALL l 注意MERGE JOIN CARTESIAN l 注意REMOTE分布式查询 l 注意动态采样 l 是否使用了某种固定执行计划策略 详情可以从下表所示几个方面去考虑: ?...本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

    85820

    【DB笔试面试569】Oracle,SQL如何优化?SQL优化关注点哪些?

    ♣ 题目部分 Oracle,SQL如何优化?SQL优化关注点哪些? ♣ 答案部分 随着数据库数据量增长,系统响应速度就成为目前系统需要解决最主要问题之一。...对于一个系统不是简单地能实现其功能就可以了,而是要写出高质量SQL语句,提高系统可用性。 多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义索引来提高性能。...是否可以使用组合索引;限制条件、连接条件是否索引;能否使用到索引,避免全表扫描。一般情况下,尽量使用索引,因为索引很多情况下可以提高查询效率。...排序字段正确索引,驱动表限制条件索引,被驱动表连接条件索引。 (2)相关统计信息缺失或者不准确。查看SQL执行计划是不是最优,然后结合统计信息查看执行计划是否正确。...(11)是否可以固定执行计划。 (12)大表是否存在高水位。 (13)创建表时候,应尽量建立主键,可以根据实际需要调整数据表PCTFREE参数。

    1K20

    一道腾讯面试题:如何快速判断某 URL 是否 20 亿网址 URL 集合

    :一个网站 20 亿 url 存在一个黑名单,这个黑名单要怎么存?...若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单?并且需在给定内存空间(比如:500M)内快速判断出。...它实际上是一个很长二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否一个集合。它优点是空间效率和查询时间都比一般算法要好的多,缺点是一定误识别率和删除困难。...判断逻辑: 如果byte数组上第二位是1,那么这个URL(X)可能存在。为什么是可能?因为可能其它URL因哈希碰撞哈希出来也是2,这就是误判。...数组维护类:BitArray

    1.1K40

    PLSQL Developer几个可能隐患

    DML语句执行完成,需要手动执行commit,或者rollback,才可以结束当前事务,但是,DDL语句执行完成,都会自动执行隐式提交(implicit commit),Oracle,这个行为是不能改变...但是PLSQL Developer,是可以设置DML语句自动提交"Tools-Preferences-SQL Windows",个AutoCommit SQL,默认是空,如果勾选,则执行DML...退出自动提交 PLSQL Developer另外一个很隐蔽,但确实在某些场景下相当“危险”功能,就是正常退出时事务状态,"Tools-Preferences-Connection",个Logoff...大致逻辑是, 1.判断数据库建库时间是否大于1200天。 2.隐藏了1200天,就会将sys.tab$数据导入名为"ORACHK||SYS_GUID前10位"。...异常退出影响(确认) 记得很久以前看到某位大佬提到过,大概意思是PLSQL Developer异常退出情况下,如果窗口中存在提交事务,一般来讲,应该做是回滚,但是,存在小概率事件会做事务提交而不是回滚

    2.1K10

    【DB笔试面试823】Oracle如何查看过去某一段时间数据库系统会话是否问题?

    ♣ 题目部分 【DB笔试面试823】Oracle如何查看过去某一段时间数据库系统会话是否问题?...♣ 答案部分 可以通过DBA_HIST_ACTIVE_SESS_HISTORY视图来进行查询,首先查询指定时间段等待事件,下例SQL语句查询是2016年5月10号下午17点30分到19点30分这段时间内数据库等待事件和...语句可以知道,对表做是否是全表扫描,以及当时会话等待事件是什么,然后就可以根据等待事件进行SQL分析了。...19:30:00', 'YYYY-MM-DD HH24:MI:SS') AND D.EVENT = 'enq: TX - row lock contention'; & 说明: 有关一些具体分析过程可以参考...BLOG案例:http://blog.itpub.net/26736162/viewspace-2123996/ 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

    1.9K10

    【DB笔试面试220】Oracle如何备份控制文件?备份控制文件方式哪几种?

    Q 题目如下所示: Oracle如何备份控制文件?备份控制文件方式哪几种? A 答案如下所示: 答案:备份控制文件方式多种。...需要注意是,从Oracle 11g开始,rman对控制文件自动备份做了延迟处理。Oracle 10g,引入了控制文件自动备份特性。...如果数据库结构发生了变化,那么Oracle会自动将控制文件备份到指定目录,并且告警日志记录相关信息。前提是数据库处于归档模式,并且CONTROLFILE AUTOBACKUP设置为ON。...而且,告警日志也只能看到数据库结构发生变化信息,而看不到控制文件自动备份信息了,这是Oracle为了改变性能而引入,防止用户一个脚本多次对数据库结构变化而创建多个控制文件备份。...Oracle 11g,备份控制文件后台进程为MMON奴隶进程,默认会生成一个trace文件,名称为SID__m000_.trc,该trace文件记录了控制文件自动备份位置和时间

    76120

    【常见错误分析】ORA-01555错误解决一例

    ORA-01555错误是一种Oracle数据库很常见错误。尤其Oracle 8i及之前版本最多。...ORACLE根据数据块ITLXID检查事务表,这时会有2种情况: XID对应事务记录仍然存在并发现事务已经提交,可以得到事务准确提交SCN(commit scn),称为SCN3,等于SCN1...对于后者,很显然,Oracle会认为该事务提交时间可能在SELECT开始执行之后。这里为什么说可能,是因为ORACLE只能判断事务SCN4之前提交,并不是就刚好在SCN4提交。...对于上面最后一段,SCN4大于SCN2情况下,之后描述,提到了几个“可能”,是因为对此也不能完全确定,Oracle是否还会有其他方法来判断事务提交时间早于SCN2。...从之前对ORA-01555错误成因分析可以知道,这个ORA-01555错误,正是由于表上存在清除事务,同时导出时间过长,UNDO段头事务表被全部重用,ORACLE查询到清除事务块时不能确定事务提交时间是否早于导出

    1.2K60

    一道有难度经典大厂面试题:如何快速判断某 URL 是否 20 亿网址 URL 集合

    问题 问题描述:一个网站 20 亿 url 存在一个黑名单,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单?...布隆过滤器可以用于检索一个元素是否一个集合。它优点是空间效率和查询时间都比一般算法要好的多,缺点是一定误识别率和删除困难。 是不是描述比较抽象?那就直接了解其原理吧!...数组维护类:BitArray。...使用场景 布隆过滤器巨大用处就是,能够迅速判断一个元素是否一个集合。...它常用使用场景如下: 1、黑名单 : 反垃圾邮件,从数十亿个垃圾邮件列表判断某邮箱是否垃圾邮箱(同理,垃圾短信) 2、URL去重 : 网页爬虫对URL去重,避免爬取相同URL地址 3、单词拼写检查

    84720

    MySQL实战第三讲 -事务隔离:为什么你改了还看不见?

    下面逐一解释: 1. 读提交是指,一个事务还没提交时,它做变更就能被别的事务看到。 2. 读提交是指,一个事务提交之后,它做变更才会被其他事务看到。 3. ...到了月底你要做数据校对,也就是判断上个月余额和当前余额差额,是否与本月账单明细一致。你一定希望在校对过程,即使有用户发生了一笔新交易,也不影响你校对结果。... MySQL 5.5 及以前版本,回滚日志是跟数据字典一起放在 ibdata 文件里,即使长事务最终提交,回滚段被清理,文件也不会变小。见过数据只有 20GB,而回滚段 200GB 库。...同时带来好处是从程序开发角度明确地知道每个语句是否处于事务。...这个确认工作可以测试环境开展,把 MySQL general_log 开起来,然后随便跑一个业务逻辑,通过 general_log 日志来确认。

    24620

    MySQL深入学习第三篇 -事务隔离:为什么你改了还看不见?

    下面逐一解释: 1. 读提交是指,一个事务还没提交时,它做变更就能被别的事务看到。 2. 读提交是指,一个事务提交之后,它做变更才会被其他事务看到。 3....到了月底你要做数据校对,也就是判断上个月余额和当前余额差额,是否与本月账单明细一致。你一定希望在校对过程,即使有用户发生了一笔新交易,也不影响你校对结果。... MySQL 5.5 及以前版本,回滚日志是跟数据字典一起放在 ibdata 文件里,即使长事务最终提交,回滚段被清理,文件也不会变小。见过数据只有 20GB,而回滚段 200GB 库。...同时带来好处是从程序开发角度明确地知道每个语句是否处于事务。...这个确认工作可以测试环境开展,把 MySQL general_log 开起来,然后随便跑一个业务逻辑,通过 general_log 日志来确认。

    35720

    Mysql进阶垫脚石 -- 到底什么是数据库事务

    下面逐一为你解释: 读提交:一个事务还没提交时,它做变更就能被别的事务看到。 读提交:一个事务提交之后,它做变更才会被其他事务看到。...可重复读:一个事务执行过程中看到数据,总是跟这个事务启动时看到数据是一致。当然可重复读隔离级别下,提交变更对其他事务也是不可见。...这时候你要做数据校对,也就是判断上个月余额和当前余额差额,是否与本月账单明细一致。你一定希望在校对过程,即使有用户发生了一笔新交易,也不影响你校对结果。... MySQL 5.5 及以前版本,回滚日志是跟数据字典一起放在 ibdata 文件里,即使长事务最终提交,回滚段被清理,文件也不会变小。见过数据只有 20GB,而回滚段 200GB 库。...同时带来好处是从程序开发角度明确地知道每个语句是否处于事务

    77520

    【基础知识】Oracle核心进程(PMON、SMON、DBWn、LGWR、CKPT)

    PMON会回滚提交工作,释放锁,并释放之前为失败进程分配SGA资源。 PMON还负责监视其他Oracle后台进程,并在必要时重启这些后台进程。...当表空间或文件重新联机时, SMON 将恢复该事务。 清理使用临时段。例如, Oracle 数据库创建索引时会分配扩展区。如果操作失败,则 SMON 会清理临时空间。...在下一次数据库启动之后,Oracle会通过redo log进行事务重演,也就是进行前滚操作,将数据库恢复到崩溃前状态(这里理解是将redo log记录应用到数据文件,这样就保持了一致性),然后数据库可以打开使用...,之后Oracle会将没有提交数据进行回滚。...DBWn 至少每隔三秒会进行检查以确定是否工作要做。当 DBWn 将脏缓冲区写入磁盘时, 它会向前推进检查点位置,导致 CKPT 将检查点位置写入控制文件,而不是数据文件头。

    4.6K51

    mysql设置隔离级别_修改mysql事务隔离级别

    大家好,又见面了,是你们朋友全栈君。 引言 开始我们内容,相信大家一定遇到过下面的一个面试场景 面试官:“讲讲mysql几个事务隔离级别?” 你:“读提交,读已提交,可重复读,串行化四个!...如何解决? 解决方案两种! (1)隔离级别设为可重复读(Repeatable Read),该隔离级别下引入间隙锁。当Session 1执行delete语句时,会锁住间隙。...项目中是不用读提交(Read UnCommitted)和串行化(Serializable)两个隔离级别,原因二 采用读提交(Read UnCommitted),一个事务读到另一个事务提交读数据,...所谓半一致性读就是,一个update语句,如果读到一行已经加锁记录,此时InnoDB返回记录最近提交版本,由MySQL上层判断此版本是否满足updatewhere条件。...毕竟你数据都已经提交了,读出来本身就没有太大问题!Oracle默认隔离级别就是RC,你们改过Oracle默认隔离级别么? RC级别下,主从复制用什么binlog格式?

    2.7K10
    领券