数据库一般是指储存数据的存库系统,大多数用来储存和记录用户的数据,如果数据库损坏了就不能进行记录好储存了,那就需要修复数据库工具了,工具可以修复数据库的文件和其他数据,工具可以有效地使用技术性来修复,可以修复因丢失、误删除、被破坏、格式化后的因素,数据库修复工具有很多。
可以使用如下工具:
SQL数据库修复工具 v6.62 演示绿色版
D-Recovery Standard 2.2.1 绿色特别版
Dbvisit Standby Oracle数据库恢复管理工具 7.0.26 官方版
可通过该处下载软件:http://www.xz7.com/yp/sjkxf/
求sql2000数据库数据文件mdf修复工具
如果是简单的数据库质疑,可以使用以下:
1.新建一个同名的数据库
2.再停掉sql server
3.用suspect数据库的文件覆盖掉这个新建的同名数据库
4.再重启sql server
5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='his222'
Go
sp_dboption 'test', 'single user', 'true'
Go
DBCC CHECKDB('test')
Go
update sysdatabases set status =28 where name='test'
Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption 'test', 'single user', 'false'
Go
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
如果这样改不加数据库状态,你就把数据库导成一个新库来代替旧库吧
企业管理器--右键你的数据库--所有任务--导出数据
--目标标数据库选择新建
--选择"在两个sql数据库之间复制对象和数据"
--把"包含扩展属性"选上,其他的根据需要选择
--最后完成
----目前正在做得修复表的操作如下,大家看看还有没有其它方法
USE MASTER
GO
sp_dboption '问题数据库', 'single user', 'true'
Go
DBCC CHECKDB('问题数据库', REPAIR_ALLOW_DATA_LOSS)
Go
USE '问题数据库'go
exec sp_msforeachtable 'DBCC CHECKTABLE("问题表",REPAIR_ALLOW_DATA_LOSS)'
exec sp_msforeachtable 'DBCC DBREINDEX("问题表")'
go
sp_dboption '问题数据库', 'single user', 'false'
Go
我想问我从装软件从装点击的是修复。软件从装SQL mdf数据库会文件丢失吗
只要你的数据库文件还在就没事,可以通过数据库手段,直接把数据库附加上去更多
我们软件是在D盘 从装软件数据库不影响吗?系统c重装了 D盘什么文件都在。问题我们问客服说是数据库跟C盘 什么注册表有关系 。不能回复数据,有的说可以恢复 现在很纠结。
你现在的问题是数据库损坏了是吗?D盘的是数据文件,所以能恢复
现在不清楚数据库损坏没!~反正他的数据库没动过。就是软件从装了。我给你发图片
就是按提示操作了!~~不知道能恢复不!~谢谢
不太清楚你的软件产品是什么,我只能从数据库角度考虑,你看看你的数据库能不能正常启动
现在提示 数据库连接失败!~神医纠结的很!~问你个事 软件从装对数据库有影响吗!~会覆盖以前的吗!~我们现在在想办法。我在网上求助。如果能恢复 就要请你们数据库高手恢复 谢谢。
首先,你要确定好你们软件的数据文件是保存到哪儿的,然后把该数据文件所在的文件夹整个复制一份到别的地方,以防万一,再之后就可以放心的重装软件了。
按照你的说法 我也不知道数据库文件在什么地方 ,也没复制,我直接从装软件 肯定就是数据库没了对吧!~ 哎 这软件用着头痛。
这个说不好,你先请教请教懂这款软件的人吧,我现在一是不知道你使用的什么软件,二是即使知道你用的软件之后也不知道你安装的路径在哪儿。
怎么修复数据库 修复数据库坏块方法
修复数据库坏块
dbv
你也可以用dbv工具看一下你现在其他的数据文件有没有还有坏块的
dbv file='yourfilename'
恢复方法:
当Oracle数据库出现坏块时,Oracle会在警告日志文件(alert_SID.log)中记录坏块的信息:
ORA-01578: ORACLE data block corrupted (file # 7, block # )
ORA-01110: data file : '/oracle1/oradata/V920/oradata/V816/users01.dbf'
其中,<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_REPAIR.SKIP_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
2014.7.22研究恢复数据库坏块:
Oracle调用标准C的系统函数,对数据块进行读写操作,因此,坏块是有可能由以下几种原因产生:
硬件的I/O错误
操作系统的I/O错误或缓冲问题
内存或paging问题
磁盘修复工具
一个数据文件的一部分正在被覆盖
Oracle试图访问一个未被格式化的系统块失败
数据文件部分溢出
Oracle或者操作系统的bug
遇到“ORA-01578:ORACLE data block corrupted”错误
处理方法:1.rman的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=t.dmp 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_repair.check_object检测出来的坏块信息
SQL> declare
2begin
3dbms_repair.admin_tables
4(table_name => 'REPAIR_TABLE',--表名
5table_type => dbms_repair.repair_table,
6action => dbms_repair.create_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_repair.check_object进行坏块检测
SQL> set serveroutput on size 100000;
SQL> declare
2rpr_count int;
3begin
4rpr_count := 0;
5dbms_repair.check_object(
6schema_name => 'SYS',--指定对象模式,也就是对象的所有者
7object_name => 'TEST',--指定对象名,也就是表名
8repair_table_name => 'REPAIR_TABLE',
9corrupt_count => rpr_count);
10dbms_output.put_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_repair.check_object,将坏块信息存放到了repair_table表中,其中有个字段marked_corrupt,用于标识该块是否被标识为坏块,当被标识为true时,即该块被标识为坏块。其中这一步跟oracle文档中的描述有点进入,根据oracle文档,当执行完dbms_repair.check_object时,并不会进行坏块标识,也就是marked_corrupt列的值应该为false,而只有当执行dbms_repair.fix_corrupt_blocks过程后才会进行坏块标识。
3)使用dbms_repair.fix_corrupt_blocks进行坏块标识
SQL> declare
2fix_block_count int;
3begin
4fix_block_count := 0;
5dbms_repair.fix_corrupt_blocks (
6schema_name => 'SYS',
7object_name => 'TEST',
8object_type => dbms_repair.table_object,
9repair_table_name => 'REPAIR_TABLE',
10fix_count => fix_block_count);
11dbms_output.put_line('fix blocks count: ' ||
12to_char(fix_block_count));
13end;
14/
fix blocks count: 0
PL/SQL 过程已成功完成。
我们可以见到到fix blocks count=0,即在上一步进行check_object时已经进行了坏块标识了,这一步其实可以省略。(不过没有测试过!)
免费数据恢复软件有哪些
电脑数据恢复软件有哪些?
第一款,大部分人都在使用的软件,360安全卫士,这里面就有文件恢复功能,进入应用里面添加就行了。
第二款软件是Recuva---Windows平台下的文件恢复工具。可用来恢复被误删除的任意格式的文件,能直接恢复硬盘、闪盘、存储卡(SD卡,MMC卡等)中所含文件,只要没有被重复写入数据,无论格式化还是删除均可直接恢复,支持 FAT12、FAT16、FAT32、NTFS 文件系统(支持市面上大部分的文件系统了)。
第三款软件,EasyRecovery,支持硬盘、U盘等存储设备的数据恢复,还支持修复损坏的Office文档(包括Access数据库、Excel电子表格、PowerPoint演示文稿、Word文档)、ZIP压缩包及电子邮件等,特色是修复损坏的Office文档。
第四款软件,FinalData,简单易用的数据恢复工具,界面设计简单易懂
下图,是选择恢复文件所在的位置,选定后,确认就行,详细使用过程这里不表。
第五款软件,Recover My Files可以指定文件夹进行搜索。被误删的文件,或者是格式化后的磁盘数据,支持多种格式文件的恢复。
前两款是免费,后三款有破解版,推荐还是DiskGenius,速度不快但是易用,最关键的是网上各种版本都能找到,由此可以知道,这相当于永久免费。
求教:.db数据库文件损坏,可以修复吗?
使用REPAIR_ALLOW_DATA_LOSS级别都不能修复data
1、 有全备bak,用restore page 方式:
1) backup log db to disk ='' 备份尾部日志;
2) RESTORE DATABASE <database> PAGE='1:57, 1:202, 1:916, 1:1016' FROM disk WITH NORECOVERY; 全备还原损坏的页;
3) RESTORE DATABASE <database> from disk='第一步的log备份' ,还原到当前时间点;
2. 没有全备,将数据导入到一个新建的空数据库里:
通过vs 2010的schema compare, data compare;
SSMS 右键--导入导出数据;
BCP 个人推荐;
3. 有全备,但是bak文件也受损
RESTORE DATABASE dbname FROM DISK='‘ WITH CONTINUE_AFTER_ERROR
有没有好用的 数据库修复软件
SQL数据库修复大师是一款功能强大的数据修复工具支持对SQL2000SQL2005SQL2008的mdf文件进行修复支持数据库日志(LDF)生成直接附加
http://down.tech.sina.com.cn/page/49301.html
国外几种SQL SERVER数据库修复软件技术特点及使用办法 详细??
最近在网上看到破解版本的SQL SERVER 的数据库修复软件越来越多,在闲时,下载了所有的试用版本及已经破解版本,找到以前保留的损坏MDF,进行一番比较。断断续续经过几天的比较,这些软件的功能与特点基本上了解清楚,写出来,与大家共享。RecoveryToolboxForSQLServer(产地:俄国)特点:数据恢复效果较好,对于库结构恢复较正常。使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。或者保存成SQL 脚本文件。SysTools SQL Recovery(产地不详)特点:显示数据时,对中文不支持,只显示出UniCode,在运行时容易程度中断直接退出;此软件有些像RecoveryToolboxForSQLServer使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。或者保存成SQL 脚本文件。officerecovery 中的 Recovery for SQL Server(产地:美国)特点:支持BAK,LOG 文件,但修复后的数据容易丢失,库结构提较取较完整。使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。或者保存成SQL 脚本文件。Kernel for SQL Database(产地:印度)特点:恢复效果好,但日期的显示,它是用国外的方式,库结构提取一般。使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。或者保存成SQL 脚本文件。Stellar Phoenix SQL Recovery (产地:印度)特点:数据恢复效果较好,程序运行时易不正常退出,库结构提取不出来。使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。无法保存成SQL 脚本。上述软件都已经有破解版本或者免费版本,大家在选择时应该有所了解。说明:库结构提取不完整,修复后的数据虽然可以在SQL SERVER 中附加,查看,导出,备份,但在应用软件下是无法连接此数据库的,经过对上述软件修复后的数据库文件进行研究,已经找到解决MDF 文件加软件的办法,有此修复需
转载请注明出处51数据库 » 数据库文件修复软件 数据库修复软件有哪些
圈圈画不圆6244106








