今天在实验的机子的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. 在Asp.Net MVC中设定site路径所对应的默认action
  2. 苹果向App Analytics添加新的指标和特性
  3. linux c 通过 /proc 获取 pid 进程 列表
  4. python unpack函数_Python numpy.unpackbits函数方法的使用
  5. mxnet自定义训练日志
  6. HD2094_产生冠军
  7. 对比excel,用python绘制柱状图时添加table数据表
  8. UE3 内存使用和分析
  9. CentOS 安装VNC
  10. “单口相声”回归!罗永浩要开发布会了:黑科技!不售票!
  11. 数据中台是什么意思?如何建设数据中台?
  12. Jquery Ajax 请求示例
  13. 2个表 遍历 组合_7.2 图的存储结构(2)
  14. mysql 重放binlog_【MySQL】老版本重放binlog的罕见报错
  15. 计算机网络技术毕业生实习报告_20XX计算机网络技术毕业生实习报告1000字
  16. CEOI2017 Mousetrap
  17. learning ddr tRP and tRP tRTP CL tRAS
  18. 关于Pidgin和webqq
  19. 解决本地网络适配器的驱动程序可能出现问题(未连接,连接可用或连接不可用)
  20. 2021年学web前端需要什么学历?

热门文章

  1. 新工科背景下计算机类专业英语教学,外国语学院教师参加“新工科背景下高校外语教学改革与专业建设高端论坛”...
  2. openssl 从证书中提取公钥
  3. 用MATLAB设计FIR数字滤波器实验,基于Matlab的FIR数字滤波器设计
  4. 你想不到的方法!!win10系统cortana小娜无法连接网络!
  5. Scrapy定制管道爬取pexels.com网站信息
  6. 分享几个相见恨晚的图片素材网站及设计师灵感网站
  7. 转型并非放弃 诺基亚年底宣布MeeGo1.1
  8. 程序员在家办公007
  9. Android 蓝牙APP设计
  10. 全场景覆盖的华为云游戏文娱解决方案