
---- 当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(包括机器故障、介质故障、误 *** 作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如果平时对数据库做了备份,那么此时恢复数据就显得很容易。由此可见,做好数据库的备份是多么的重要,下面笔者就以oracle7为例,来讲述一下数据库的备份和恢复。oracle 数据库有三种标准的备份方法,它们分别为导出/导入(export/import)、冷备份、热备份。导出备份是一种逻辑备份,冷备份和热备份是物理备份。
---- 一、 导出/导入(export/import)
---- 利用export可将数据从数据库中提取出来,利用import则可将提取出来的数据送回oracle数据库中去。
---- 1 简单导出数据(export)和导入数据(import)
---- oracle支持三种类型的输出:
---- (1)表方式(t方式),将指定表的数据导出。
---- (2)用户方式(u方式),将指定用户的所有对象及数据导出。
---- (3)全库方式(full方式),将数据库中的所有对象导出。
---- 数据导出(import)的过程是数据导入(export)的逆过程,它们的数据流向不同。
---- 2 增量导出/导入
---- 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为system来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为exportdmp,如果不希望自己的输出文件定名为exportdmp,必须在命令行中指出要用的文件名。
---- 增量导出包括三个类型:
---- (1)“完全”增量导出(complete)
---- 即备份整个数据库,比如:
---- $exp system/manager inctype=complete file=990702dmp
---- (2) “增量型”增量导出
---- 备份上一次备份后改变的数据。比如:
---- $exp system/manager inctype=incremental file=990702dmp
---- (3) “累计型”增量导出(cumulative)
---- 累计型导出方式只是导出自上次“完全” 导出之后数据库中变化了的信息。比如:
---- $exp system/manager inctype=cumulative file=990702dmp
---- 数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效地完成。
---- 比如数据库的备份任务可作如下安排:
---- 星期一:完全导出(a)
---- 星期二:增量导出(b)
---- 星期三:增量导出(c)
---- 星期四:增量导出(d)
---- 星期五:累计导出(e)
---- 星期六:增量导出(f)
---- 星期日:增量导出(g)
---- 如果在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:
---- 第一步:用命令create database重新生成数据库结构;
---- 第二步:创建一个足够大的附加回段。
---- 第三步:完全增量导入a:
---- $imp system/manager inctype= rectore full=y file=a
---- 第四步:累计增量导入e:
---- $imp system/manager inctype= rectore full=y file =e
---- 第五步:最近增量导入f:
---- $imp system/manager inctype=restore full=y file=f
---- 二、 冷备份
---- 冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份oracle信息而言,冷备份是最快和最安全的方法。冷备份的优点是:
---- 1.是非常快速的备份方法(只需拷贝文件)
---- 2.容易归档(简单拷贝即可)
---- 3.容易恢复到某个时间点上(只需将文件再拷贝回去)
---- 4.能与归档方法相结合,作数据库“最新状态”的恢复。
---- 5.低度维护,高度安全。
---- 但冷备份也有如下不足:
---- 1.单独使用时,只能提供到“某一时间点上”的恢复。
---- 2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
---- 3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
---- 4.不能按表或按用户恢复。
---- 如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:
---- 1.所有数据文件
---- 2.所有控制文件
---- 3.所有联机redo log文件
---- 4.initora文件(可选)。
---- 值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的
---- 下面是做冷备份的完整例子:
---- (1) 关闭数据库$sqldba lmode=y
---- sqldba >connect internal;
---- sqldba >shutdown normal;
---- (2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件
---- sqldba >! cp < file > <; backup directory >
---- (3) 重启oracle数据库
---- $sqldba lmode=y
---- sqldba >connect internal;
---- sqldba >startup;
---- 三、 热备份
---- 热备份是在数据库运行的情况下,采用archivelog mode方式备份数据的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在archivelog方式下 *** 作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:
---- 1.数据文件一个表空间一个表空间地备份。
---- (1)设置表空间为备份状态
---- (2)备份表空间的数据文件
---- (3)恢复表空间为正常状态
---- 2.备份归档log文件。
---- (1)临时停止归档进程
---- (2)log下那些在archive redo log目标目录中的文件
---- (3)重新启动archive进程
---- (4)备份归档的redo log 文件
---- 3.用alter database backup controlfile命令来备份拷贝文件
---- 热备份的优点是:
---- 1.可在表空间或数据文件级备份,备份时间短。
---- 2.备份时数据库仍可使用。
---- 3.可达到秒级恢复(恢复到某一时间点上)。
---- 4.可对几乎所有数据库实体作恢复。
---- 5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。
---- 热备份的不足是:
---- 1.不能出错,否则后果严重。
---- 2.若热备份不成功,所得结果不可用于时间点的恢复。
---- 3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”。
数据一致性通常指关联数据之间的逻辑关系是否正确和完整而数据存储的一致性模型则可以认为是存储系统和数据使用者之间的一种约定如果使用者遵循这种约定,则可以得到系统所承诺的访问结果常用的一致性模型有:
a、严格一致性(linearizability, strict/atomic Consistency):读出的数据始终为最近写入的数据这种一致性只有全局时钟存在时才有可能,在分布式网络环境不可能实现
b、顺序一致性(sequential consistency):所有使用者以同样的顺序看到对同一数据的 *** 作,但是该顺序不一定是实时的
c、因果一致性(causal consistency):只有存在因果关系的写 *** 作才要求所有使用者以相同的次序看到,对于无因果关系的写入则并行进行,无次序保证因果一致性可以看做对顺序一致性性能的一种优化,但在实现时必须建立与维护因果依赖图,是相当困难的
d、管道一致性(PRAM/FIFO consistency):在因果一致性模型上的进一步弱化,要求由某一个使用者完成的写 *** 作可以被其他所有的使用者按照顺序的感知到,而从不同使用者中来的写 *** 作则无需保证顺序,就像一个一个的管道一样 相对来说比较容易实现
e、弱一致性(weak consistency):只要求对共享数据结构的访问保证顺序一致性对于同步变量的 *** 作具有顺序一致性,是全局可见的,且只有当没有写 *** 作等待处理时才可进行,以保证对于临界区域的访问顺序进行在同步时点,所有使用者可以看到相同的数据
f、 释放一致性(release consistency):弱一致性无法区分使用者是要进入临界区还是要出临界区, 释放一致性使用两个不同的 *** 作语句进行了区分需要写入时使用者acquire该对象,写完后release,acquire-release之间形成了一个临界区,提供 释放一致性也就意味着当release *** 作发生后,所有使用者应该可以看到该 *** 作
g、最终一致性(eventual consistency):当没有新更新的情况下,更新最终会通过网络传播到所有副本点,所有副本点最终会一致,也就是说使用者在最终某个时间点前的中间过程中无法保证看到的是新写入的数据可以采用最终一致性模型有一个关键要求:读出陈旧数据是可以接受的
h、delta consistency:系统会在delta时间内达到一致这段时间内会存在一个不一致的窗口,该窗口可能是因为log shipping的过程导致这是书上的原话我也搞不很清楚数据库完整性(Database Integrity)是指数据库中数据的正确性和相容性数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计包括实体完整性域完整性参照完整性用户定义完整性可以主键check约束外键来一一实现这个使用较多
如果备份或者恢复一个DB2数据库需要花费几个小时时间,那么及时这个备份与恢复方案再安全,也于事无补。或者说,是一个不合适的解决方案。
为此在考虑备份恢复方案本身安全性的同时,也需要兼顾备份与恢复的效率。
在这篇文章中,笔者就介绍一下提高DB2数据备份与恢复效率的一些常用技巧。
分类: 电脑/网络 >> 硬件
问题描述:
这些不需要说明的,我相信懂电脑的高手们一定会一看就知道的
解析:
数据库备份中的一致性和实时性
一致性和实时性
一个一致性的数据库就是指数据处理响应完成了的数据库。例如:一个会计数据库,当它的记入借方与相应的贷方记录相匹配的情况下,它就是数据一致的。
一个实时的数据库就是指所有的事务全部执行完毕后才响应。如果一个正在运行数据库管理的系统崩溃了,而对事务的处理结果还存在缓存中而没有写入到磁盘文件中的情况,当系统重新启动时,系统数据就是非实时性的。
数据库日志被用来在灾难发生后恢复数据库时保证数据库的一致性和实时性。
数据库恢复
正规的数据库备份是最基本和有效的数据库容灾技术。数据库备份和恢复技术与我们在错误!未找到引用源。中讲述的募低车谋阜莺突指词遣煌摹
数据库事务
如果要明白备份恢复技术,明白数据库事务的种类是很有用的。一个事务就是一个事务活动所引起的一系列的数据库 *** 作。例如,一个会计事务可能是由以下部分组成:
► 读取借方数据
► 减去借方记录中的借款数量
► 重写借方记录
► 读取贷方记录
► 在贷方记录上的数量加上从借方扣除的数量
► 重写贷方记录
► 写一条单独的记录来描述这次 *** 作,以便日后审计
所有这些 *** 作组成了一个事务,描述了一个业务动作。在上述例子中,无论借方的动作或是贷方的动作哪一个没有被执行,数据库都不会反映该业务执行正确。
数据库管理系统在数据库 *** 作时强迫进行事务定义,这意味着或者一个事务定义的应用的全部 *** 作结果都反映在数据库中,或者都没有反映在数据库中,即使数据库在事务执行过程中崩溃的情况下。
事务定义是关系数据库中最重要的关系之一。上述例子包含了两个数据库 *** 作:从借方数据中扣除资金,并且在贷方记录中加入这部分资金。如果系统在执行事务的过程中崩溃,如果此时已修改完毕借方数据,但还没有修改贷方数据,资金就会在此时物化。把这两个步骤合并成一个事务命令,这样在数据库系统执行时,要么全部完成,要么全部不完成,但当只完成一步时,系统是不会对已作的这一步做出响应的。
数据库崩溃恢复
一个运行着数据库系统的计算机随时都可能宕机。然而“已借未贷”或“已贷未借”的情况都可能出现。当系统崩溃后重启时,数据库管理系统必须允许这种可能性的发生,也就是说,在磁盘数据文件中可能包含一些部分完成的事务,在应用能够访问数据库数据之前,这些必须全部被检出。
防止上述情况发生的基本技术就是保存一份连续日志,记录将做的和完成的 *** 作。当需要修复损坏的数据库时,数据库系统重新应用这些日志,寻找那些将要执行但未完成的任务。如果任何类似的事务的已经在数据库中反映,这一定是颠倒的,并且数据库必须回滚。
使用这种日志重新应用的技术,数据库系统可以避免宕机所带来的已接受事务(应用已确认执行完毕的事务)的丢失。数据修复时,那些在宕机时处理结果还存在缓存中的已接受事务,结果会存放到磁盘文件中。未接受事务(还没有被应用确认的事务)会被回滚,消除它所带来的对其他数据的影响。为了帮助解释数据库日志如何工作,Figure 1-1描述了一个简单的数据库管理组件。
数据库备份是应用系统安全性维护的重要手段。在应用系统运行时,需经常地将有关数据库的内容考贝到软盘上,以防止数据的丢失。虽然在“数据库基本 *** 作”中已具备数据库的备份与恢复功能,但那里主要用于对系统数据库进行定期维护,多偏重于保存数据库的结构。将数据库备份的功能赋予应用系统用户,能够更加准确地把握备份 *** 作的时机,更便于跟踪数据库的变化。
数据库备份的设计界面如下:
┌——————————————————┐
│ 数据库备份 │
├———————┬—————┬————┤
│ 备份方法提示│ 数据库 │ 范围 │ 窗口432 数据库备份
├———————┼—————┼————┤ 设计界面
│ │ │ │
… … … …
└———————┴—————┴————┘
功能提示如下:
———————————————————————————————————————
PgUp PgDn ↑↓:移光带 Ctrl+N:插入 Ctrl+Y:删除 F1:数据库选择 Space:范围 Esc:退出
———————————————————————————————————————
提示437 数据库备份设计界面功能键提示
⑴备份方法提示 与窗口429的排序方法提示项的作用相似,当应用系统运行时,以这些方法名称作为功能菜单选项,最长可达12个汉字。
⑵数据库 即备份的数据库。在本系统的10版中,一个备份提示项仅能对应于一个数据库的备份 *** 作,这里可用“F1”键选择这个备份数据库。
⑶范围 指数据库备份时考出的记录范围。在窗口432的第三栏中按下空格(Space)键,系统循环显示选择项“部分”和“全库”。“全库”选项指对整个数据库进行备份,而“部分”选项则指对满足一定条件的记录进行备份。备份的范围条件由一个公式确定,在窗口432的第二列中显示“部分”选项时设计者按下回车键,则系统d出一个窗口以对这个公式进行输入。
⑷Ctrl+N:插入 插入一个备份项目。
⑸Ctrl+Y:删除 删除一个备份项目。
⑹Esc:退出 完成备份设计。
控制文件在备份中意义重大 建议每次对其单独备份 如果数据库版本允许的话 应该设置为控制文件自动备 份 同时应该尽可能地增大CONTROL_FILE_RECORD_KEEP_TIME这个初始化参数的值 以便备份信息能更长时间的保留应该制定比较完善的备份计划 否则备份计划一旦出现缺口 将可能给系统带来灾难 记住 "可能出错的地方一定会出错"
熟悉RMAN内部备份机制 对DBMS_BACKUP_RESTORE的用法有一定的掌握在关键时侯很有帮助
备份脚本应该对Log重定向并保存 以便在出错的查找有用信息
与RMAN备份有关的优化备份 *** 作主要是完成以下三个步骤 从磁盘上读取数据 在内存中处理数据块 写入数据到磁盘或磁带以上的读写 *** 作可以同步或异步的完成 在同步I/O *** 作中 一个时间只允许有一个IO *** 作 但是在异步I/O *** 作中 一个时间允许有多个IO *** 作 因此 备份与恢复的调优主要集中在以下几个方面
??提高同步或异步I/O *** 作能力在支持异步 *** 作的 *** 作系统上 可以通过设置TAPE_AYSNCH_IO DISK_ASYNCH_IO和BACKUP_TYPE_IO_SLAVES来支持异步 *** 作 提高写的能力
??提高磁盘读能力可以在backup命令后通过设置DISKRATIO来保证从多个磁盘上读取数据 保证连续的数据流
??正确设置缓冲区与参数值设置LARGE_POOL_SIZE 使备份可以使用连续的缓冲池 通过设置DB_FIL_DIRECT_IO_COUNT可以提高缓冲区的利用 如果使用磁带备份 还可以设置BACKUP_TYPE_IO_SLAVES来提高磁带的写能力
??采用并行备份开辟多个通道 可以实现并行备份与恢复??
iii 备份RMAN数据库RMAN自己的数据库也需要备份 但是本身很小 而且不是经常发生变化 所以在每次RMAN备份完成后 都可以用如下脚本对RMAN数据库备份
EXP pafile =exprman sql exprman sql为USERID=RMAN/RMAN BUFFER= OWNER=RMAN FILE=RMAN DMP ROWS=Y GRANTS=Y PRESS=Y CONSISTENT=Y iv 使自动备份数据库自动备份数据库不外乎以下三种方式WINDOWS下的任务计划(At命令)
UNIX下的Crontab第三方工具如Viritas在以上三种方式中Viritas属于第三方工具 很多人可能都没有接触 主要说一下windows的任务计划与unix的cron 生成脚本文件 如backup rcv假定文件内容如下 $>cat backup rcv connect target sys/password rcvcat rman/rman@localname run{ allocate channel c type disk allocate channel c type disk allocate channel c type disk backup fileaperset format /u /oradata/backup/arch%u_%s_%p ??
archivelog all delete input ? ?
release channel c release channel c release channel c } 生成执行文件在windows上生成backup_archive bat 内容包括rman cmdfile = backup rcv在unix下生成 backup_archive sh 内容包括/oracle/ramn/rman cmdfile = backup rcv?? 加入调度在windows中用任务计划向导即可 或使用at命令
在unix中 在目标机器上编写一个文件 用以启动自动备份进程 假定文件名为ORACLE 文件将放在/var/spool/cron/crontabs目录下$>cat oracle backup_archive sh #表示星期天 点对数据库备份 backup_archive sh #表示每天 点 点备份Crontab文件的每一行由六个域(minutes hours day of month month day of week mand)组成 域之间用空格或Tab分隔开来五 常见误区 使用EXP/IMP备份EXP/IMP不是一个良好的备份工具 在以后的发展之中 ORACLE对EXP/IMP用于备份的支持会越来越低 ORACLE只是把EXP/IMP当作一个好的工具而不是备份工具 在对于大型数据库 如TB级数据库或数据仓库 EXP/IMP肯定会力不从心
在应用程序中备份数据库在论坛上 有很多这样的要求 我怎么在程序中备份与恢复数据库? 首先说 这个并不是不可以实现 但是实现的过程会很复杂而且意外会很多 就我的感觉 提出这样问题的人 首先一点就是对ORACLE或DBA的不了解 如果ORACLE可以这么轻松的实现备份与恢复 那么我可以说 就不需要DBA了
冷备份比热备份更容易 效果会更好有人认为 冷备份是关闭数据库进行的一致性备份 肯定比热备份要好 使用也容易 其实不尽然 在热备份中 一样可以实现数据库的全备份 而且不会影响到数据库的运行 建议所有的生产机 都运行在归档方式下 采用热备份方式
六 常见问题 我导出的数据为什么不能导入 提示不支持的字符集转换答 参考上面的字符集原则 导出数据时客户端与数据库字符集一致 导入时修改为与目标数据库字符集一致
我的归档日志越来越多 我什么时候可以删除归档日志?
答 在每一次全备份(如OS全冷备份或全热备份)或基于全备份的增量备份(如RMAN基于 级备份上的增量备份)后都可以删除该备份点之前的归档日志 建议在磁带上保留一年
全备份时一定需要备份所有数据文件吗?
答 不需要 起码有两类数据文件可以不备份 一类就是临时数据文件 如果丢失 可以删除后重建 一类是只读表空间数据文件 如果上次备份以来 没有修改过表空间的只读属性 就可以不需要备份
联机日志需要备份吗?
答 如果是归档方式热备份 就没有必要备份联机日志 但是对于冷备份 可以备份联机日志 特别是不归档状态 备份过联机日志后的冷备份 因为数据库是一致的 可以恢复到该备份点
七 小结 什么是数据库备份 数据库备份就是把数据库复制到转储设备的过程
数据库的运行方式 可以分为归档方式和非归档方式 建议运行在归档方式下运行热备份
lishixinzhi/Article/program/Oracle/201311/17662
如何设置SQL Server数据库自动备份
数据对于企业来说很重要,因此我们要经常备份,但是我们不可能每天都去手工去备份,因为这样太麻烦了,因此我们可以通过SQL Server自身的自动备份功能,进行对数据库定时实时自动备份
工具/原料
SQL Server企业管理器
方法/步骤
依次单击:开始--程序--Microsoft SQL Server--企业管理器--SQL Server组--管理--数据库维护计划
在右侧空白处右键单击,新建维护计划--勾选要备份的数据库--下一步
指定数据库备份计划--调度--单击"更改"--设置备份的时间,备份周期--下一步
每日频率即是每天什么时间开始进行备份
发生频率即是执行的周期
指定备份磁盘目录--修改"使用此目录"的路径作为备份数据库的存放路径勾选删除早于此时间的文件,我这里选择一周,即是数据库备份文件把一周前的进行删除
给此任务计划填写一个名字:back 2单击"完成",就可以在数据库维护计划中看到刚才新建的计划
注意事项
一定要开启sql server agent服务
以上就是关于如何Oracle 数据库备份与恢复全部的内容,包括:如何Oracle 数据库备份与恢复、什么是数据一致性和完整性,如何保证、如何正确提高DB2数据备份和恢复的效率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)