今天在实验的机子的oracle上的一张表中批量插入5000000条记录,在插入过程中途发生了表空间不够的情况,导致插入终止,在表空间上添加一个数据文件,对表中的数据进行查询,发生如下的错误:

SQL> select count(*) from book;

select count(*) from book

ORA-01578: ORACLE data block corrupted (file # 9, block # 45729)

ORA-01110: data file 9: 'F:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CREDIT'

这是典型的数据库损坏的提示信息,解决方法:

当Oracle数据库出现坏块时,Oracle会在警告日志文件(alert_SID.log)中记录坏块的信息:

ORA-01578: ORACLE data block corrupted (file # 7, block # ;)

ORA-01110: data file ;: '/oracle1/oradata/V920/oradata/V816/users01.dbf’

其中,<AFN>代表坏块所在数据文件的绝对文件号,;代表坏块是数据文件上的第几个数据块

出现这种情况时,应该首先检查是否是硬件及操作系统上的故障导致Oracle数据库出现坏块。在排除了数据库以外的原因后,再对发生坏块的数据库对象进行处理。

1.确定发生坏块的数据库对象

SELECT tablespace_name,

segment_type,

owner,

segment_name

FROM  dba_extents

WHERE  file_id = ;

AND ; between block_id AND block_id+blocks-1;

2.决定修复方法

如果发生坏块的对象是一个索引,那么可以直接把索引DROP掉后,再根据表里的记录进行重建;

如果发生坏块的表的记录可以根据其它表的记录生成的话,那么可以直接把这个表DROP掉后重建;

如果有数据库的备份,则恢复数据库的方法来进行修复;

如果表里的记录没有其它办法恢复,那么坏块上的记录就丢失了,只能把表中其它数据块上的记录取出来,然后对这个表进行重建。

3.用Oracle提供的DBMS_REPAIR包标记出坏块

exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(' ','');

4.使用Create table as select命令将表中其它块上的记录保存到另一张表上

create table corrupt_table_bak

as

select * from corrupt_table;

5.用DROP TABLE命令删除有坏块的表

drop table corrup_tatble;

6.用alter table rename命令恢复原来的表

alter table corrupt_table_bak

rename to corrupt_table;

7.如果表上存在索引,则要重建表上的索引

oracle block corrupted,ORA-01578: ORACLE data block corrupted (file # 9, block # 45729)相关推荐

  1. oracle修改数据前备份,Oracle 之利用BBED修改数据块SCN—-没有备份数据文件的数据恢复...

    测试环境 OS:redhat6.6 oracle:12.1.0.2 BBED(OracleBlockBrowerandEDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle ...

  2. Oracle 错误代码(ORA)对照表

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  3. Oracle 12C 利用Rman Duplicate搭建 Data Guard

    环境(备库只需要安装数据库软件): 主库:192.168.1.100        OS: CentOS 7.3 X64        DB:    ORACLE12.2.0.1        SID ...

  4. Oracle的tnsnames.ora配置(PLSQL Developer)

    首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...

  5. oracle错误01653,oracle 10g 错误 ORA 01653 的解决过程

    oracle 10g 错误 ORA 01653 的解决过程 早上用户反应在操作用友NC时报错 ORA-01653 ,详细信息:ORA-01653: 表 NCV35.GL_DETAIL 无法通过 102 ...

  6. Oracle Livelabs实验: Setting Up Active Data Guard For On-Premises

    本文是Oracle LiveLabs实验:Setting Up Active Data Guard For On-Premises 的过程记录. 实验步骤请参考这里. 因为是利用你自己的OCI云环境搭 ...

  7. oracle 重建spfile,linux下oracle重建spfileorcl.ora

    数据库默认用spfile启动,可以指定用pfile启动,再创建spfile,不启动也可以用pfile创建spfile pfile在/u01/app/oracle/admin/orcl/pfile/in ...

  8. Oracle 11g Release 1 (11.1) Data Pump 导出模式

    http://docs.oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm#i1007114 本文内容 Data Pump 提供不同的导出模 ...

  9. Oracle 11g Release 1 (11.1) Data Pump 导入模式

    http://docs.oracle.com/cd/B28359_01/server.111/b28319/dp_import.htm#i1007324 本文内容 导入最显着的特点之一就是导入的模式, ...

最新文章

  1. 大型AI已有自主意识了?LeCun开喷Open AI首席科学家
  2. Spring Cloud 加盟重量级成员Spring Cloud Alibaba,打造更符合中国国情的微服务体系...
  3. Springboot的slf4j的配置文件模板
  4. import javax.servlet.http.HttpServletRequest 提示错误
  5. .NET Windows服务应用程序
  6. “当了十年IT程序员,我转型做自动驾驶开发的这五年”
  7. 【iOS发展-44】通过案例谈iOS重构:合并、格式化输出、宏观变量、使用数组来存储数据字典,而且使用plist最终的知识...
  8. 来自运维伪大佬的叨叨
  9. python下载大文件mp4_python 实现视频流下载保存MP4的方法
  10. 加权最小二乘(wls)滤波算法原理及实现
  11. python同时赋值_Python 中变量赋值传递时的引用和拷贝
  12. w ndows7旗舰版网卡驱动,Win7网卡驱动64位离线安装包 免费版
  13. MATLAB符号运算——微分
  14. 百度 图像识别Api logo识别 基于java的Demo
  15. 建模方法(二)-组合优化问题的定义
  16. matlab的罗马数字怎么写好看图解,【我想知道1—100的罗马数字怎样写啊就是ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪ这些等】作业帮...
  17. Excel中怎么把经纬度记录转成经纬度数值形式
  18. MySQL 中的 “My” 是什么意思?
  19. 白话智能锁—深度分析干电池漏液问题
  20. 面试笔记:面经-瓜子

热门文章

  1. java模拟加速匀速减速_Android学习之 动画加速减速 匀速控制
  2. SQL Server 2008学习视频资源下载
  3. QN9021_Drive_Demo
  4. 【托业】新托业全真题库---TEST1
  5. Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】
  6. 阿里,百度,腾讯招聘 Java 程序员的技术标准,你达到要求了吗?
  7. upper_bound()函数的使用
  8. QNX Neutrino 虚拟机
  9. 一步一步学Bootstrap 4(2)-- PhotoX项目
  10. python可视化51|最常用4个分组( Groups)关系图