如何恢复数据库

如何恢复数据库,第1张

先打开SqlServer2008,然后鼠标选中数据点击右键,选择列表中的‘还原数据库’,最后d出还原数据库界面

还原数据库怎么 *** 作

先输入‘目标数据库’;然后选中‘源设备’(因为本人的备份数据放在电脑D盘),最后点后面的按钮,d出指定备份界面

还原数据库怎么 *** 作

在指定备份界面上点添加按钮,d出指定备份文件夹界面,找到存放备份数据库的文件夹,然后选中文件夹中的备份数据库,该界面的下方会显示:所选路径、文件类型、文件名,最后确定选择还原的数据库

还原数据库怎么 *** 作

还原数据库怎么 *** 作

确定要还原的数据库没问题后,指定备份界面上的备份位置会显示备份的数据库的详细位置

还原数据库怎么 *** 作

确定还原数据库的备份位置没问题后,自动返回到还原数据库界面,此时界面上会显示 选择用于还原的数据库,复选框勾上

还原数据库怎么 *** 作

确定选择的备份数据进行还原,界面上会d出提示还原成功已完成的信息(还原过程中需等待几分钟)

还原数据库怎么 *** 作

备份数据库还原成功后,在SqlServer2008的 数据库列表下,可以看到已还原成功的数据库

还原数据库怎么 *** 作

修复数据库坏块

dbv

你也可以用dbv工具看一下你现在其他的数据文件有没有还有坏块的

dbv file='yourfilename'

恢复方法:

当Oracle数据库出现坏块时,Oracle会在警告日志文件(alert_SIDlog)中记录坏块的信息:

ORA-01578: ORACLE data block corrupted (file # 7, block # )

ORA-01110: data file : '/oracle1/oradata/V920/oradata/V816/users01dbf'

其中,<AFN>代表坏块所在数据文件的绝对文件号,代表坏块是数据文件上的第几个数据块

出现这种情况时,应该首先检查是否是硬件及 *** 作系统上的故障导致Oracle数据库出现坏块。在排除了数据库以外的原因后,再对发生坏块的数据库对象进行处理。

1.确定发生坏块的数据库对象

SELECT tablespace_name,

segment_type,

owner,

segment_name

FROM dba_extents

WHERE file_id =

AND between block_id AND block_id+blocks-1;

2.决定修复方法

如果发生坏块的对象是一个索引,那么可以直接把索引DROP掉后,再根据表里的记录进行重建;

如果发生坏块的表的记录可以根据其它表的记录生成的话,那么可以直接把这个表DROP掉后重建;

如果有数据库的备份,则恢复数据库的方法来进行修复;

如果表里的记录没有其它办法恢复,那么坏块上的记录就丢失了,只能把表中其它数据坏上的记录取出来,然后对这个表进行重建。

3.用Oracle提供的DBMS_REPAIR包标记出坏块

exec DBMS_REPAIRSKIP_CORRUPT_BLOCKS('','');

4.使用Create table as select命令将表中其它块上的记录保存到另一张表上

create table corrupt_table_bak

as

select from corrupt_table;

5.用DROP TABLE命令删除有坏块的表

drop table corrupt_table;

6.用alter table rename命令恢复原来的表

alter table corrupt_table_bak

rename to corrupt_table;

7.如果表上存在索引,则要重建表上的索引

PART2

2014722研究恢复数据库坏块:

Oracle调用标准C的系统函数,对数据块进行读写 *** 作,因此,坏块是有可能由以下几种原因产生:

硬件的I/O错误

*** 作系统的I/O错误或缓冲问题

内存或paging问题

磁盘修复工具

一个数据文件的一部分正在被覆盖

Oracle试图访问一个未被格式化的系统块失败

数据文件部分溢出

Oracle或者 *** 作系统的bug

遇到“ORA-01578:ORACLE data block corrupted”错误

处理方法:1rman的recover命令可以在数据库保持open状态下只恢复受损的数据块

2如果没有备份,万不得已之下也可以采用DBMS_REPAIR包的存储过程将受损坏块隔离,同时尽可能地挽救部分数据。

rman backup命令也是检查坏数据块的好工具 一旦读取ORA-19566 即可有问题

此时可用backup validate tablespace user观察详细的信息,可查看到坏块数与跟踪文件

grep‘corrupt’/u01/app/oracle/diag/rdbms/br/br/trace/trc

恢复数据块:rman》recover datafile 5 block 203;

批量恢复受损的数据块:recover corruption list;

数据块坏块一号坏块,需要做:

run{

sql 'alter database datafile 5 offline';

restore datafile 5;

recover datafile 5;

sql'alter database datafile 5 online'

}

使用exp/imp恢复

在这种情况下肯定会造成数据的丢失,在这种情况下应采取将数据导出然后重建表再进行导入的方法,来尽量恢复损坏数据块中的数据,但是在有坏块的情况下是不允许导出的,如下命令:Exp test/test file=tdmp tables=t;

导出命令在执行中会报ORA-01578错误,在这错误提示中会提示那个文件号的文件以及这个文件中的哪个块被损坏,如:ORA—01578:ORACLE 数据块损坏(文件号 4,块号 35)

针对以上的提示首先查询那些对象被损坏:

Select tablespace_name,segment_type,owner,segment_name From dba_extents Where file_id=4 and 35 between block_id and block_id+blocks-1;

如果被损坏的块是索引,通常可以通过索引重建来解决,如果损坏的是数据(segment_type为table),那么通过设置如下内部事件使得Exp *** 作跳过坏块。

Alter session set events=’10231 trace name context forever,level 10’;

然后重新执行导出命令,导出相关的表,然后执行Drop Table命令删除相关表,之后重建表最后导入数据。

使用DBMS_REPAIR恢复

用DBMS_REPAIR当然也会丢失数据。这里不做详细的介绍,有兴趣的可以查看oracle的在线文

3、使用dbms_repair包进行坏块处理

1)首先建立repair_table,用于存放dbms_repaircheck_object检测出来的坏块信息

