数据库备份恢复和修复
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORACLE数据文件修复
2.损坏数据文件 关闭数据库后用Ultredit编辑数据文件,随便更改几个字符.然后启动数据 库. SQL> startup ORACLE 例程已经启动。 Total System Global Area 101785252 bytes Fixed Size 454308 bytes Variable Size 75497472 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 数据库装载完毕。 数据库已经打开。
SQLSERVER的LDF修复
• UPDATE SYSDATABASES SET STATUS =32768 WHERE DBID=DB_ID(‘臵疑的数据库 名’) • Go • sp_dboption 臵疑的数据库名 , single user, true • Go • 此时可以在SQL Server Enterprise Manager 里面看到该数据库处于“只读\臵疑\脱机\紧急 模式”可以看到数据库里面的表,但是仅仅有 系统表
SQL SERVER修复工具
SQL SERVER修复工具
• 可以根据时间,表,用户等的条件来进行筛选。
SQL SERVER修复工具
• 查询出来的日志内容,可以导出XML文件。导入的XML文件如果想转入数据 库,则需自己写代码分析XML文件。
SQL SERVER修复工具
• 删除数据时候要小心,并非所有的都能恢 复
ORACLE数据文件修复
• • • • • • • • • • • • • • • • 3.使用DBV检查数据文件 E:\Oracle\oradata\eygle>dbv file=block.dbf blocksize=8192 DBVERIFY: Release 9.2.0.4.0 - Production on 星期一 3月 8 20:48:50 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. DBVERIFY - 验证正在开始 : FILE = block.dbf 标记为损坏的页35 *** Corrupt block relative dba: 0x01000023 (file 4, block 35) Bad check value found during dbv: Data in bad block type: 6 format: 2 rdba: 0x01000023 last change scn: 0x0000.00049097 seq: 0x1 flg: 0x06 consistency value in tail: 0x90970601 check value in block header: 0xd6cb, computed block checksum: 0x2c0a spare1: 0x0, spare2: 0x0, spare3: 0x0 ***
• 确定要恢复数据的服务器,并输入登陆的用户名和密码,如果是本机可使用 ”windows身份验证”,点击<Connent>测试连接。
SQL SERVER修复工具
• 选择要恢复数据所在有数据库,点击<Attach>进入数据操作界面
SQL SERVER修复工具
• 进入数据操作界面后,在左边的菜单选择 <View Log>,可显示操作的日志,例如是对 哪一个表进行过新增、删除、修改等操作,操作的记录是什么内容都能显示出来。如 果日志长时间没有清空过,那么这些日志就会很多,可以用“过滤功能”来设臵条件 进行日志筛选。
SQLSERVER的LDF修复
• 6) 启动数据库服务器。此时会看到数 据库test的状态为“臵疑”。这时候不能 对此数据库进行任何操作。 .设臵数据库允许直接操作系统表。此 操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右 键,选择“属性”,在“服务器设臵” 页面中将“允许对系统目录直接修改” 7) 设臵test为紧急修复模式
• •
• •
SQLSERVER的LDF修复
• • • • •
9 .验证数据库一致性 dbcc checkdb('test') 10 .设臵数据库为正常状态 sp_dboption 'test','dbo use only','false' 如果没有出错,那么恭喜,现在就可以正常的使用 恢复后的数据库啦。 • 11 最后一步,我们要将步骤E中设臵的“允许对系统 目录直接修改”一项恢复;
• • SQL> create table t tablespace block as select * from dba_users; 表已创建。
ORACLE数据文件修复
• • • • • • • • • • • • • • • • SQL> insert into t select * from t; 已创建8行。 SQL> / 已创建16行。 SQL> / 已创建32行。 …… SQL> / 已创建2048行。 SQL> / 已创建4096行。 SQL> / insert into t select * from t * ERROR 位于第 1 行: ORA-01653: 表EYGLE.T无法通过8(在表空间BLOCK中)扩展
ORACLE数据文件修复
• • • • SQL> create tablespace block 2 datafile 'e:\oracle\oradata\eygle\block.dbf' 3 size 1M 4 extent management local;
• 表空间已创建。
ORACLE数据文件修复
Байду номын сангаас
ORACLE数据文件修复
• • • • • • • • • • • • • • SQL> commit; 提交完成。 SQL> alter system checkpoint; 系统已更改。 SQL> select count(*) from t; COUNT(*) ---------8192 SQL> connect / as sysdba 已连接。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。
SQLSERVER的LDF修复
• • • • • • • 下面执行真正的恢复操作,重建数据库日志文件 dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf') 执行过程中,如果遇到下列提示信息: 服务器: 消息 5030,级别 16,状态 1,行 1 未能排它地锁定数据库以执行该操作。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。 正确执行完成的提示应该类似于: 警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重臵数据库选项,并且可能需要删除多余的日 志文件。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供 DBO使用”。此时可以访问数据库里面的用户表了。
SQL SERVER修复工具
• LOG EXPLORER (共享)
1.安装到SQL SERVER服务器上 2.对完全日志模式有效 3.修改了某个表上的数据,可以通过LOG EXPLORER恢复
SQL SERVER修复工具
• 点击<Attach Log File>开始进行数据恢复
SQL SERVER修复工具
SQLSERVER的LDF修复
• 在实际操作中假如你的服务器出现了Raid 故障,在数据基本恢复成功后,发现其中 的一个Sql Server日志文件(扩展名LDF) 损坏严重。
SQLSERVER的LDF修复
• 1) 先及时把原来的数据库文件(如 test.mdf)备份到其他地方 2) 停掉服务器 3) 删除这个test.mdf 4) 重新建立一个test同名数据库 5) 删除这个新建立的test数据库的test.ldf 文件,并用开始备份好的test.mdf文件覆盖 这个新建立的test.mdf文件
ORACLE数据文件修复
• • • • • • • • •
• •
标记为损坏的页69 *** Corrupt block relative dba: 0x01000045 (file 4, block 69) Bad check value found during dbv: Data in bad block type: 6 format: 2 rdba: 0x01000045 last change scn: 0x0000.00049097 seq: 0x1 flg: 0x06 consistency value in tail: 0x90970601 check value in block header: 0x33d1, computed block checksum: 0x653 spare1: 0x0, spare2: 0x0, spare3: 0x0 ***
ORACLE数据文件修复
SQL> select count(*) from eygle.t; select count(*) from eygle.t * ERROR 位于第 1 行: ORA-01578: ORACLE 数据块损坏(文件号4,块号35) ORA-01110: 数据文件 4: 'E:\ORACLE\ORADATA\EYGLE\BLOCK.DBF‘ SQL> 此时如果查询该表,会出现错误,数据块损坏无法读取.
ORACLE数据文件修复
• • • • • • • • • • • • • DBVERIFY - 验证完成 检查的页总数 :128 处理的页总数(数据):117 失败的页总数(数据):0 处理的页总数(索引):0 失败的页总数(索引):0 处理的页总数(其它):9 处理的总页数 (段) : 0 失败的总页数 (段) : 0 空的页总数 :0 标记为损坏的总页数:2 汇入的页总数 :0 dbv检测到坏块.
ORACLE数据文件修复
1.插入数据 E:\Oracle\ora92\bin>sqlplus "/ as sysdba“ SQL*Plus: Release 9.2.0.4.0 - Production on 星期一 3月 8 20:27:15 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 连接到: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.4.0 - Production
ORACLE数据文件修复
SQL> select name from v$datafile; NAME ------------------------------------------------------------E:\ORACLE\ORADATA\EYGLE\SYSTEM01.DBF E:\ORACLE\ORADATA\EYGLE\UNDOTBS01.DBF E:\ORACLE\ORADATA\EYGLE\EYGLE01.DBF