ORA-01097错误解决办法及探索shutdown immediate

2024-05-06 00:32

本文主要是介绍ORA-01097错误解决办法及探索shutdown immediate,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


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 不会自动的帮会话提交事务或者回滚事务。

【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选项)。


这篇关于ORA-01097错误解决办法及探索shutdown immediate的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/963064

相关文章

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

Pycharm安装报错:Cannot detect a launch configuration解决办法

《Pycharm安装报错:Cannotdetectalaunchconfiguration解决办法》本文主要介绍了Pycharm安装报错:Cannotdetectalaunchconfigur... 本文主要介绍了Pycharm安装报错:Cannot detect a launch configuratio

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用