仓酷云

标题: MYSQL教程之假如处置Oracle数据库中的坏块成绩 [打印本页]

作者: 愤怒的大鸟    时间: 2015-1-16 22:43
标题: MYSQL教程之假如处置Oracle数据库中的坏块成绩
怀疑这些功能在MySQL5.0中的成熟性。充其量它们在MySQL中被支持的时间也就一年左右,而在MySQL学习教程其他关系型数据库中则已经存在了近10年的时间。oracle|数据|数据库|成绩
Oracle的数据块有流动的格局和布局,分三层:Cachelayer、Transactionlayer和Datalayer.
对数据块举行读写操纵时,做分歧性反省:
–Blocktype
–DBA
–Scn
–Headerandtail
发明纷歧致,标志为坏块。

坏块有两种:物理坏块和逻辑坏块。

坏块发生的影响:数据字典表、回滚段表、一时段和用户数据表和索引。
使用报错:
–Ora-1578
–Ora-600andtracefileinbdumpdirectory
第一个参数[2000]-[8000]
Rangeblocklayer
-------------------------------------------
Cachelayer2000–4000
Transactionlayer4000–6000
Datalayer6000-8000

坏块发生的缘故原由:
Oracle挪用尺度C的体系函数,对数据块举行读写操纵:
-BadI/O,H/W,Firmware.
-OperatingSystemI/Oorcachingproblems.
-Memoryorpagingproblems.
-Diskrepairutilities.
-Partofadatafilebeingoverwritten.
-Thirdpartsoftwareincorrectlyattemptingtoaccessoracleusedheap.
-Oracleoroperatingsystembug.

表中坏块的处置办法:
(1).搜集相干信息:
Ora-1578file#(RFN)block#
Ora-1110file#(AFN)block#
ora-600file#(AFN)block#
selectfile_name,tablespace_name,file_id“AFN”,relative_fno“RFN”fromdba_data_files;
selectfile_name,tablespace_name,file_id,relative_fno“RFN”fromdba_temp_files;
9itempfilesAFN=file_id+valueofdb_files
(2).断定受影响的工具:
SELECTtablespace_name,segment_type,owner,segment_name,partition_nameFROMdba_extentsWHEREfile_id=<AFN>and<BL>betweenblock_idANDblock_id+blocks-1;
Ifontempfile,nodatareturn;
(3).依据工具范例,断定处置办法:
Objectsofsys
rollback
Temporarysegment
Indexandindexpartition
Cluster|
Partition|===>表中坏块的处置
Table|
(4).选择符合的办法急救表中的数据:
Recoverdatafile
Recoverblockonly(9i)
经由过程ROWIDRANGESCAN保留数据
利用DBMS_REPAIR
利用EVENT

表中坏块的处置办法一:恢单数据文件
数据库为回档体例,有完全的物理备份
OFFLINEtheaffecteddatafile
ALTERDATABASEDATAFILEname_fileOFFLINE;
保留有坏块的文件,RESTORE备份。
ifdifferentfromtheoldlocation
ALTERDATABASERENAMEFILEold_nameTOnew_name;
Recoverthedatafile
RECOVERDATAFILEname_of_file;
Onlinethefile/s
ALTERDATABASEDATAFILEname_of_fileONLINE;

表中坏块的处置办法二:blockrecover
请求
(1).数据库9.2
(2).catalog和rman
(3).数据库为回档体例,有完全的物理备份
(4).利用RMAN的BLOCKRECOVER命令
Rman>run{blockrecover
datafile3block4,5;}
能够强迫利用某个SCN号之前的备份,恢单数据块。
Rman>run{blockrecover
datafile3block4,5restoreuntilsequence7402;}

表中坏块的处置办法三:ROWIDRANGESCAN
利用DBMS_ROWID断定坏块的ROWIDRANGE
LOW_RIDINSIDEthecorruptblock:
SELECTdbms_rowid.rowid_create(1,<OBJ_ID>,<RFN>,<BL>,0)fromDUAL;
HI_RIDAFTERthecorruptblock:
dbms_rowid.rowid_create(1,<OBJ_ID>,<RFN>,<BL>+1,0)fromDUAL;
建一个一时表
CREATETABLEsalvage_tableASSELECT*FROMcorrupt_tabWhere1=2;
保留未破坏的数据
INSERTINTOsalvage_tableSELECT/*+ROWID(A)*/*FROM<owner.tablename>AWHERErowid<<low_rid>;
INSERTINTOsalvage_tableSELECT/*+ROWID(A)*/*FROM<owner.tablename>AWHERErowid>=<hi_rid>;
重修table,index,foreignconstraintable.

表中坏块的处置办法四:add10231event
在session或database级设10231event,做全表扫描时,能够跳过坏块.
Sessionlevel:
ALTERSESSIONSETEVENTS10231TRACENAMECONTEXTFOREVER,LEVEL10;
CREATETABLEsalvage_empASSELECT*FROMcorrupt_emp;
databaselevel:
event="10231tracenamecontextforever,level10"

表中坏块的处置办法五:dbms_repair
标志有坏块的表,做全表扫描时,能够跳过坏块.
ExecuteDBMS_REPAIR.SKIP_CORRUPT_BLOCKS(<schema>,<tablename>);
保留表中数据
EXPORTthetable.
CREATETABLEsalvage_empASSELECT*FROMcorrupt_emp;

表中坏块的处置办法六:反省索引
反省表上的索引和primarykeyforeignkey束缚
SELECTowner,index_name,index_typeFROMdba_indexesWHEREtable_owner=‘xxxxANDtable_name=xxxx;
SELECTowner,constraint_name,constraint_type,table_nameFROMdba_constraintsWHEREowner=xxxANDtable_name=xxxAND
constraint_type=P;
SELECTowner,constraint_name,constraint_type,table_nameFROMdba_constraintsWHEREr_owner=xxxxANDr_constraint_name=<CONSTRAINT-NAME>;

怎样事后发明坏块:
(1).Exportutility
expsystem/managerfull=ylog=exp_db_chk.logfile=/dev/nullvolsize=100g
doesnotdetectdiskcorruptionsabovethehighwatermark
doesnotdetectcorruptionsinindexes
doesnotdetectallcorruptionsinthedatadictionary
ANALYZETABLEtablenameVALIDATESTRUCTURECASCADE
performstheblockchecks,butdoesNOTmarkblocksascorrupt.
Italsochecksthattableandindexentriesmatch.
AnyproblemsfoundarereportedintotheusersessiontracefileinUSER_DUMP_DEST.
能够按期对一些主要的表作反省.
(2).DBV反省数据文件
showparameterdb_block_size
selectBYTES/2048fromv$datafilewhereFILE#=5;
dbvfile=/dev/rdsk/r1.dbfblocksize=2048END=5120
DBVexpectsafilenameextension.Ifonrawdev
ln-s/dev/rdsk/mydevice/tmp/mydevice.dbf
NowuseDBVagainst/tmp/mydevice.dbf
这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。
作者: 分手快乐    时间: 2015-1-19 21:46
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
作者: 简单生活    时间: 2015-1-25 22:32
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
作者: 若天明    时间: 2015-2-4 09:29
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
作者: 不帅    时间: 2015-2-9 21:22
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
作者: 兰色精灵    时间: 2015-2-27 22:00
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
作者: 活着的死人    时间: 2015-3-9 14:49
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
作者: 谁可相欹    时间: 2015-3-16 23:54
我个人认为就是孜孜不懈的学习
作者: 莫相离    时间: 2015-3-23 07:16
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2