《oracle 数据库的备份与恢复.ppt》由会员分享,可在线阅读,更多相关《oracle 数据库的备份与恢复.ppt(52页珍藏版)》请在三一办公上搜索。
1、数据库的备份与恢复,Question,1、创建一个概要文件,要求登录尝试3次,被锁口令3天后自动解除。并使用户user01采用该概要文件。2、禁用所有角色。,假设各用户初始时都不具有权限,经过下列语句的执行问myuser1,myuser2,user1,user2和user3各具有什么权限?SQLgrant create table to myrole1 with admin option;SQLgrant create session to myrole1;SQLgrant myrole1 to myrole2 with admin option;SQLgrant myrole1 to myu
2、ser1;SQLgrant myrole2 to myuser2 with admin option;SQLconn myuser1/abcSQLgrant myrole1 to user1;SQLconn user1/123SQLgrant create session to user2;SQLconn myuser2/abcSQLgrant create table to user3;,目标,在完成本章学习后,你将掌握下列技能:数据库备份和恢复策略 逻辑备份和恢复的方式 归档模式的设置 物理备份和恢复的方式 闪回操作,本章内容,数据库备份和恢复概述 逻辑备份和恢复(导出/导入)归档模式的设
3、置 脱机备份(冷备份)和恢复 联机备份(热备份)数据库的手动恢复 闪回操作,本章内容导航,数据库备份和恢复概述 逻辑备份和恢复(导出/导入)归档模式的设置 脱机备份(冷备份)和恢复 联机备份 数据库的手动恢复 闪回操作,数据库备份和恢复概述备份和恢复的概念,备份与恢复是数据库管理中最重要的方面之 一。如果数据库崩溃却没有办法恢复它,那么会对企业造成毁灭性的结果。数据库的备份是数据库中数据的副本,它可以保护数据在出现意外损失时最大限度的恢复。Oracle数据库使用几种结构来保护数据:数据库后备、日志、回滚段和控制文件。,数据库备份和恢复概述数据库系统故障类型,故障类型,语句故障,介质故障,实例故
4、障,用户进程故障,导致数据库操作中止的故障包括四种类型:,在执行 SQL 语句过程中发生的逻辑故障可导致语句故障。如果用户编写的 SQL 语句无效,就会发生逻辑故障,当用户程序出错而无法访问数据库时发生用户进程故障。导致用户进程故障的原因是异常断开连接或异常终止进程,当 Oracle 的数据库实例由于硬件或软件问题而无法继续运行时,就会发生实例故障,在数据库无法正确读取或写入某个数据库文件时,会发生介质故障,Oracle数据库的备份包括以下两种类型:,备份,物理备份,逻辑备份,对数据库的操作系统物理文件(如数据文件、控制文件和重做日志文件等)的备份 有脱机备份(冷备份)和联机 备份(热备份),
5、对数据库逻辑组件(如表、视 图和存储过程等数据库对象)的备份 有导出/导入(EXPORT/IMPORT),数据库备份和恢复概述备份类型,导出/导入(EXPORT/IMPORT)将ORACLE中数据移出/移入数据库。导出实用程序将数据库中的对象定义和数据备份到一个操作系统二进制文件中。导入实用程序读取二进制导出文件并将对象和数据载入数据库中。,数据库备份和恢复概述逻辑备份和恢复,数据库备份和恢复概述物理备份类型,冷备份冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置。热备份数据库需要二十四小时运行,而且随时有新的数据加入。,本
6、章内容导航,数据库备份和恢复概述 逻辑备份和恢复(导出/导入)归档模式的设置 脱机备份(冷备份)和恢复 联机备份 数据库的手动恢复 闪回操作,逻辑备份和恢复(导出/导入)三种工作方式,使用以下三种方法调用导出和导入实用程序,调用导出和导入程序,命令行参数,参数文件,交互提示符,在命令行指定执行程序的参数和参数值。,以交互的方式提示用户逐个输入参数的值。,允许用户将运行参数和参数值存储在参数文件中,以便重复使用参数,逻辑备份和恢复(导出/导入)三种模式,用户模式(U方式)导出用户所有对象以及对象中的数据表模式(T方式)导出用户所有表或者指定的表整个数据库(E方式)导出数据库中所有对象,逻辑备份和
7、恢复(导出/导入)增量导出/导入,增量导出是一种常用的数据备份方法,它只能由SYSTEM对整个数据库来实施。三种类型:完全型(COMPLETE EXPORT):备份整个数据库积累型(COMULATIVE EXPORT):备份上一次积累型备份所改变的数据增量型(INCREAMENTAL EXPORT):备份上一次备份后改变的数据,导出工具exp交互式命令行方式使用的例子$exp test/testhduEnter array fetch buffer size:4096 回车Export file:expdat.dmp c:mybak.dmp 生成导出的文件名(1)E(ntire databas
8、e),(2)U(sers),or(3)T(ables):(2)U 3Export table data(yes/no):yes 回车Compress extents(yes/no):yes 回车Export done in ZHS16GBK character set and ZHS16GBK NCHAR character setAbout to export specified tables via Conventional Path.Table(T)or Partition(T)to be exported:(RETURN to quit)stu 要导出的表名.exporting tab
9、le CMAMENU 4336 rows exportedTable(T)or Partition(T)to be exported:(RETURN to quit)要导出的表名nTable(T)or Partition(T)to be exported:(RETURN to quit)回车Export terminated successfully without warnings.,逻辑备份和恢复(导出/导入)交互式导出exp,导入工具imp交互式命令行方式使用的例子$impImport:Release 8.1.6.0.0-Production on 星期五 12月 7 17:01:08
10、2001(c)Copyright 1999 Oracle Corporation.All rights reserved.用户名:test口令:*连接到:Oracle8i Enterprise Edition Release 8.1.6.0.0-64bit ProductionWith the Partitioning optionJServer Release 8.1.6.0.0-Production导入文件:expdat.dmp c:mybak.dmp 输入插入缓冲区大小(最小为 8192)30720经由常规路径导出由EXPORT:V08.01.06创建的文件已经完成ZHS16GBK字符集
11、和ZHS16GBK NCHAR 字符集中的导入,逻辑备份和恢复(导出/导入)交互式导入imp,导入工具imp交互式命令行方式使用的例子(续)只列出导入文件的内容(yes/no):no由于对象已存在,忽略创建错误(yes/no):no yes导入权限(yes/no):yes导入表数据(yes/no):yes导入整个导出文件(yes/no):no yes.正在将TEST的对象导入到TEST.正在导入表“stu 21行被导入成功终止导入,但出现警告。,逻辑备份和恢复(导出/导入)交互式导入imp,导出工具exp非交互式命令常用例子$exp help=y 获取帮助$exp system/manager
12、 file=bible_db log=dible_db full=y 导出一个完整数据库$exp system/manager file=bible_db log=dible_db full=y rows=n 导出数据库定义而不导出数据$exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)导出一个或一组指定用户所属的全部表、索引和其他对象$exp seapark/seapark file=tank log=tank tables=tank$exp system/manager file=tank
13、log=tank tables=(seapark.tank,amy.artist)导出一个或多个指定表,逻辑备份和恢复(导出/导入)命令行导出exp,导入工具imp非交互式命令常用例子$imp help=y 获取帮助$imp system/manager file=bible_db log=dible_db full=y ignore=y 导入一个完整数据库$imp system/manager file=seapark log=seapark fromuser=seapark 导入一个或一组指定用户所属的全部表、索引和其他对象$imp system/manager file=tank fro
14、muser=seapark touser=seapark_copy ignore=y 将一个用户所属的数据导入另一个用户$imp system/manager file=tank log=tank fromuser=seapark tables=(a,b)导入一个指定表,逻辑备份和恢复(导出/导入)命令行导入imp,逻辑备份和恢复(导出/导入)exp常用参数,逻辑备份和恢复(导出/导入)imp常用参数,数据库对象已经存在 一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等。数据库对象已经存在,按缺省的imp参数,则会导入失败;如果用了参数ignore=y,会把exp文件
15、内的数据内容导入;如果表有唯一关键字的约束条件,不合条件将不被导入;如果表没有唯一关键字的约束条件,将引起记录重复。权限不够把A用户数据导入B用户下,A用户要有imp_full_database权限。,逻辑备份和恢复(导出/导入)导入过程常见问题,数据库对象有主外键约束不符合主外键约束时,数据会导入失败。解决办法:先导入主表,再导入依存表disable目标导入对象的主外键约束,导入数据后,再enable它们。imp和exp使用的字符集不同如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.导入完成后再改回来。,逻辑备份和恢复(导出/导入)导入过程常见问
16、题,导入大表(大于80M)时,存储分配失败默认的EXP时,compress=Y,也就是把所有的数据压缩在一个数据块上。导入时,如果不存在连续一个大数据块,则会导入失败。导出80M以上的大表时,记得compress=N,则不会引起这种错误。imp和exp版本不能往上兼容imp可以成功导入低版本exp生成的文件,不能导入高版本exp生成的文件。,逻辑备份和恢复(导出/导入)导入过程常见问题,本章内容导航,数据库备份和恢复概述 逻辑备份和恢复(导出/导入)归档模式的设置 脱机备份(冷备份)和恢复 联机备份 数据库的手动恢复 闪回操作,归档模式的设置数据库归档模式概述,Oracle 数据库可以运行在两
17、种模式:非归档日志模式归档日志模式非归档日志方式可以避免实例故障,但无法避免介质故障。在此方式下,数据库只能实施冷备份。归档日志方式产生归档日志,用户可以使用归档日志完全恢复数据库。,表空间脱机,备份表空间,恢复表空间,表空间联机,归档模式的设置非归档模式下数据库工作原理,日志文件1填满,清空日志文件 2,向日志文件2写入信息,准备向日志文件 2 写入信息,备份日志文件2,归档模式的设置归档模式下数据库工作原理,归档模式的设置,关闭数据库:shutdown immediate以mount启动数据库:startup mount设置为归档模式:alter database archivelog;打
18、开数据库:alter database open;查看归档信息:archive log list,归档模式的设置三个关键系统参数,log_archive_start自动存档启用还是禁用。Oracle 9i这个参数一定要设置为true,Oracle 10g可以省略不设置,把该参数设置和归档模式设置绑定在一起。Log_archive_format指定归档日志命名格式。log_archive_format=arc%t%s.arc。%t是线程号(thread),%s是序号(产生日志的序号)。log_archive_dest指定归档日志文件存储位置。,可以通过数据字典视图查看归档日志信息V$ARCHIV
19、E_DEST:显示当前所有归档日志存储位置及其状态 SQL select dest_id,dest_name,status,destination from v$archive_dest where status=valid;V$ARCHIVE_LOG:显示历史归档日志信息 SQL select dest_id,name,archived from v$archived_log;,归档模式的设置获取归档日志信息,本章内容导航,数据库备份和恢复概述 逻辑备份和恢复(导出/导入)归档模式的设置 脱机备份(冷备份)和恢复 联机备份 数据库的手动恢复 闪回操作,脱机备份和恢复脱机备份步骤,找到所有需要
20、备份的文件 show parameter pfile找初始化参数文件select name from v$controlfile;找控制文件select file_name from dba_data_files;找数据文件select member from v$logfile;找重做日志文件select name,sequence#,first_change#from v$archived_log;找归档日志文件shutdown 关闭数据库将所有文件复制到备份硬盘或磁带上 startup 启动数据库,脱机备份和恢复脱机备份的恢复步骤,shutdown 关闭数据库将备份的数据文件和控制文件复
21、制到数据库中原来的位置也可将备份的重做日志文件、参数文件、口令文件复制到数据库中原来的位置(该操作不是必需的)startup 启动数据库,本章内容导航,数据库备份和恢复概述 逻辑备份和恢复(导出/导入)归档模式的设置 脱机备份(冷备份)和恢复 联机备份 数据库的手动恢复 闪回操作,联机备份,联机备份(热备份)数据库的前提条件数据库运行在归档模式Oracle数据库安装默认运行在非归档模式日志处理Oracle数据库的redo日志记录在数据库上进行的所有活动。LGWR后台进程以一种循环方式写这些日志文件,从第一个redo日志到下一个,直到该组的最后一个,然后由从第一个日志写起。,联机备份,在非归档模
22、式下,当循环写到最后一个日志文件后,就重写第一个日志。因此,非归档模式下唯一的数据库恢复办法就是使用冷备份。在归档模式下,当redo日志满时,一个ARCH后台进程就读取全部redo日志,然后将其写到归档日志。因此,可以使用热备份和点恢复。在归档日志模式下,如果归档日志目的空间已满,数据库活动将暂时停止,只有释放一些空间后,数据库才能继续运行。,联机备份联机备份举例,联机备份数据文件设置表空间为备份状态 alter tablespace 表空间名 begin backup;备份表空间的数据文件回复表空间为正常状态 alter tablespace 表空间名 end backup;备份控制文件 a
23、lter database backup controlfile to 备份文件名;,本章内容导航,数据库备份和恢复概述 逻辑备份和恢复(导出/导入)归档模式的设置 脱机备份(冷备份)和恢复 联机备份 数据库的手动恢复 闪回操作,数据库的手动恢复概述,数据库恢复就是根据归档日志或联机日志文件中的记录,以及数据库备份,把数据库复原到最近的状态。由于数据库出现的故障主要包括实例故障和介质故障,因此数据库的恢复也分为实例恢复和介质恢复。实例故障是指数据库系统本身发生故障,如操作系统错误、意外断电、或使用shutdown abort终止数据库实例所发生的故障。一般来说,实例恢复是数据库系统自动完成的。
24、,数据库的手动恢复介质恢复,介质恢复主要用于介质故障引起的数据库文件的破坏。介质恢复必须由数据库管理员手工完成最新数据库备份和日志文件备份的装入,并执行各种恢复命令才能够恢复。分为两大类:完全恢复和不完全恢复。,数据库的手动恢复完全恢复,完全恢复指将数据库恢复到发生故障的时间点,不丢失任何数据。完全恢复步骤以管理员登录系统立刻关闭数据库启动数据库mount状态,将数据库处在非归档模式下,打开数据库关闭数据库,备份所有相关文件以相反方式恢复数据库,不完全恢复指将数据库恢复到发生故障前的某一个时间点,此时间点以后的所有改动将会丢失。不完全恢复的方式基于时间的恢复 recover database
25、until time 时间点;基于撤销的恢复 recover database until cancel;基于更改的恢复 recover database until change SCN;,数据库的手动恢复不完全恢复,本章内容导航,数据库备份和恢复概述 逻辑备份和恢复(导出/导入)归档模式的设置 脱机备份(冷备份)和恢复 联机备份 数据库的手动恢复 闪回操作,闪回查询(Flashback Query)查询过去某个指定时间、指定实体的数据。闪回表(Flashback Table)使表返回到过去某一时间的状态。闪回删除(Flashback Drop)恢复被drop的表或者索引。闪回数据库(Fla
26、shback Database)使数据库迅速地回滚到以前的某个时间点或者某个SCN(系统更改号)上,而不需要进行时间点的恢复操作。基于闪回日志。,闪回操作闪回的种类,基于回滚数据(undodata),TO_TIMESTAMP函数格式为:TO_TIMESTAMP(timepoint,format)timepoint表示时间点format表示需要把timepoint转化为何种格式闪回查询举例:查询某一时间点A表的数据SQLselect*from A as of timestamp to_timestamp(2009-07-05 14:10:00,yyyy-mm-dd hh24:mi:ss);,闪回
27、操作闪回查询,闪回表语法 FLASHBACK TABLE schema.TO BEFORE DROP RENAME TO table|SCN|TIMESTAMP expr ENABLE|DISABLE TRIGGERS TO TIMESTAMP:系统邮戳,包含年月日时分秒。TO SCN:系统更改号。ENABLE TRIGGERS:表示触发器恢复以后为enable状态,而默认为disable状态。TO BEFORE DROP:表示恢复到删除之前。RENAME TO TABLE:表示恢复时更换表名。,闪回操作闪回表,闪回表举例启用行移动功能 SQL alter table departments
28、enable row movement;闪回表test SQLflashback table departments to timestamp to_timestamp(2009-08-01 14:10:00,yyyy-mm-dd hh24:mi:ss);,闪回操作闪回表,闪回删除是将被删除的数据库对象及其相依对象的复制保存在回收站中,在回收站被清空以前,被丢弃的对象并没有从数据库中删除。这就使数据库能够恢复被意外或者误操作而删除的表。如果要对DROP过的表进行恢复操作,可以使用闪回删除语句:FLASHBACK TABLE 表名 TO BEFORE DROP,闪回操作闪回删除,flashback database与recover database until time有什么区别,flashback 所得到得信息是在回滚段中得到的recover 是由日志恢复flashback log默认是保存一天,那也就是说一天之前的数据是无法通过flashback恢复的,而只能使用基于时间点的恢复。,本章内容小结,Oracle数据库备份和恢复的类型Exp/Imp命令的各种方式和常用参数数据库归档模式的修改和应用冷备份的步骤和恢复步骤热备份的前提和步骤介质恢复的种类和方法闪回查询、闪回表、闪回删除的应用,