ORA-01097错误解决办法及探索shutdown immediate
很晚了要关机睡觉了,先把oralce 数据库关闭,结果出现下面的错误。
SQL> shutdown immediate
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
提示说在一个事物未提交或者回滚前不能shutdown.我才想到我对一个测试用的表,进行了
下面的更新而没有提交。
SQL> update test01
2 set (id,name)
3 = ( select 102,'huawei' from dual)
4 where id=100;
1 row updated.
现在来提交下。
SQL> commit
2 ;
Commit complete.
再次尝试关闭数据库OK 了。
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
虽然这个错误很简单,但是不能放过每一次学习的机会,趁此学些下shutdown immediate。
正如它的名字使用这种方式关闭数据库是比较快速的。并且在下次重启的时候不需要做实例
恢复。
使用shutdown immediate 会经历以下的情景。
1、不允许对数据库发起新的连接,会话不能发起新的事务。
2、没有提交的事务要先提交或者回滚。(正如你所看到了oracle 不会自动的完成该项工作
所以你需要自己来提交或者回滚事务)不过出现这种情况,可能会延迟关闭数据库的时间
具体取决于事务的长度与数量。
3、 oracle 数据库会主动的断开与用户的连接。
第二天开机以后我模拟了昨天关机的情景,是为了想证明oracle 会不会自动的帮我们做提交
或者回滚。先往测试表中插入一条记录,不提交。
SQL> insert into test01
2 values (103,'newland');
1 row created.
尝试关机。
SQL> shutdown immediate
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
再关
SQL> shutdown immediate
再关。。。
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
再关。。。。。。。
SQL> shutdown immediate
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
显然oracle 不会自动的帮会话提交事务或者回滚事务。