【Shutdown】同一会话存在未提交事务时使用immediate选项无法关闭数据库

这是一个事实,当同一会话存在未提交事务时使用immediate选项无法关闭数据库。简单看一下这个现象。

1.模拟未提交事务
这里为了简便,会话session1直接在sys用户下创建表t进行测试。
sys@ora10g> create table t (x number);

Table created.

sys@ora10g> insert into t values (1);

1 row created.

2.使用immediate选项关闭数据库
sys@ora10g> shutdown immediate;
ORA-01097: cannot shutdown while in a transaction - commit or rollback first

OK,错误提示“ORA-01097”已经给出,提示信息解释的非常清楚。因此在同一个会话session1中如果存在未提交的事务使用immediate选项是没有办法关闭数据库的。

3.在其他会话中存在未提交事务时可被immediate选项关闭
1)首先我们提交上面第一个会话session1中的事务。
sys@ora10g> commit;

Commit complete.

2)另外开启一个session2
在开一个会话session2同样模拟一个未提交的事务
sys@ora10g> create table t2 (x number);

Table created.

sys@ora10g> insert into t2 values (2);

1 row created.

这里不要提交事务。

3)回到session1中执行具有immediate选项的关闭数据库命令
回到第一个窗口执行关闭数据库的操作
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

可见此时关闭动作可以成功完成。
可以进一步确认第二个会话session2已经被强制杀死。这也是immediate选项本应具有的能力。
sec@ora10g> select * from t;
select * from t
*
ERROR at line 1:
ORA-03135: connection lost contact


ERROR:
ORA-03114: not connected to ORACLE

4.体验无敌的abort方式关闭数据库
1)启动数据库
sys@ora10g> startup;
ORACLE instance started.

Total System Global Area  209715200 bytes
Fixed Size                  2071640 bytes
Variable Size             125830056 bytes
Database Buffers           75497472 bytes
Redo Buffers                6316032 bytes
Database mounted.
Database opened.

2)重新模拟同一会话中未提交事务
sys@ora10g> select * from t;

         X
----------
         1

sys@ora10g> delete from t;

1 row deleted.

3)确认immediate选项无法关闭数据库
sys@ora10g> shutdown immediate;
ORA-01097: cannot shutdown while in a transaction - commit or rollback first

4)使用abort选项关闭数据库
sys@ora10g> shutdown abort;
ORACLE instance shut down.
sys@ora10g>

可见abort选项的“闪电断电式”关闭数据库的方法是毫无任何羁绊的!

5.小结
这里给出的是一个现象和事实。从中可以体会出不同关闭数据库方式的细微差别(这里仅仅讨论了immediate和abort选项)。

Good luck.

secooler
11.01.08

-- The End --


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-683634/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/519536/viewspace-683634/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值