仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 693|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL教程之假如处置Oracle数据库中的坏块成绩

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:43:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
怀疑这些功能在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:56 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
简单生活 该用户已被删除
板凳
发表于 2015-1-25 22:32:28 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
若天明 该用户已被删除
地板
发表于 2015-2-4 09:29:30 | 只看该作者
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
不帅 该用户已被删除
5#
发表于 2015-2-9 21:22:03 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
兰色精灵 该用户已被删除
6#
发表于 2015-2-27 22:00:36 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
活着的死人 该用户已被删除
7#
发表于 2015-3-9 14:49:21 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
谁可相欹 该用户已被删除
8#
发表于 2015-3-16 23:54:45 | 只看该作者
我个人认为就是孜孜不懈的学习
莫相离 该用户已被删除
9#
发表于 2015-3-23 07:16:26 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 03:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表