oracle或者mysql误删数据文件急救_绿色软件之家

绿色软件之家:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置: 首页数据库Oracle → oracle或者mysql误删数据文件急救

oracle或者mysql误删数据文件急救

时间:2015-06-28 00:00:00 来源:绿色软件之家 作者:网管联盟 我要评论(0)

  当误删除曾经创建的数据库文件*.ora或*.dbf后,oralce是无法正常进入open状态.

  ssh

  SQL> startup

  ORACLE instance started.

  Total System Global Area 1610612736 bytes

  Fixed Size????? 2073088 bytes

  Variable Size 268439040 bytes

  Database Buffers?? 1325400064 bytes

  Redo Buffers?? 14700544 bytes

  Database mounted.

  ORA-01113: file 6 needs media recovery

  ORA-01110: data file 6: 'e:/test.DBF'

  unix

  你想要open数据库,oracle会打开所有文件,并进行一致性,所以会报上述错误。所以oracle只进入mount状态,这时oracle打开控制文件,读取database的结构信息。

  mysql

  ·情况之一:数据库没有归档和备份

  linux

  如果redo.log记录了该表空间对象的所有操作,并且没有被其他内容循环使用,则下面的语句是可以恢复的,但是实际应用中这种理想状态基本不存在。

  linux

  SQL>alter database datafile 6 offline drop;

  linux

  Database altered.

  mysql

  SQL> alter database create datafile 6 as 'e:/test.DBF';

  Database altered.

  SQL> recover datafile 6;

  mysql

  Media recovery complete. mysql

  SQL> alter database open;

  Database altered.

  oracle

  实际情况,无法依赖redo.log进行恢复的,这种情况只能损失部分数据换取数据库的运行正常。

  mysql

  实际情况会遇到如下问题: mysql

  SQL> recover datafile 6;

  ORA-00279: change 3975904895 generated at 12/07/2009 14:21:36 needed for thread 1

  ORA-00289: suggestion :

  /u01/app/oracle/flash_recovery_area/XXX/archivelog/2009_12_17/o1_mf_1_56424_%

  u_.arc

  ORA-00280: change 3975904895 for thread 1 is in sequence #56424 linux

  Specify log: {=suggested | filename | AUTO | CANCEL} linux

  所以目前的是,将数据文件offline drop后,将数据库open,然后查出哪些表在该数据文件所在的表空间上,检查这些表是否正常,如果不正常的话,则导出这些表的数据,然后在数据库上删 除表,然后将导出的数据再导入到oracle,这样该表就正常了。操作步骤,参考如下: ssh

  查找可能受影响的表:

  linux

  SELECT T.SEGMENT_NAME, T.OWNER, T.PARTITION_NAME

  FROM DBA_SEGMENTS T

  WHERE TABLESPACE_NAME = 'XXX'

  AND T.OWNER = 'XXX'

  AND SEGMENT_TYPE LIKE '%TABLE%';

  oracle

  导出该表的数据:

  mysql

  exp XXX/XXX@XXX file=/XXX/20091217_XXX.dmp log=/XXX/XXX.log tables=(XXX); ssh

  删除该表:

  unix

  drop table XXX;

  ssh

  导入该表数据:

  linux

  imp XXX/XXX@XXX file=/XXX/20091217_XXX.dmp tables=(XXX);

  oracle

  这样处理一定会损失部分数据的。导入完毕以后,查看该表是否正常,如有特殊需要则特殊处理。 oracle

  注:如果涉及到的表太多,不想一个一个表导出的话,那么就将这个库exp出来,然后drop掉该模式(并drop掉该模式下所有的对象),然后重建该模式以及给出大小适当的表空间,然后将导出的模式导入回去。

关键词标签:oracle,mysql

相关阅读

文章评论
发表评论

热门文章 Oracle中使用alter table来增加,删除,修改列的语法 Oracle中使用alter table来增加,删除,修改列的语法 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 误删Oracle数据库实例的控制文件 误删Oracle数据库实例的控制文件 为UNIX服务器设置Oracle全文检索 为UNIX服务器设置Oracle全文检索

相关下载

    人气排行 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 Oracle中使用alter table来增加,删除,修改列的语法 ORACLE SQL 判断字符串是否为数字的语句 ORACLE和SQL语法区别归纳(1) oracle grant 授权语句 ORACLE修改IP地址后如何能够使用 如何加速Oracle大批量数据处理 Oracle删除表的几种方法