‘壹’ 如何用sql准确的判断一个表上面是否有活动事务
select * from user_tab_columns t where t.table_name=表名 and t.column_name =字段;
字段和表名都是大写哦
‘贰’ sql运行问题
sql运行问题?
数据库运行过程中常见的故障有3类:事物故障、系统故障、介质故障。
恢复策略:
1、事物故障:
发生事务故障时,被迫中断的事务可能已对数据库进行丁修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,强行回滚该事务,将数据库恢复到修改前的初始状态。
为此,要检查日志文件中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所做的一切改变,这类恢复操作称为事务撤销。
2、系统故障:
系统故障的恢复要完成两方面的工作,既要撤销所有末完成的事务,还要重做所有已提交的事务,这样才能将数据库真正恢复到一致的状态。
3、介质故障:
介质故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,磁盘上的物理数据和日志文件可能被破坏,这需要装入发生介质故障前最新的后备数据库副本,然后利用日志文件重做该副本后所运行的所有事务。
“数据故障恢复”和“完整性约束”、“并发控制”一样,都是数据库数据保护机制中的一种完整性控制。所有的系统都免不了会发生故障,有可能是硬件失灵,有可能是软件系统崩溃,也有可能是其他外界的原因,比如断电等等。
数据库运行的突然中断会使数据库处在一个错误的状态,而且故障排除后没有办法让系统精确地从断点继续执行下去。这就要求DBMS要有一套故障后的数据恢复机构,保证数据库能够回复到一致的、正确地状态去。
‘叁’ SQL事务概念是什么,举个例子说明什么样的东西是事务,与程序又有何区别,
数据库事务是构成单一逻辑工作单元的操作集合。
举例:转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:
1、将A账户的金额减少100元
2、将B账户的金额增加100元。
与程序的区别:一个程序中包含多个事务。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
(3)sql查看是否有事务扩展阅读:
事务必须具备四个属性,简称ACID属性:
1、原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。
2、一致性(Consistency):当事务完成时,数据必须处于一致状态。
3、隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
4、永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。
‘肆’ 如何判断一条SQL是否在事务中
select distinct event from v$session_wait;
检查等待事件
‘伍’ GBase如何查看回滚的事务sql
方法1:通过onstat -u|grep RP;可以获取相关的sessionid。通过onstat -g ses sid 获取sql;
方法2:通过onstat -x|grep “A-R”;可以定位到userthread,例如“686cb9e8”,然后通过onstat -u|grep “686cb9e8”获取到sessionid;onstat -x 输入中的rb_time表示回滚的剩余时间。
‘陆’ 如何判断sql server目前有没有事务在运行
-- 此语句用于查看最老的活动事务、未完成的分布式事务或复制事务的信息。
dbcc opentran
-- 通过动态管理视图查看活动事务
select * from sys.dm_tran_active_transactions where transaction_stat=2
‘柒’ sql server 2000中,如何查询事务日志事务日志有什么作用
你好!
1.如果要看日志内容,sql server下不直接支持,但是可以用LogExplorer(只支持2000)等工具来查看
如果你的意思是想看数据库在执行什么语句,可以用Sql profiler
菜单 Tool->Sql Server Profiler
进到Profiler的界面后新建一个跟踪(new Trace),选择好你的数据库和相应的用户、密码,然后就可以看到所有传到Sql Server来执行的语句了。
如果想更多的了解,可以去找些 Sql Server Profiler的资料看下,最好还是自己试几下,操作很简单,但是平时开发过程中调试很好用
2.每个 Microsoft® SQL Server™ 2000 数据库都有事务日志,用以记录所有事务和每个事务对数据库所做的修改。记录事务及其修改有三个作用:
恢复个别的事务。
如果应用程序发出 ROLLBACK 语句,或者 SQL Server 检测到错误(例如失去与客户端的通讯),就使用日志记录回滚未完成的事务所做的修改。
SQL Server 启动时恢复所有未完成的事务。
当运行 SQL Server 的服务器发生故障时,数据库可能处于这样的状态:还没有将修改从高速缓冲存储器写入数据文件,在数据文件内有未完成的事务所做的修改。当启动 SQL Server 的复本时,它对每个数据库执行恢复操作。前滚日志中记录的、可能尚未写入数据文件的每个修改。然后回滚在事务日志中找到的每个未完成的事务,以确保数据库的完整性。
将还原的数据库前滚到故障点。
丢失数据库(在没有 RAID 驱动器的服务器上,硬盘驱动器出现故障时可能会出现这种情况)后,可以将数据库还原到故障点。首先还原上一次的完整数据库备份或差异数据库备份,然后将事务日志备份序列还原到故障点。当还原每个日志备份时,SQL Server 重新应用日志中记录的所有修改以前滚所有事务。当最后的日志备份还原后,SQL Server 将使用日志信息回滚到该点未完成的所有事务。
SQL Server 2000 事务日志的特点是:
事务日志不是作为一个表实现,而是作为单独的文件或数据库内的一组文件实现。日志高速缓存与数据页的高速缓冲存储器分开管理,从而使数据库引擎内的编码更简单、更快速和更可靠。
日志记录和页的格式不必遵守数据页的格式。
事务日志可以在几个文件上实现。可以根据需要定义这些文件为自动增长。这样可减少事务日志内空间不足的可能性,同时减少管理开销。
截断日志中未用部分的机制速度快且对事务吞吐量影响最小。
‘捌’ sql中什么是事务啊
(1):事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL
Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
(2):事务通常是以BEGIN
TRANSACTION开始,以COMMIT或ROLLBACK结束。
COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。
ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。
(3):事务运行的三种模式:
A:自动提交事务
每条单独的语句都是一个事务。每个语句后都隐含一个COMMIT。
B:显式事务
以BEGIN
TRANSACTION显式开始,以COMMIT或ROLLBACK显式结束。
C:隐性事务
在前一个事务完成时,新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK显式结束。
(4):事务的特性(ACID特性)
A:原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。
B:一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
C:隔离性(Isolation)
一个事务的执行不能被其他事务干扰。
D:持续性/永久性(Durability)
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
注:事务是恢复和并发控制的基本单位。
‘玖’ SQL 查询能使用事务嘛合适嘛
事务,就是要么全部执行,要么全部不执行。
事务开始
插入表A一个字段B (主键 int 标识 自动增)
<-- 假如这里意外发生了,那么 最终 A 表不会多一条数据。
然后查询出 这个表A的 字段B的值
插入附属表E 关联字段C (int )
<-- 假如这里意外发生了,那么 最终 A 表 E 表 不会多数据。
结束事务
<-- 假如这里意外发生了,那么 最终 A 表 E 表,还是有数据的。
==================================================
对于 Oracle 数据库来说:
事务开始
插入表A一个字段B (主键 int 标识 自动增)
-- 这个时候,只有你,能查询到你刚才新增的那条记录。
-- 你新增的,未提交的数据,其他人是看不到的。
然后查询出 这个表A的 字段B的值
插入附属表E 关联字段C (int )
-- 这个时候,未提交, 你新增的 表A与表E的数据,只有你这个会话能看到
-- 别人看不到。
结束事务
-- 事务提交以后,别人
SELECT * FROM A
SELECT * FROM E
能够看到你刚才插入的数据了。
============================
还是Oracle
事务是通过 一种叫 undo 的机制来处理的。
比如
事务开始
插入表A一个字段B (主键 int 标识 自动增)
-- 将数据写入到 表A的存储区域
-- 同时记录 undo 信息, 就是针对你的 INSERT INTO A ... 的SQL
-- undo 的 SQL 是 DELETE FROM A WHERE B=...
然后查询出 这个表A的 字段B的值
插入附属表E 关联字段C (int )
-- 将数据写入到 表E的存储区域
-- 同时记录 undo 信息, 就是针对你的 INSERT INTO E ... 的SQL
-- undo 的 SQL 是 DELETE FROM E WHERE C=...
-- 假如这个时候,服务器重新启动了
-- 那么下次服务器启动的时候,将把没有提交的事务 undo掉
-- 也就是执行前面的
-- DELETE FROM A WHERE B=...
-- DELETE FROM E WHERE C=...
结束事务
-- 这个时候,提交事务了,也就是 Commit 了。
-- 将 SCN ( System Change Number)递增
-- 通过将 SCN 递增,使得 别的用户,可以访问到你新增加的数据。
-- 前面所使用的 undo 空间,将腾出来,给别的用户使用。
‘拾’ SQL 作业 是否存在事务
SQL 作业本身不是隐含事务,可能会部分提交、执行,要想作为事务执行,必须用语句显式标明。