MYSQL网页设计ORACLE坏块(ORA-01578)处置办法
客户还是可以使用DBaaS系统所能提供的所有能力。数据库云服务消除了组织对专职人员、本地数据库存储设备的需要。他们不必安装、配置和维护任何软硬件。oracleORACLE的坏块即ORA-01578错,同时还大概陪伴ORA-01110错,这类毛病关于初学者或是那些没有理论履历的dba来讲无疑是很辣手的。我现在就深受其害,写下这篇文章则是但愿对人人有所匡助。
1、出成绩时的情形
1、我的一个计费的进库的历程停失落,报的即是ORA-01578错,对使用相干的表tg_bill03做SQL>selectfromtg_cdr03whererownum<10;如许是能够的,但做SQL>selectcount(*)fromtg_bill03;时则报ORA-01578错。
2、反省alter<sid>.log中看到一几条报错信息:
Errorsinfile/oracle816/app/admin/billing/udump/ora_7281_billing.trc:
ORA-01578:ORACLEdatablockcorrupted(file#126,block#88490)
ORA-01110:datafile126:/dev/vgjf7/rdata471
2、过后剖析发生这类成绩的缘故原由
1、十之八九这个Oracle的数据库server翻开了异步I/O(asyncio)或增添了写历程。
2、硬件的I/O呈现了毛病。
3、操纵体系的I/O或缓存呈现我成绩,好比操纵体系关于异步I/O的补钉没有打。
4、手动的修正了数据文件中的数据,我摹拟这个毛病用的即是这类体例。
3、办理办法
这类成绩的办理办法是良多的,假如你用的是回档体例,则能够基于工夫点恢复来办理。不外这里先容一种对照便利的办理体例,由于我的库没有开回档。Metaline关于ORA-01578的笔墨也良多,不外我看事后总以为都不那末有用,不克不及办理实践的成绩。
1、办理这类成绩的第一步是起首你要断定是甚么段、哪一个段坏了,是索引仍是表?
A、翻开alter<sid>.log,找到ORA-01578的报错信息,并纪录下file#及block的值,我这里是126和88490。
B、实行以下语句看哪一个段坏了
SQL>Select*fromdba_extents
2wherefile_id=<F>
3and<B>betweenblock_idandblock_id+blocks-1;
这里的F指的是file#,B指的是block#
我的显现了局指出是tg_bill03呈现了坏块。
2、假如断定上去坏的是索引段,这时候你就能够轻舒一口吻了,只需把这个索相删除然后重修一下就能够了,假如呈现坏的是表段,则应往下走了。
3、纪录下这个表的建表语句
为我便利,倡议利用PL/SQLDeveloper来完成,假如你没有能够在http://www.allroundautomations.com/plsqldev.html往下载一个,操纵步骤是如许的。
A、以表的owner用pl/sqldeveloper连进oracle
B、在左面的树状栏中找到这个表tg_bill03,右击该表->view->ViewSQL,纪录下sql,以备以下步骤中重修索引。
4、实践处置了,以我的谁人表为例
A、以tg_bill03的owner连进oracle
B、利用诊断事务10231
SQL>ALTERSYSTEMSETEVENTS‘10231tracenamecontextforever,level10’;
C、创立一个一时表tg_bill_tmp的表中除坏块的数据都检索出来
SQL>CREATETABLEtg_bill03_tmpasselect*fromtg_bill03;
C、改名原表,并把tg_bill03_tmp为tg_bill03
SQL>altertabletg_bill03renametotg_bill03_bak;
SQL>altertabletg_bill03_tmptotg_bill03;
D、在tg_bill03上从头创立索引、束缚、受权、trigger等工具
E、使用表之间的营业干系,把坏块中的数据补足。
4、怎样只管削减成绩及成绩的丧失呢
剖析了发生成绩的缘故原由,我以为能够接纳以下几个措施
1、在为进步功能为操纵体系翻开异步I/O时,必定要与oracle及操纵体系手艺撑持接洽把操纵体系与异步I/O相干的补钉要打全。
2、制订一个优秀的备份恢复战略,最好有表的exp备份
3、要实时的反省硬件的形态,实时改换驱动器部件。
结篇:实在坏块触及的内容良多的,假如坏块产生的回滚段表空间、数据字典(system表空间)或联机日记,这些处置都是特难的,必要与oracle的supporter接洽。不外这些方面的坏的机率很少很少的,在今后的文章中我也会做先容。
曾经的功能列表可能会迅速变得过时了。而且,有些功能对有的应用程序非常重要,但是对别的应用程序则不一定。 原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。 两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书 始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。 财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的.. 一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。 其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?! 很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。 你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
页:
[1]