数据库第10章 数据库恢复技术
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ROLLBACK
ROLLBACK
to SAVEPOINT B to SAVEPOINT A
10.2 数据库恢复概述
• 故障是不可避免的 – 系统故障:计算机软、硬件故障 – 人为故障:操作员的失误、恶意的破坏等。
• 数据库的恢复 把数据库从错误状态恢复到某一已知的正确状态(亦称为 一致状态或完整状态)
Oracle支持三种方式类型的Export输出: 1、表方式(T方式),将指定表的数据导出。 2、用户方式(U方式),将指定用户的所有对象及数据导出。 3、全库方式(Full方式),将数据库中的所有对象导出。
Export
连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
识符。
• 事务和程序比较
– 在关系数据库中,一个事务可以是一条或多条SQL语句, 也可以包含一个或多个程序。
– 一个程序通常包含多个事务
数据库事务
数据库事务由以下的部分组成: • 一个或多个DML 语句 • 一个 DDL 语句 • 一个 DCL 语句
事务的特性
• 原子性(A-Atomicity) • 一致性(C-Consistency) • 隔离性(I-Isolation) • 持续性(D-Durability)
• 导出scott用户下的某几个表 exp scott/tiger@orcl tables=(emp,dept) file=d:\emp.dmp
• 导出数据库全库 exp system/manager@orcl file=d:\all.dmp full=y 说明:必须拥有DBA角色或者EXP_FULL_DATABASE角色的用户才
能执行全库导出。
• 导入自己的表
imp scott/tiger@orcl tables=(emp,dept) file=d:\emp.dmp • 导入表到其它用户(当导入到其他用户时,需要DBA身份)
imp system/123@orcl tables=(emp) file=d:\emp.dmp fromuser=scott touser=user1(导入emp一个表) 或:imp system/123@orcl file=d:\emp.dmp fromuser=scott
• 4、物理备份是对数据库的文件(Block)进行备份,其备份 和恢复速度相对比较快,在大型业务系统中较多地使用物 理备份。
• 在实际应用中,应该以物理备份为主,逻辑备份作为补充。
逻辑备份
利用Export可将数据从数据库中提取出来,利用Import则可 将提取出来的数据送回到Oracle数据库中去。
• 提交改变
COMMIT; Commit complete.
数据回滚后的状态
• 数据改变被取消。 • 修改前的数据状态可以被恢复。
DELETE FROM copy_emp; 22 rows deleted. ROLLBACK; Rollback complete.
隐式事务处理
• 在下列环境下自动提交会发生
(约束),提交之后仍然满足这些业务规则。
隔离性
• 隔离性
多个事务同时进行,它们之间应该互不干扰. 对数据进行修改的所有并发事务是彼此隔离的,这表明事 务必须是独立的,它不应以任何方式依赖于或影响其他事 务。
持续性
• 持续性
事务完成后,它对数据库的修改被永久保持,事务日志能 够保持事务的永久性
显式事务处理
原子性
• 原子性:
就是事务应作为一个工作单元,事务处理完成,所有的工作 要么都在数据库中保存下来,要么完全回滚。 “要么都做,要么都不做”
原子性
示例:银行转帐 假定资金从帐户A转到帐户B,至少需要两步:
帐户A的资金减少 然后帐户B的资金相应增加
帐户A
银行转帐
帐户B
一致性
• 一致性:
➢ 事务完成或者撤销后,都应该处于一致的状态。 ➢ 事务完成前,数据库中的数据满足所施加的业务规则
导入权限(yes/no): yes>
导入表数据(yes/no):yes>
导入整个导出文件(yes/no):no> 用户名:system /*输入用户名,导入的数据将会在此用户模式下创建*/ 输入表(T)或分区(T:P)名称。空列表表示用户的所有表 输入表(T)或分区(T:P)名称或。如果完成:S
/*输入要创建的表的名称*/ 输入表(T)或分区(T:P)名称或。如果完成:
故障的种类
• 事务内部的故障 • 系统故障 • 介质故障 • 计算机病毒
一、事务内部的故障
• 事务内部的故障
有的是非预期的 有的是可以通过事务程序本身发现的(如转账事
务的例子)
事务内部的故障
• 例如,银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。 BEGIN TRANSACTION 读账户甲的余额BALANCE; BALANCE=BALANCE-AMOUNT;(AMOUNT 为转账金额) 写回BALANCE; IF(BALANCE < 0 ) THEN { 打印'金额不足,不能转账'; ROLLBACK;(撤销刚才的修改,恢复事务) } ELSE { 读账户乙的余额BALANCE1; BALANCE1=BALANCE1+AMOUNT; 写回BALANCE1; COMMIT; }
With the Partitioning, OLAP and Data Mining options
输入数组提取缓冲区大小:4096 */
/*这里使用默认值,直接回车即可
导出文件:EXPDAT.DMP>D:\BAKORCL.DMP /*输入导出文件名称*/
(1)E(完整的数据库),(2)U(用户) 或 (3)T(表):(2)U >T
touser=user1(导入emp,dept两个表)
SET TRANSACTION NAME 'sal_update'; UPDATE prof SET salary = 7050 WHERE P#= ‘1001'; UPDATE prof SET salary = 6000 WHERE P#= ‘1002'; COMMIT; --ROLLBACK;
• 恢复操作的基本原理:冗余 利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或 不正确的那部分数据
• 恢复机制涉及的关键问题 1. 如何建立冗余数据
数据转储(backup) 登录日志文件(logging)
2. 如何利用这些冗余数据实施数据库恢复
Oracle 的日志
联机日志 归档日志
/*在这里选择要导出的类型,我们选择表*/
导出表数据(yes/no):yes>
/*使用默认设置,导出表数据*/
压缩区(yes/no):yes>
/*使用默认设置,压缩区*/
已导出ZHS16GBK字符集和AL16UTF16 NCHAR字符集
即将导出指定的表通过常规路径…
要导出的表(T)或分区(T:P):(RETURN退出)>S
系统故障的恢复
• 发生系统故障时,事务未提交
– 恢复策略:强行撤消(UNDO)所有未完成事务
• 发生系统故障时,事务已提交,但缓冲区中的信 息尚未完全写回到磁盘上。
– 恢复策略:重做(REDO)所有已提交的事务
• 系统故障的恢复由系统在重新启动时自动完成,不需要用 户干预
三、介质故障
• 介质故障 称为硬故障,指外存故障 – 磁盘损坏 – 磁头碰撞 – 操作系统的某种潜在错误 – 瞬时强磁场干扰
第十章 数据库恢复技术
第十章 数据库恢复技术
10.1 事务 10.2 数据库恢复概述 10.3 恢复的实现技术 10.4 恢复策略 10.5 具有检查点的恢复技术 10.6 数据库镜像 10.7 小结
10.1 事务
事务是用户定义的一个数据库操作序列,这些操作要么全做
要么全不做,是一个不可分割的工作单位。 • Oracle 数据库将为每个事务分配一个称为事务ID的唯一标
/*在此输入要导出的表名称*/
…正在导出表
S
22行被导出
要导出的表(T)或分区(T:P):(RETURN以退出)>
/*导出表S完毕,直接回车即可完成导出工作。若要导出其他表,在此输 入表名即可*/
在没有警告的情况下成功终止导出。
imp
导入文件:EXPDAT.DMP>D:\BAKORCL.DMP
事务内部的故障
• 事务内部更多的故障是非预期的,是不能由应用程序处理 的。
运算溢出 并发事务发生死锁而被选中撤销该事务 违反了某些完整性限制等
以后,事务故障仅指这类非预期的故障 • 事务故障的恢复:撤消事务(UNDO) • 事务故障的恢复由系统自动完成,对用户是透明的,不需
要用户干预
二、系统故障
— DDL语句被执行 — DCL语句被执行 — 从SQL*Plus中的正常退出,没有显式执行COMMIT或者 ROLLBACK语句
• 在SQL*Plus非正常结束或者系统失败,自动回滚发 生。
控制事务
Time
COMMIT
事务
DELETE
保存点 A
INSERT
UPDATE
保存点 B
INSERT
ROLLBACK
正在将ADMIN的对象导入到ADMIN
…正在导入表
“S”
准备启用约束条件…
成功终止导入,但出现警告。
22行被导入
命令行
exp userid=system/orcl@orcl owner=(system,user1) file=d:\bak.dmp(结尾没有分号) 备注:导出system和user1用户下的所有对象,其中: “userid=”可以省略
• 系统故障
称为软故障,是指造成系统停止运转的任何事件,使得 系统要重新启动。 – 整个系统的正常运行突然被破坏 – 所有正在运行的事务都非正常终止 – 不破坏数据库 – 内存中数据库缓冲区的信息全部丢失
系统故障的常见原因
• 特定类型的硬件错误(如CPU故障) • 操作系统故障 • DBMS代码错误 • 系统断电
逻辑备份与物理备份比较
• 1、逻辑备份的备份集的可移植性比较强,可以把数据库 的逻辑备份恢复到不同版本不同平台的数据库上
• 2、逻辑备份和恢复的效率比较低,对于大型的系统,采 用逻辑备份,其恢复时间之长是大多数大型业务系统所不 能忍受的。
• 3、物理备份不具备移植性,备份环境和恢复环境必须是 完全相同的
介质故障的恢复
• 装入数据库发生介质故障前某个时刻的数据副本 • 重做自此时开始的所有成功事务,将这些事务已提交的结
果重新记入数据库
四、计算机病毒
• 计算机病毒
– 一种人为的故障或破坏,是一些恶作剧者研制的一种 计算机程序
– 可以繁殖和传播
• 危害
– 破坏、盗窃系统中的数据 – 破坏系统文件
10.3 恢复的实现技术
/*输入要导入的导出转储文件名*/
输入插入缓冲区大小(最小为8192)30720> 回车*/
/*使用默认设置,然后
经由常规路径导出由EXPORT:V10.02.00创建的文件 已经完成ZHS16GBK字符集和AL16UTF16 NCHAR字符集中的导入 只列出导入文件的内容(yes/no):no>
由于对象已存在,忽略创建错误(yes/no):no>
Oracle备份
物理备份(主):就是转储ORACLE物理文件
(如数据文件、控制文件、归档日志文件等),一旦 数据库发生故障,可以利用这些文件进行还原
逻辑备份(辅):逻辑备份就是对数据库对象
(如用户、表、存储过程等)利用EXPORT等工具进 行导出工作,可以利用IMPORT等工具把逻辑备份 文件导入到数据库。
COMMIT
• 事务提交命令。 • 在Oracle中,在内存中将为每个客户机建立工作区,客户
机对数据库进行操作处理的事务都在工作区内完成,只有 在输入commit命令后,工作区内的修改内容才写入到数据 库上,称为物理写入. • 这样可以保证在任意的客户机没有物理提交修改以前,别 的客户机读取的后台数据库中的数据是完整的、一致的.
ROLLBACK
使用ROLLBACK命令放弃所有未决的改变
• 数据的改变被撤回 • 数据先前的状态被还原
提交数据
• 改变数据
DELETE FROM employees WHERE employee_id = 99999; 1 row deleted.
INSERT INTO departments VALUES (290, 'Corporate Tax', NULL, 1700); 1 row inserted.