在演示事务的read only mode 的时候,因为一个错误有了这个意外的收获。场景是这样的:
在session 1 中执行了如下的语句。
SQL> set transaction read only;
Transaction set.
SQL> select count(*) from employees;
COUNT(*)
----------
107

在session 2 中执行如下的语句。
SQL>  insert into employees
2  (employee_id, last_name, email,
3  hire_date, job_id) values (210,
4  'Hintz', 'JHINTZ', SYSDATE,
5  'SH_CLERK');
insert into employees
*
ERROR at line 1:
ORA-01502: 索引 'HR.EMP_EMAIL_UK' 或这类索引的分区处于不可用状态

嗯,这是因为以前我把这个索引的状态alter 成unusable了,好吧,我们rebulid。
SQL> alter index emp_email_uk rebuild;
Index altered.

SQL>  insert into employees
2  (employee_id, last_name, email,
3  hire_date, job_id) values (210,
4  'Hintz', 'JHINTZ', SYSDATE,
5  'SH_CLERK');

1 row created.
SQL> commit;
Commit complete.

现在貌似一切很正常,返回到session 1 中执行如下的语句。
SQL> select count(*) from employees;
select count(*) from employees
*
ERROR at line 1:
ORA-08176: 一致读取失败; 回退数据不可用

正常情况下,不应该啊,查看下undo 的保留时间,900s 足够了。也不可能
是undo tablespace 的空间不够,因为我的实验系统中每秒的事务量几乎为零。
就算空间不够也应该报“snapshot too old”的错。
SQL> show parameter undo
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ---------
undo_management                      string                 AUTO
undo_retention                       integer                900
undo_tablespace                      string                 UNDOTBS1

不由的让人想到上面的alter index 的语句。我们试着重现错误。
在session 1 中执行如下的语句.
SQL> set transaction read only;
Transaction set.
SQL> select count(*) from employees;
COUNT(*)
----------
107

在session 2 中执行如下的语句。
SQL> alter index emp_email_uk unusable;
Index altered.
SQL>  INSERT INTO employees
2  (employee_id, last_name, email,
3  hire_date, job_id) VALUES (210,
4  'Hintz', 'JHINTZ', SYSDATE,
5  'SH_CLERK');
INSERT INTO employees
*
ERROR at line 1:
ORA-01502: 索引 'HR.EMP_EMAIL_UK' 或这类索引的分区处于不可用状态
SQL> alter index emp_email_uk rebuild;
Index altered.

返回到session 1 中执行如下的语句。
SQL> select count(*) from employees;
select count(*) from employees
*
ERROR at line 1:
ORA-08176: 一致读取失败; 回退数据不可用

--至此错误重现了。
通过重现错误,我们已经知道症结所在的,所以以后我们需要避免这种情况的发生。对这个ORA-08176 错误也有了更多的认识。最后我们来看看这个错误代码的信息:
ORA-08176: cannot continue consistent read for the table/index - no undo
records
Cause: Oracle encountered an operation that does not generate undo records.
For example, the operation might have been an attempt to create an index by
performing a direct load or executing a discrete mode transaction.
导致这个问题的根本原因是上面加黑的那句话。

转载于:https://www.cnblogs.com/zhjh256/p/10772261.html

