• 1. ORACLE数据库管理员 -备份与恢复篇技术支持部 汤庆锋 福州磬基电子有限公司
  • 2. 本课程学习内容逻辑备份 物理备份 脱机物理备份 联机物理备份 备份实例
  • 3. ORACLE备份方式 数据库的备份和恢复是数据库管理人员的重要职责之一。 当数据库中的数据被破坏时,数据库管理人员应尽快地恢复, 以确保数据库系统正常使用。 ORACLE备份有三种方式: 脱机物理备份 联机物理备份 逻辑备份 逻辑备份是读取一系列的数据库记录集,并写入二进制文件中,这些记录集的读取与其所处位置无关。 物理备份它涉及到组成数据库的文件,但不考虑逻辑内容。
  • 4. 脱机物理备份 脱机物理备份是指数据库在关闭情况下,对数据库文件进 行备份。数据库使用的每个文件都被备份下来,这些文件包括: 所有数据文件(v$datafile) 所有控制文件 (v$controlfile) 所有联机REDO LOG 文件(v$logfile) INIT.ORA文件(可选) 注意: 值得注意的是脱机备份必须是数据库关闭的情况下完成,当数据库 开着的时候,执行数据库文件系统备份无效。
  • 5. 脱机备份步骤备份步骤: (1)列出备份文件清单 备份的物理文件应包括所有数据文件、在线日志文件、控制 文件和参数文件。 缺省所有文件在%ORALE_HOME% \DATABASE\ (2)以正常方式关闭数据库 SVRMGR>STUTDOWN; (3)备份(1)清单中列出的文件 例:COPY D:\ORANT\DATABASE\*.* E:\BACKUP (4)重新启动数据库 SVRMGR>STARTUP;
  • 6. 脱机物理备份恢复恢复步骤: (1)如果必要需重新安装ORACLE (2)关闭数据库 SVRMGR>STUTDOWN ; (3)导入最近脱机完全备份文件备份的物理文件应包括所有数 据文件、在线日志文件、控制文件和参数文件。 例:COPY E:\BACKUP\DATABASE\*.* D:\ORANT\DATABASE (4)启动数据库 SVRMGR>STARTUP; 优点:备份和恢复都易于操作 缺点:必须关闭数据库,且只能恢复到备份点
  • 7. 联机备份(热备份) 数据库需要二十四小时运行,而且随时有新的数据加入.数据丢失将影响个公司。 联机备份前提条件: 数据库必须设置为archivelog mode 设置步骤: 修改初始化参数文件,例如INITORCL.ORA 加入: log_archive_start = true # if you want automatic archiving log_archive_dest = d:\orant\database\archive log_archive_format = log%s.arc 修改数据库模式 svrmgr>startup mount ; svrmgr>alter database archivelog; svrmgr>alter database open;联机备份(热备份)
  • 8. 在线备份在线备份用户表空间(user_data)的步骤如下: 1.sql>connect system/manager //设置开始在线备份标志 2.sql>alter tablespace user_data begin backup; //备份表空间所对应的数据文件 3.sql>host copy d:\orant\database\usr1orcl.ora d:\orabak\ //设置停止在线备份标志 4.sql>alter tablespace user_data end backup;
  • 9. 假设有一天用户表空间的数据文件(usr1orcl.ora)的磁盘出现故障(或被误删除),数据库打不开(指定数据文件找不到),ORACLE提示要进行介质恢复。
  • 10. 逻辑备份是通过读取数据库记录集,且将记录集写入二进 制文件来实现。这种记录集的读出与物理位置无关。ORACLE的 逻辑备份实现方法: EXPORT实用程序来实现(exp.exe) Oracle Enterprise Manager->Date Manager 逻辑备份
  • 11. 导出备份有三种模式: 用户模式:导出用户所有对象以及对象中的数据; 表模式:导出用户所有表或者指定的表; 整个数据库:导出数据库中所有对象。 它的备份有三种类型: 完全型(COMPLETE EXPORT):备份整个数据库; 积累型(COMULATIVE ERPORT):备份上一次积累型备份所改变的数据 增量型(INCREAMENTAL EXPORT):备份上一次备份后改变的数据。 EXPORT 的命令可以交互式、命令行(建议使用)、参数文件的方式进行。具体每一种的方式的操作可参考有关资料,也可通过imp help=y的查看帮助。 导出备份
  • 12. 导出备份示例在此用命令行方式列举一些常用的例子: 重要的关键字说明: FILE:由EXPORT建立的输出文件名。缺省:expdat.dmp TABLES: 指定要导出的表。 OWNER: 指定要导出的用户。 FULL: 导出整个数据库的标志。 例:导出SCOTT用户的EMP、DEPT表到scott.dmp文件 EXP scott/tiger file=scott.dmp tables=(emp,dept) 例:导出SCOTT用户的所有对象到scott.dmp文件 EXP system/manager@oracle file=scott owner=scott 例:全数据库导出到fulldb.dmp文件 EXP system/manager@oracle file=fulldb.dmp full=Y
  • 13. IMPORT导入IMPORT导入: 导入的过程是导出的逆过程,这个命令先读取导出来的导出 转储二进制文件,并运行文件,恢复对象用户和数据。 IMPORT命令执行的方法和EXPORT方案有关。 如果EXPORT所实施的是完全型方案(FULL)则在IMPORT时所有的数据对象,包括表空间,数据文件,用户都会在导入时创建,但考虑到数据库中的物理布局,预先创建表空间和用户是有用的。 如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式,则需要预先设置好表空间、用户、数据文件。
  • 14. 逻辑恢复示例例:用导出文件scott1.dmp,恢复emp、dept表 C:\>IMP scott/tiger@oracle file=scott tables=(emp,dept) 例:用导出文件scott.dmp,恢复scott用户的全部对象 C:\>IMP system/manager@oracle file=scott fromuser=scott touser=scott 例:用导出文件fulldb.dmp,恢复的整个数据库 C:\>IMP system/manager@oracle file=fulldb.dmp full=Y
  • 15. ORACLE数据库恢复管理器(RMAN) RMAN(即Recover Manager)是ORACLE数据库备份和恢复的主要管理工具之一,它可以很方便快捷地对数据库实现备份和恢复,而且它还可以保存已经备份的信息以供查询。用户还可以不经过实际的还原即可检查已经备份的数据文件的可用性。你还可以通过图形见面和命令行进行所有的备份工作。RMAN恢复管理器的主要特点归纳如下: 可实现增量备份 可以实现对数据库表,控制文件,数据文件和归档日志备份 可实现多线程备份 可以存储备份信息 可以检测备份是否可以成功还原
  • 16. 恢复管理器(RMAN)使用RMAN的两种方式: Nocatalog 不使用恢复目录,而是与目标数据库(即所要执行备份和恢复的数据库)直接相连。选择这种方式,数据库的RMAN备份信息都将存储于控制文件中。 Catalog 使用恢复目录为可选项,目标数据库的RMAN备份信息都将存储于另一个数据库中。
  • 17. Nocatalog下连接RMAN Nocatalog为不使用恢复目录,而是与目标数据库(即所要执行备份和恢复的数据库)直接相连。选择这种方式,数据库的RMAN备份信息都将存储于控制文件中。 连接命令格式: rman nocatalog target <用户名>/<口令> <用户名>:用户必须为具有SYSDBA权限的用户
  • 18. Catalog恢复目录下连接RMAN 如果选择恢复目录,则必须另外选择一个数据库来存放目标数据库的恢复信息。一般用于管理多个数据库的备份信息。 需另外指定一个数据库作为恢复目录的存储。 可利用到RMAN的所有功能,例如检查一个备份集是否有用、创建存储脚本等功能。
  • 19. 创建恢复目录创建恢复目录步骤: 1.在指定创建恢复目录的数据库上,创建一用户rman,并授予connect,resource,recover_catalog_owner权限。 (1).sql>connect / as sysdba; (2).sql>create user rman identified by rman default tablespace users temporary tablespace temp; (3).sql>grant connect,resource,recover_catalog_owner to rman; (4).使用rman帐号登录 rman>connect catalog rman/rman (5).创建恢复目录 rman>create catalog tablespace users;
  • 20. 使用恢复目录连接命令格式 Rman catalog rman/rman@db1 target sys/sys@db2 Db1:恢复目录数据库的连接串 Db2:要备份的目标数据库连接串
  • 21. RMAN备份命令备份命令格式 Rman>run { Allocate channel <通道名称> type <设备类型> Format <写入的文件格式>; Backup [相应名称] } 通道名称:通道名称自定义如,c1,c2等 设备类型:只有两种即:DISK(磁盘)或SBT_TYPE(磁带)
  • 22. 备份实例例1.使用RMAN备份整个数据库,备份集以d:\backup\dbfull.bak 保存。 1.C:>rman nocatalog target sys/sys 2.rman>run { Allocate channel c1 type disk Format ‘d:\backup\dbfull.bak’; Backup database; } 注意:如果为nocatalog模式,因为所有rman备份信息都保存在控制文件,故为灾难恢复需要附加做控制文件的拷贝备份,在以上脚本加上一句:copy current controlfile to ‘d:\temp\control.bak’;
  • 23. 备份实例例2.使用RMAN备份表空间‘USER”,备份集以‘d:\backup\ Ts_user.bak 保存。 Run { allocate channel c1 type disk format 'd:\temp\ts_user.bak'; backup tablespace USERS; }
  • 24. 备份实例例3.使用RMAN备份数据文件d:\orant\database\usr1orcl.ora’,备份集以‘d:\backup\df_usr.bak’保存。 run { allocate channel c1 type disk format 'd:\temp\df_usr.ora'; backup datafile 'd:\orant\database\usr1orcl.ora'; }
  • 25. 备份实例例4.使用RMAN备份所有归档重做日志文件,备份集以‘d:\backup\archivelog.bak’保存。 run { allocate channel c1 type disk format 'd:\temp\archivelog.bak'; backup archivelog ; } 选项:delete input
  • 26. 备份实例例4.使用RMAN备份控制文件,备份集以‘d:\backup\control.bak’保存。 有两种方式备份控制文件: 1。需恢复目录或控制文件的备份信息恢复 run { allocate channel c1 type disk format 'd:\temp\control.bak'; backup current controlfile ; } 2.拷贝方法,无需恢复目录或控制文件的备份信息恢复,建议采用 run { allocate channel c1 type disk; copy current controlfile to ‘d:\temp\control.bak’ ; }
  • 27. 恢复实例例:恢复整个数据库 Run { Allocate channel c1 type disk; Restore database; Recover database; Sql ‘alter database open’; } 注意:被恢复的数据库需要为“mount”状态 执行上面的脚本系统做了如下工作: 1)RMAN分配通道c1用于恢复操作 2)RMAN从备份集中还原所有最近有效的数据文件 3)通过为介质恢复提供所需的归档重做日志文件,恢复数据库 4)最后,打开数据库,使数据库可以正常访问。
  • 28. 恢复实例例:恢复表空间USERS rman>run { allocate channel c1 type disk; sql 'alter tablespace user_data offline'; restore tablespace user_data; recover tablespace user_data; sql 'alter tablespace user_data online'; } 执行上面的脚本系统做了如下工作: 1)RMAN分配通道c1用于恢复操作 2)将要恢复的表空间“user_data”脱机 3)RMAN从备份集中还原属于表空间“user_data”的数据文件 4)通过为介质恢复提供所需的归档重做日志文件,恢复属于表空间“user_data”的数据文件. 5)最后,打开RMAN将表空间“user_data”联机,使表空间可以正常访问.
  • 29. 恢复实例例:恢复控制文件 rman>run { allocate channel c1 type disk; restore controlfile; } 例:恢复归档重做日志文件 rman>run { allocate channel c1 type disk; Restore archivelog all; }
  • 30. (本页无文本内容)
  • 31. 问题?