仓酷云

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

[学习教程] MSSQL网页设计回滚段破坏的修复实例

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

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

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

x
如果WHERE子句的查询条件里使用比较操作符LIKE和REGEXP,MySQL只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是LIKEabc%‘,MySQL将使用索引;如果查询条件是LIKE%abc’,MySQL将不使用索引。
头几天同事打德律风过去,说公司的开辟库天天逝世4,5次
恰好明天回公司,顺路看了一下

反省alertlog,发明成百上千的报错,全体是:
ErrorsinfileD:oracleadmincrootdumpcrootSMON.TRC:
ORA-01578:ORACLEdatablockcorrupted(file#22,block#14715)
ORA-01110:datafile22:D:ORACLEORADATACROOTTRBS1.ORA

file#=22的文件是回滚段表空间中的一个数据文件,很分明回滚段数据块破坏了。
可是数据库还算能用,能够一般翻开,可是没法一般封闭,
封闭的时分报:
Shuttingdowninstance(immediate)
Licensehighwatermark=90
MonOct2512:03:232004
ORACLEInstancecroot(pid=6)-Error1578encounteredwhilerecoveringtransaction(2,50).
MonOct2512:03:232004
ErrorsinfileD:oracleadmincrootdumpcrootSMON.TRC:
ORA-01578:ORACLEdatablockcorrupted(file#22,block#14715)
ORA-01110:datafile22:D:ORACLEORADATACROOTTRBS1.ORA

然后全部实例就crash了

反省坏块地点的工具,发明是RBS01,再反省dba_rollback_segs视图,发明除RBS01是online形态,别的的都是partitialavailable形态,手工将其他的回滚段online今后,就没法再次offline了,立即有active的transaction占有回滚段,停失落了一切的别的会话,仍旧是这类情形,检察v$trasaction视图,已没有任何纪录显现另有正在运转的事件了。

这类情形,没法一般地drop失落回滚段,天然也就没举措drop失落回滚段表空间。

因为是开辟库,基本就是处于非回档形式,也没有甚么准时的备份,以是恢单数据库也不必想了。

不外也幸亏是开辟库,那些事件丢了也基本无所谓。
因而,封闭数据库,修正初始化参数文件,增加隐含参数:
_corrupted_rollback_segments=(rbs1,rbs2,rbs4,rbs5,rbs6,rbs7,rbs8,rbs9,rbs10)

全体标记为corrupted的,然后启动数据库到mount形态
drop失落file#=22的数据文件
然后recoverdatabase;alterdatabaseopen;

数据库翻开今后,再次反省v$rollname视图,发明只要SYSTEM表空间中的回滚段存在了,OK,再往dba_rollback_segs视图反省形态,发明除SYSTEM回滚段别的的都处于needrecover形态,好,没错。入手下手删除。

间接drop失落一切的回滚段,drop失落回滚段表空间,然后创立新的表空间,创立新的回滚段,将一切回滚段online,两头出了个小插曲,前面提到。

最初,一般封闭数据库,修正init参数,将_corrupted_rollback_segments这行正文失落,最初一般启动数据库。任意找几张表,作几个insert测试了一下,没有成绩,OK,修复完成。

小插曲:创立新的回滚段时出了一个成绩,延误了一段工夫,由于是8i的库,system表空间是DMT的,以是回滚段表空间也必需是DMT的,入手下手依照习气创立了一个LMT的表空间,然后创立回滚段的时分老是报错,说非体系回滚段没法利用SYSTEM表空间,想了好一阵,才想起DMT和LMT的这回事儿,然后drop失落新建的LMT表空间,创立了一个DMT的表空间,再从头创立回滚段,没有成绩了。

从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-17 12:24:31 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
只想知道 该用户已被删除
板凳
发表于 2015-1-17 17:55:40 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
小魔女 该用户已被删除
地板
发表于 2015-1-21 05:03:06 | 只看该作者
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
老尸 该用户已被删除
5#
 楼主| 发表于 2015-1-30 08:11:22 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
兰色精灵 该用户已被删除
6#
发表于 2015-2-6 09:15:17 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
若相依 该用户已被删除
7#
发表于 2015-2-15 21:25:49 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
再现理想 该用户已被删除
8#
发表于 2015-3-11 20:00:44 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
活着的死人 该用户已被删除
9#
发表于 2015-3-19 10:53:58 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
山那边是海 该用户已被删除
10#
发表于 2015-3-27 20:53:13 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 09:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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