第九章 备份与恢复简介
回顾 触发器是当特定事件出现时自动执行的存储过程 触发器分为 DML 触发器、DDL 触发器和数据库级触发器三种类型 DML 触发器的三种类型包括行级触发器、语句级触发器和 INSTEAD OF 触发器 一些常用的内置程序包: DBMS_OUTPUT 包输出 PL/SQL 程序的调试信息 DBMS_LOB 包提供操作 LOB 数据的子程序 DBMS_XMLQUERY 将查询结果转换为 XML 格式 DBMS_RANDOM 提供随机数生成器 UTL_FILE 用于读写操作系统文本文件
目标 了解数据库备份与恢复的基础知识 理解在 Oracle 环境中可能发生的故障类型 掌握导出和导入实用程序 了解数据库归档模式
备份与恢复简介 备份是数据库中数据的副本,它可以保护数据在出现意外损失时最大限度的恢复 Oracle数据库的备份包括以下两种类型: 物理备份是对数据库的操作系统物理文件 (如数据文件、控制文件和日志文件等)的备份 备份 逻辑备份是对数据库逻辑组件 (如表、视图和存储过程等数据库对象)的备份 物理备份 逻辑备份
故障类型 导致数据库操作中止的故障包括四种类型: 故障类型 语句故障 用户进程故障 实例故障 介质故障 当 Oracle 的数据库实例由于硬件或软件问题而无法 继续运行时,就会发生实例故障 在执行 SQL 语句过程中发生的逻辑故障可导致语句故障。如果用户编写的 SQL 语句无效,就会发生逻辑故障 当用户程序出错而无法访问数据库时发生用户进程故障。导致用户进程故障的原因是异常断开连接或异常终止进程 在数据库无法正确读取或写入某个数据库文件时, 会发生介质故障
导出和导入实用程序 4-1 导出和导入实用程序用于实施数据库的逻辑备份和恢复 导出实用程序将数据库中的对象定义和数据备份到一个操作系统二进制文件中 导入实用程序读取二进制导出文件并将对象和数据载入数据库中
导出和导入实用程序 4-2 导出和导入实用程序的特点有: 可以按时间保存表结构和数据 允许导出指定的表,并重新导入到新的数据库中 可以把数据库迁移到另外一台异构服务器上 在两个不同版本的Oracle数据库之间传输数据 在联机状态下进行备份和恢复 可以重新组织表的存储结构,减少链接及磁盘碎片
允许用户将运行参数和参数值存储在参数文件中, 导出和导入实用程序 4-3 使用以下三种方法调用导出和导入实用程序: 调用导出和导入程序 命令行参数 参数文件 交互提示符 允许用户将运行参数和参数值存储在参数文件中, 以便重复使用参数 在命令行指定执行程序的参数和参数值。 以交互的方式提示用户逐个输入参数的值。
导出和导入一个或多个指定的表空间中的所有对象 导出和导入实用程序 4-4 导出和导入数据库对象的四种模式是: 导出导入模式 完全数据库 表 用户 表空间 导出和导入一个或多个指定的表空间中的所有对象 导出和导入一个用户模式中的所有对象 导出和导入整个数据库中的所有对象 导出和导入一个或多个指定的表或表分区
导出实用程序 2-1 导出实用程序有以下常用命令参数: 参数 说明 USERID 确定执行导出实用程序的用户名和口令 BUFFER 确定导出数据时所使用的缓冲区大小,其大小用字节表示 FILE 指定导出的二进制文件名称,默认的扩展名是.dmp FULL 指定是否以全部数据库方式导出,只有授权用户才可使用此参数 OWNER 要导出的数据库用户列表 HELP 指定是否显示帮助消息和参数说明 ROWS 确定是否要导出表中的数据 TABLES 按表方式导出时,指定需导出的表和分区的名称 PARFILE 指定传递给导出实用程序的参数文件名 TABLESPACES 按表空间方式导出时,指定要导出的表空间名
导出实用程序 2-2 exp scott/tiger@accp file=scott_back owner=scott 按用户方式导出数据 exp scott/tiger@accp tables=(emp, dept) file=scott_back_tab 按表方式导出数据 exp system/aptech@accp tablespaces=(users) file=tbs_users 按表空间方式导出数据 exp system/aptech parfile='C:\parameters.txt' 使用参数文件导出数据
导出实用程序 2-2 exp scott/tiger@accp file=scott_back owner=scott 按用户方式导出数据 exp scott/tiger@accp tables=(emp, dept) file=scott_back_tab 按表方式导出数据 exp system/aptech@accp tablespaces=(users) file=tbs_users 按表空间方式导出数据 exp system/aptech parfile='C:\parameters.txt' 使用参数文件导出数据
导入实用程序 2-1 导入实用程序有如下常用命令参数: 参数 说明 USERID 指定执行导入的用户名和密码 BUFFER 指定用来读取数据的缓冲区大小,以字节为单位 COMMIT 指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交 FILE 指定要导入的二进制文件名 FROMUSER 指定要从导出转储文件中导入的用户模式 TOUSER 指定要将对象导入的用户名。FROMUSER与TOUSER可以不同 FULL 指定是否要导入整个导出转储文件 TABLES 指定要导入的表的列表 ROWS 指定是否要导入表中的行 PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数 IGNORE 导入时是否忽略遇到的错误,默认为N TABLESPACES 按表空间方式导入,列出要导入的表空间名
将scott用户的表导入到martin用户 导入实用程序 2-2 imp accp/accp@accp file=item_back.dmp ignore=y full=y 将整个文件导入数据库 imp system/aptech@accp file=scott_back fromuser=scott touser=martin tables=(emp,dept) 将scott用户的表导入到martin用户 imp system/oracle parfile='C:\parameters.txt' 使用参数文件导入数据
数据库归档方式 3-1 Oracle 数据库可以运行在两种归档方式: 非归档日志方式 归档日志方式 非归档日志方式可以避免实例故障,但无法避免介质故障。在此方式下,数据库只能实施冷备份 归档日志方式产生归档日志,用户可以使用归档日志完全恢复数据库
数据库归档方式 3-2 非归档日志方式下数据库的工作原理: 表空间脱机 备份表空间 恢复表空间 表空间联机
数据库归档方式 3-3 归档日志方式下数据库的工作原理: 准备向日志文件 2 写入信息 日志文件1填满 备份日志文件2 向日志文件2写入信息 清空日志文件 2
配置归档日志方式 4-1 配置数据库在归档日志方式下运行,包括以下三个步骤: 确保数据库当前不处于归档方式 设置相关数据库初始化参数 在归档日志方式下启动数据库
配置归档日志方式 4-2 查看当前数据库的归档方式
配置归档日志方式 4-3 设置相关启动参数
配置归档日志方式 4-4 以归档方式启动数据库
自动归档和手动归档 数据库的日志归档方式有两种: 归档日志方式下的数据库 自动归档对非活动日志文件文件进行自动归档 自动归档 手动归档 手动归档允许用户手动归档非活动日志文件文件的已填充组
获取归档日志信息 可以通过数据字典视图查看归档日志信息 V$ARCHIVE_DEST - 显示当前所有归档日志存储位置及其状态 V$ARCHIVE_LOG - 显示历史归档日志信息 SQL> SELECT DEST_ID,DEST_NAME,STATUS,DESTINATION FROM V$ARCHIVE_DEST WHERE STATUS='VALID'; SQL> SELECT DEST_ID,NAME,ARCHIVED FROM V$ARCHIVED_LOG; 目标位置编号 目标位置名称 归档日志文件名 及完整路径 是否已归档 目标位置的状态 归档日志文件的路径
总结 数据库备份用于保护数据库中的数据,有两种类型的备份:物理备份和逻辑备份 导致数据库操作中止的故障类型有:语句故障、用户进程故障、实例故障和介质故障 Oracle 提供导出和导入实用程序实施数据库的逻辑备份 导出导入实用程序有四种工作模式:完全数据库、表、用户和表空间 数据库可在两种方式下运行:非归档日志方式和归档日志方式