MYSQL网站制作之ORACLE联机日记文件丧失或破坏的处置方...
MySQL的双许可模式意味着,那些希望对数据库具有额外控制的人可以直接从数据库厂商那儿得到帮助。MySQLAB公司提供了支持和维护服务,诸如代码更新和补丁修补服务等,每年订阅费为大约3000美元。oracle履历总结:
联机日记分为以后联机日记和非以后联机日记,非以后联机日记的破坏是对照复杂的,一样平常经由过程clear命令就能够办理成绩。
破坏非以后联机日记:
1、启动数据库,碰到ORA-00312orORA-00313毛病,如:
ORA-00313:openfailedformembersofloggroup4ofthread1
ORA-00312:onlinelog3thread1:/opt/oracle/db04/oradata/ORCL/redo03.log
从这里我们晓得日记组1的数据文件破坏或丧失了
从报警文件能够看到更具体的信息
2、检察V$log视图:
SQL>selectgroup#,sequence#,archived,statusfromv$log;
GROUP#SEQUENCE#ARCSTATUS
---------------------------------------
154YESINACTIVE
255NOCURRENT
353YESINACTIVE
能够晓得,该组长短以后形态,并且已回档。
3、用CLEAR命令重修该日记文件
SQL>alterdatabaseclearlogfilegroup3;
假如是该日记组还没有回档,则必要用
SQL>alterdatabaseclearunarchivedlogfilegroup3;
4、翻开数据库,从头备份数据库
SQL>alterdatabaseopen;
申明:
1)、假如破坏的长短以后的联机日记文件,一样平常只必要clear就能够重修该日记文件,可是假如该数据库处于回档形态但该日记还没有回档,就必要强行clear。
2)、倡议clear,出格是强行clear后作一次数据库的全备份。
3)、此办法合用于回档与非回档数据库。
破坏以后联机日记:
回档形式下以后日记的破坏有两种情形,
1、是数据库是一般封闭,日记文件中没有未决的事件必要实例恢复,以后日记组的破坏就能够间接用alterdatabaseclearunarchivedlogfilegroupn来重修。
2、是日记组中有举动的事件,数据库必要媒体恢复,日记组必要用来同步,有两种弥补举措
A.最好的举措就是经由过程不完整恢复,能够包管数据库的分歧性,可是这类举措请求在回档体例下,而且有可用的备份
B.经由过程强迫性恢复,可是大概招致数据库纷歧致。
上面分离用来讲明这两种恢复办法
5.1.2.1经由过程备份来恢复
1、翻开数据库,会碰到一个相似的毛病
ORA-00313:openfailedformembersofloggroup1ofthread1
ORA-00312:onlinelog1thread1:D:ORACLEORADATATESTREDO01.LOG
ORA-27041:unabletoopenfile
OSD-04002:unabletoopenfile
O/S-Error:(OS2)体系找不到指定的文件
2、检察V$log,发明是以后日记
SQL>selectgroup#,sequence#,archived,statusfromv$log;
GROUP#SEQUENCE#ARCHIVEDSTATUS
--------------------------------------------
11NOCURRENT
22YESINACTIVE
33YESINACTIVE
3、发明clear不乐成
SQL>alterdatabaseclearunarchivedlogfilegroup1;
alterdatabaseclearunarchivedlogfilegroup1
*
ERRORatline1:
ORA-01624:log1neededforcrashrecoveryofthread1
ORA-00312:onlinelog1thread1:D:ORACLEORADATATESTREDO01.LOG
4、拷贝无效的数据库的全备份,其实不完整恢单数据库
能够接纳猎取比来的SCN的举措用untilscn恢复或用untilcnacel恢复
recoverdatabaseuntilcancel
先选择auto,只管恢复能够使用的回档日记,然后从头
recoverdatabaseuntilcancel
此次输出cancel,完成不完整恢复,也就是说恢复两次。
如:
SQL>recoverdatabaseuntilcancel;
Auto
……
SQL>recoverdatabaseuntilcancel;
Cancel;
5、使用alterdatabaseopenresetlogs翻开数据库
申明:
1、这类举措恢复的数据库是分歧的不完整恢复,会丧失以后联机日记中的事件数据
2、这类办法合适于回档数据库而且有可用的数据库全备份。
3、恢复乐成以后,记得再做一次数据库的全备份。
4、倡议联机日记文件必定要完成镜相在分歧的磁盘上,制止这类情形的产生,由于任何数据的丧失关于临盆来讲都是不允许的。
假如没有备份,举行强迫性恢复
1、翻开数据库,会碰到一个相似的毛病
ORA-00313:openfailedformembersofloggroup1ofthread1
ORA-00312:onlinelog1thread1:D:ORACLEORADATATESTREDO01.LOG
ORA-27041:unabletoopenfile
OSD-04002:unabletoopenfile
O/S-Error:(OS2)体系找不到指定的文件
2、检察V$log,发明是以后日记
SQL>selectgroup#,sequence#,archived,statusfromv$log;
GROUP#SEQUENCE#ARCHIVEDSTATUS
--------------------------------------------
11NOCURRENT
22YESINACTIVE
33YESINACTIVE
3、发明clear不乐成
SQL>alterdatabaseclearunarchivedlogfilegroup1;
alterdatabaseclearunarchivedlogfilegroup1
*
ERRORatline1:
ORA-01624:log1neededforcrashrecoveryofthread1
ORA-00312:onlinelog1thread1:D:ORACLEORADATATESTREDO01.LOG
4、把数据库down失落
SQL>shutdownimmediate
5、在init<sid>.ora中到场以下参数
_allow_resetlogs_corruption=TRUE
6、从头启动数据库,使用untilcancel恢复
SQL>recoverdatabaseuntilcancel;
Cancel
假如堕落,不再剖析,收回
SQL>alterdatabaseopenresetlogs;
7、数据库被翻开后,即刻实行一个fullexport
8、shutdown数据库,往失落_all_resetlogs_corrupt参数
9、重修库
10、import并完成恢复
11、倡议实行一下ANALYZETABLE...VALIDATESTRUCTURECASCADE;
申明:
1、该恢复办法是没有举措以后的恢复办法,一样平常情形下倡议不要接纳,由于该办法大概招致数据库的纷歧致
2、该办法也丧失数据,可是丧失的数据没有上一种办法的数据多,次要是未写进数据文件的已提交或未提交数据。
3、倡议乐成后严厉实行以上的7到11步,完成数据库的反省与剖析
4、全体完成后做一次数据库的全备份
5、倡议联机日记文件必定要完成镜相在分歧的磁盘上,制止这类情形的产生,由于任何数据的丧失关于临盆来讲都是不允许的。
解决方案提供商应记住DBaaS通常仅仅是解决方案的一部分。客户之所以与他们的解决方案提供商协同工作,不仅是因为他们出售的产品,而且还因为他们所提供的服务。 不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理? 备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。 having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。 个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。 另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程); 索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。 但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
页:
[1]