重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
当然不是了,在Oracle中,只有DML才会开启一个事务。也就是说Insert,Update,Delete这些都会开启一个事务,并且该事务在commit/rollback/ddl命令时会自动结束。
为黎城等地区用户提供了全套网页设计制作服务,及黎城网站建设行业解决方案。主营业务为网站制作、做网站、黎城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
其他的,像查询语句Select(不包含For Update等语句)时,是不会开启一个事务的。
补充:
首先有一点非常抱歉,上次的回答中误将DML写成了DDL,可能这一点儿让你误解了。
“当insert语句后会打开事务,然后再来一个insert语句又会是一个新事物是吗”这种说法是不正确的,第一个Insert没有commit或者rollback的情况下,第二个Insert和第一个是属于同一个事务的。因为Insert不属于commit/rollback/ddl命令,而是属于DML命令。
当第一个Insert结束后,立即执行一个新建表,删除表等命令(DDL命令),则会结束当前事务。
1、正常关闭
正常关闭数据库所用的选项是normal,数据库在关闭前将检查所有的连接,并且发出命令后不允许再有新的用户连接,在等待所有连接都断开后再关闭数据库,再次启动数据库不需要任何恢复过程。
联入sys用户
sqlshutdown normal;
2、紧急关闭
该方式用在某些紧急的情况下,比如通知马上停电,此时需要紧急关闭数据库以应付这些情况。这种方式用的选项是immediate,在这种方式下并不等待所有的用户断开连接再关闭,而是由系统断开连接,然后关闭数据库。
sqlshutdown immediate;
一旦执行了这条命令,则将当前正在处理的sql语句马上停止,然后将所有未提交的事务回退,并且不等待当前联入数据库的用户断开连接,而是由系统强行将各个联接断开。在下次启动数据库时要执行恢复动作,不过是由系统自动执行的,用户不必去了解它。
3、异常关闭
异常关闭选项是abort,此种方式下系统并不做任何检查和断开用户操作以及回退操作,而是直接将数据库现场撤销,这样现场中的数据库数据当然就无效了,数据库自然也就被关掉了。
sqlshutdown abort;
以abort方式关闭数据库时只有一行关闭信息表示关闭了数据库现场。以abort方式关闭的数据库再次启动时必须要进行恢复动作,这些恢复操作同样是系统自动来完成的,需要的时间较长。
Oracle事务始于DML语句 情况发事务结束: 一、COMMIT/ROLLBACK 二、执行DDL/DCL语句 三、客户端主断数据库连接(DISCONNECT) 四、数据库关闭(宕机) 另外DDL/DCL语句实际事务其隐含COMMIT Oracle需要特别指定事务始结束事务结束事务
用以下的sql可以查询出当前session中正在运行的sql信息:
select
s.module,
sql_text,
sn.osuser,
sn.machine,
s.executions
from
sys.v_$sql
s,
sys.all_users
u,
v$session
sn
where
s.parsing_user_id
=
u.user_id
and
upper(u.username)
in
('username')
and
(upper(s.module)
=
'app.exe')
and
sn.sql_hash_value
=
s.hash_value
and
sn.sql_address
=
s.address
order
by
s.last_load_time
1. 在V$ACCESS视图中找到要停止进程的SID:
SELECT SID FROM V$ACCESS WHERE NAME='存储过程名称';
2. 在V$SESSION视图中查找到查出SID和SERIAL#
SELECT SID,SERIAL#,FROM V$SESSION WHERE SID='刚才查到的SID'。
3.杀掉查找出来的进程
alter system kill session 'SID,SERIAL#' immediate;
解释:进程都有唯一的进程id(SID)和序列号(SERIAL#),之后通过kill命令即可强制停止进程。
SHUTDOWN IMMEDIATE:不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。