SQL> declare

2begin

3dbms_repairadmin_tables

4(table_name => 'REPAIR_TABLE',--表名

5table_type => dbms_repairrepair_table,

6action => dbms_repaircreate_action,

7tablespace => 'USERS');--用于指定该表存放的表空间

8end;

9/

PL/SQL 过程已成功完成。

SQL> col owner format a10

SQL> col object_name format a20

SQL> col object_type format a20

SQL> select owner, object_name, object_type

2from dba_objects

3where object_name like '%REPAIR_TABLE';

OWNEROBJECT_NAMEOBJECT_TYPE

---------- -------------------- --------------------

SYSREPAIR_TABLETABLE

SYSDBA_REPAIR_TABLEVIEW

Oracle自动创建了一个DBA_REPAIR_TABLE视图。

2)使用dbms_repaircheck_object进行坏块检测

SQL> set serveroutput on size 100000;

SQL> declare

2rpr_count int;

3begin

4rpr_count := 0;

5dbms_repaircheck_object(

6schema_name => 'SYS',--指定对象模式,也就是对象的所有者

7object_name => 'TEST',--指定对象名,也就是表名

8repair_table_name => 'REPAIR_TABLE',

9corrupt_count => rpr_count);

10dbms_outputput_line('repair block count: '

11||to_char(rpr_count));

12end;

13/

repair block count: 4

PL/SQL 过程已成功完成。

SQL> select object_name, block_id, corrupt_type, marked_corrupt,

2corrupt_description, repair_description

3from repair_table;

OBJECT_NAMEBLOCK_ID CORRUPT_TYPE MARKED_COR

-------------------- ---------- ------------ ----------

CORRUPT_DESCRIPTION

-------------------------------------------------------------------------------

REPAIR_DESCRIPTION

-------------------------------------------------------------------------------

TEST196148 TRUE

mark block software corrupt

TEST206148 TRUE

mark block software corrupt

TEST236148 TRUE

mark block software corrupt

TEST316148 TRUE

mark block software corrupt

通过运行dbms_repaircheck_object,将坏块信息存放到了repair_table表中,其中有个字段marked_corrupt,用于标识该块是否被标识为坏块,当被标识为true时,即该块被标识为坏块。其中这一步跟oracle文档中的描述有点进入,根据oracle文档,当执行完dbms_repaircheck_object时,并不会进行坏块标识,也就是marked_corrupt列的值应该为false,而只有当执行dbms_repairfix_corrupt_blocks过程后才会进行坏块标识。

3)使用dbms_repairfix_corrupt_blocks进行坏块标识

SQL> declare

2fix_block_count int;

3begin

4fix_block_count := 0;

5dbms_repairfix_corrupt_blocks (

6schema_name => 'SYS',

7object_name => 'TEST',

8object_type => dbms_repairtable_object,

9repair_table_name => 'REPAIR_TABLE',

10fix_count => fix_block_count);

11dbms_outputput_line('fix blocks count: ' ||

12to_char(fix_block_count));

13end;

14/

fix blocks count: 0

PL/SQL 过程已成功完成。

我们可以见到到fix blocks count=0,即在上一步进行check_object时已经进行了坏块标识了,这一步其实可以省略。(不过没有测试过!)

 

来快速修复所有的数据库或者特定的数据库;方法:进入Mysql的Bin目录:C:\Program Files\MySQL\MySQL Server 41\bin 运行:mysqlcheck -A -o -r -uroot -p123 注意,将123改成你自己的root用户密码 希望能解决您的问题。

1、如果你仅想找到不小心误删除的文件,可在数据恢复软件读完分区的目录结构信息后就手动中断簇扫描的过程,

2、软件一样会把被删除文件的信息正确列出,如此可节省大量的扫描时间,快速找到被误删除的文件数据。

3、尽可能采取NTFS格式分区

4、巧妙设置扫描的簇范围

5、使用文件格式过滤器

sql2005数据库修复方法如下:1、停止数据库服务。2、将需要恢复的数据库文件复制到另外的位置。3、启动数据库服务。4、确认要恢复的数据库文件已经成功复制到另外的位置,然后在SQL Server Management Studio中删除要恢复的数据库。5、新建同名的数据库(数据库文件名也要相同)。6、停止数据库服务。7、用第2步中备份的mdf文件覆盖新数据库的同名文件。8、启动数据库服务。9、运行alter database dbname set emergency,将数据库设置为emergency mode10、运行下面的命令就可以恢复数据库:Titleuse masterdeclare @databasename varchar(255)set @databasename='要恢复的数据库名称'

数据库删除了数据是一个很棘手的问题,数据的删除首先包括三个层面:

1删除放入回收站,没有在回收站中清除数据。这种情况是最简单的,进入回收站,找到删除的数据,右击选择恢复。

2删除后未放入回收站或者删除后清空回收站,尽量先不要往原数据所在盘符下储存内容,刚刚删除的数据只是文件结构被删除,真正的文件数据还没被覆盖。通过数据恢复软件是可以找回来的,专业的软件例如有超级兔子数据恢复软件

3如果是删除很久以后才想到数据库数据要恢复,并且磁盘一直在使用,磁盘被填满的话数据就已经被覆盖了,这样的数据是无法找回的。

以上就是关于如何恢复数据库全部的内容,包括:如何恢复数据库、怎么修复数据库 修复数据库坏块方法、如何修复MySQL数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9811149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存