ORA-08176 错误的一个案例相关推荐

  1. 「C#」Bitmap/Image.Save()报错“GDI+ 中发生一般性错误”的一个案例总结

    先说一下遇到这个错误的地方 static void Main(string[] args) {string imgPath = "C:\\Users\\raink\\Desktop\\微信图 ...

  2. 易于使用的人工智能_需求分析:如何使用这种易于启动的方法+一个案例研究...

    易于使用的人工智能 by Turgay Çelik 由TurgayÇelik 需求分析:如何使用这种易于启动的方法+一个案例研究 (Requirement Analysis: how to use t ...

  3. 采用ODC改善软件质量:一个案例研究

    采用ODC改善软件质量:一个案例研究 点击:265       更新时间:2007-7-17 11:39:42     作者:Yang Gu 出处:IBM   本文内容包括: 软件开发中典型的质量问题 ...

  4. JavaWeb-----Ajax异步请求 json对象 服务器如何返回json数据 使用ajax完成一个案例

    1. 回顾 1. servlet的生命周期: 2. filter: 过滤放行和拦截一些资源.比如:黑白名单,登录校验,编码设置等.    (1)创建一个类并实现Filter接口以及重写接口的抽象方法 ...

  5. java中502错误原因_Spring Boot连接超时导致502错误的实战案例

    Spring Boot连接超时导致502错误的实战案例,错误,时间,客户端,站长站,原因 Spring Boot连接超时导致502错误的实战案例 易采站长站,站长之家为您整理了Spring Boot连 ...

  6. 如何用Python操作Excel自动化办公?一个案例教会你openpyxl——读取数据

    欢迎大家关注我,我是拾陆,关注同名"二八Data" 数据分析工作最难搞的是处理数据的过程,不然不会有专门的ETL(数据抽取.转换.加载)工程师了.如果是企业级数据处理可能数据库直接 ...

  7. 一个案例,讲透如何用报表来管理质量

    一个案例教会你如何用报表管理质量, 实现卓越绩效! (一)企业背景 某家公司曾经是我们国家最大的煤机制造企业之一,煤炭行业曾经有一段是五年一个波动. 第一个高潮的时候,它很有钱,搞多元化,拼命投资,投 ...

  8. 零基础入门深度学习(二):用一个案例掌握深度学习方法

    导读 本课程是百度官方开设的零基础入门深度学习课程,主要面向没有深度学习技术基础或者基础薄弱的同学,帮助大家在深度学习领域实现从0到1+的跨越.从本课程中,你将学习到: 深度学习基础知识 numpy实 ...

  9. 【二】零基础入门深度学习:用一个案例掌握深度学习方法

    (给机器学习算法与Python学习加星标,提升AI技能) 作者 | 毕然  百度深度学习技术平台部主任架构师 内容来源 | 百度飞桨深度学习集训营 本文转自飞桨PaddlePaddle 导读 从本课程 ...

最新文章

  1. VM结构、GC工作机制详解
  2. java流方式接收pdf_java – 在Itext 7中,如何获取范围流来签署pdf?
  3. python shelve模块_python3 shelve模块的详解
  4. JavaScript--获取页面盒子中鼠标相对于盒子上、左边框的坐标
  5. 三维空间中曲线绕任意轴旋转所得的旋转曲面求法
  6. 计算机组成原理 第五章 中央处理器
  7. 越来越难?这届开发者学不会的计算机理论
  8. 内置Jetty配置JSP支持过程中的常见报错
  9. PHP大转盘中奖概率算法实例
  10. 分享修改Wke源代码后重新封装成Duilib控件的代码
  11. IDEA 当前项目jdk版本查看
  12. 《Mybatis 手撸专栏》第10章:使用策略模式,调用参数处理器
  13. 人工神经网络理论及应用,人工智能神经网络论文
  14. mysql怎么设置id自动编号_MySQL中实现ID编号自动增加的方法
  15. axure8屏幕滚动_Axure8原型教程:实现滚动效果(小技巧:隐藏滚动条)
  16. 安川A1000变频器通过DriveWizard Plus设置加减速时间
  17. 基于形状图像检索的曲率尺度空间描述符与傅立叶描述子的比较研究——18.07.14
  18. 推荐一个制作ios图标的网站
  19. java+vue的二维码生成,二维码上传服务器,二维码的压缩包下载
  20. 2022电大国家开放大学网上形考任务-开放英语1非免费(非答案)

热门文章

  1. 51nod 1011 最大公约数GCD
  2. GIT 团队协作快速入门使用
  3. c# applibrary实现一个Sheet表中存放多张DataTable数据
  4. 存储知识课堂(二):磁盘读写磁头揭秘
  5. C# Linq获取两个List或数组的差集交集
  6. 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
  7. 用正则表达式获取指定的字符串续_取出所有符合要求的字符串
  8. RT3070_STA_驱动移植文档
  9. RT2870 5370等移植(ARM,X86)
  10. Android socket 学习记录 之 执行new socket(ip, port)程序崩溃