Oracle数据库备份与恢复
一、脱机备份与恢复
1.脱机备份
获取数据文件列表
获取控制文件列表
获取联机重做日志文件列表
备份测试
建立测试表
关闭数据库
建立备份的目录,复制文件到备份的目录,包括全部的数据文件、控制文件和重做日志文件(第一次尝试的时候被拒绝访问,只需要以管理员身份打开命令行即可)。
在oracle中当我们新建了多个数据库后,再次登录时,系统默认的是最后创建的那个数据库,所以上述操作默认在TEST4数据库中进行,要备份TEST4中的数据(这里一定要把上面查询到的文件都备份,如果缺文件则无法进行恢复,注意!!!)
启动数据库,增加测试记录
删除文件,模拟数据库损坏
2.脱机恢复
关闭数据库,将备份的数据文件还原到原来所在的位置
启动数据库,查询数据记录丢失情况
数据库恢复成功,但备份之后与崩溃之前的数据丢失了。意味着这种恢复可以完全恢复到备份的点上。
二、联机备份与恢复
1.将数据库转换为归档模式
创建两个目录
设置参数,指定归档目的地和控制归档日志文件名
关闭数据库,再在加载模式中启动数据库,并将数据库转换至文档模式后打开数据库,查询数据库及归档器进程状态
执行日志切换,查询数据库归档方式
2.联机备份
建立测试表并添加记录
将数据库的表空间设为联机备份状态,查 询bda_data_file 数据字典视图确定所有表空间的数据文件
备份该表空间的所有数据文件,并取消表空间的备份状态,备份控制文件后向测试表中添加一条记录,再进行日志切换
关闭数据库,模拟丢失数据文件
3.联机恢复
将出现问题的表空间数据文件修改为脱机状态,修改数据库为打开状态,将备份的数据文件复制到原来的目录
用 recover 命令进行介质恢复,完成后将表空间数据文件恢复为联机状态,查询数据记录丢失情况
可以发现,数据库恢复成功,数据没有丢失。
若丢失的数据文件有多个,则应先将相应的数据文件全部进行备份,再使用类似的恢复步骤进行恢复。
三、不完全恢复
1.基于 cancel 的恢复
基于 cancel 的不完全恢复适用场景:recover 时、所需的某个归档日志损坏,或主机断电、current 状态的联机日志损坏。
关闭数据库,使用操作系统命令将原来备份的文件复制到正确的目录下;使用 startup mount 命令启动数据库
2.基于时间点的恢复
首先关闭数据库,使用操作系统命令将原备份的文件复制到正确的目录下;使用 startup mount 命令启动数据库
使用 recover 命令对数据库执行基于时间点的恢复,完成恢复操作后,使用 resetlogs 模式启动数据库
3.基于 SCN 的恢复
SCN (System Change Number)是当 Oracle 数据库更新后,由 DBMS自动维护去累积递增的一个数字。在 Oracle 中有四种 SCN,分别为:系统检查点 SCN、数据文件检查点 SCN、启动 SCN、终止 SCN。
基于 SCN 的不完全恢复使用情况跟基于时间一样,只是这里是根据 SCN 值来恢复的,查询系统检查点 SCN。
首先关闭数椐库;使用操作系统命令将原备份的文件复制到正确的目录下;使用 startup mount 命令启动数据库
使用 recover 命令对数据库进行恢复。恢复操作完成后,使用 resetlogs 模式启动数据库
四、使用EXP/IMP命令导出/导入数据
1.EXP 导出命令概述
可以对所有表执行全数据库导出(Complete Export)或者仅对上次导出后修改的表格全数据库导出。增量导出有两种不同类型:Incremental (增量)型和 Cumulative(积累)型。Incremental 导出将导出上次导出后修改过的全部表;而 Cumulative 导出将导出上次全导出修改过的表。可使用 Export 实用程序来压缩数据段碎片的盘区。
从命令行调用 Export 程序并且传递各类参数和参数值,可以完成导出操作,参数如下:
- Userid:执行导出的用户名和口令,如果是 EXP 命令后的第—个参数,则关键字 Userid 可以省略
- Buffer:用于获取数据行的缓冲区尺寸,默认值随系统而定,通常设定一个高值(>64000)
- File:导出转储文件的名字
- Filessize:导出转储文件的最大尺寸。如果 file 条目中列出多个文件,将根据 Filessize 设置值导出这些文件
- Compress:Y/N 标志,用于指定导出是否应把碎片段压缩成单个盘区。这个标志影响将存储到导出文件中的 storage 子句
- Grants:Y/N 标志,指定数据库对象的权限是否导出
- Indexes:Y/N 标志,指定表上的索引是否导出
- Rows:Y/N 标志,指定行是否导出。如果设置为 N,在导出文件中将只创建数据库对象的 DDL
- Constraints:Y/N 标志,用于指定表上的约束条件是否导出
- Full:若设为 Y,执行 Full 数据库导出
- Ower :导出数据库账户的清单;可以执行这些账户的 User 导出
- Tables:导出表的清单;可以执行这些表的 Table 导出
- Recordlength:导出转储文件记录的长度,以字节为单位。除非是在不同的操作系统间转换导出文件,否则就使用默认值
- Direct:Y/N 标志,用于指示是否执行 Direct 导出。Direct 导出在导出期间绕过缓冲区,从而大大提高导出处理的效率
- Inctype:要 执行 的到处 类型 ( 允许 值为 complete ( 默 认) 、cumulative 和 incremental)
- Record:用于 incremental 导出,这个 Y/N 标志指示一个记录是否存储在记录导出的数据字典中
- Parfile:传递给 Export 的一个参数文件名
- Statistics:这个参数指示导出对象的 analyze 命令是否应写到导出转储文件上。其布效值是 compute、estimate (默认)和N
- Consistent:Y/N 标志,用于指示是否应保留全部导出对象的读一致版本。在 ExPort 处理期间,当相关的表被用户修改时需要这个标志
- Log:导出日志的文件名
- Feedback:表导出时显示进度的行数。默认值为 0,所以在表全部导出前没有反馈显示
- Query:用于导出表的子集 select 语句
- Transport_tablespace:如果正在使用可移动表空间选项,就设置为 Y。和关键字tablespace 一起使用
- Tablespaces:移动表空间时应导出其元数据的表空间
- Object_consistent:导出对象时的事物集,默认为 N,建议采用默认值
- Flashback_SCN:用于回调会话快照的 SCN 号,特殊情况下使用,建议不用
- Flashback_time:用于回调会话快照的 SCN 号的时间,如果希望导出不是现在的数据,而是过去某个时刻的数据的话,可使用该参数
- Resumanle:遇到错误时挂起,建议采用默认值
- Resumanle_timeout:可恢复的文本字符串,默认值为 Y,建议采用默认值
- Tts_full_check:对 TTS 执行完全或部分相关性检查,默认值为 Y,建议采用默认值
- Template:导出的模板名
导出有以下三种模式:
- 交互模式。在输入 EXP 命令后,根据系统的提示输入导出参数,如用户名、口令和导出类型等参数
- 命令行模式。命令行模式和交互模式类似,不同的是使用命令模式时,只能在模式被激活后,才能把参数和参数值传递给导出程序
- 参数文件模式。参数文件模式的关键参数是Parfile。Parfile的对象是一个包含激活控制导出对话的参数和参数值的文件名
2.EXP导出
建立导出的测试环境
将数据库 TEST4完全导出,用户名 system,密码 123456
将数据库中 system 用户与 usertest001 用户的表导出
将数据库中的表 tablezf001导出
3.IMP 导入命令概述
数据导出后,可以使 Import 工具将导出的文件再导入到数据库中。Import 工具能够读取由 Export 工具生成的二进制导出转储文件并执行文件中的命令,能够从导出转储文件中导入部分或全部数据
导入操作可以交互进行也可通过命令进行。导入操作选项同导出的操作一样
导入表
导入自己的表
导入表到其他用户
要求该用户具有 DBA 的权限,或是imp_full_database,在执行如下语句之前必须先执行 grant dba to userzf001 的授权语句
导入方案
导入方案是指使用 Import 工具将文件中的对象和数据导入到一个或是多个方案中。如果要导入其他方案,要求该用户具有 DBA 的权限,或者imp_full_database
导入自身的方案
导入其他方案
导入数据库
五、使用OEM导出/导入数据
1.备份准备
使用 OEM 进行备份之前,需要建立相关的操作系统备份用户,其可以是已经存在的用户或是新建一个用户。本实验中将新建一个用于Oracle 备份的操作系统用户
在 操 作 系 统 中 新 建 一 个 用 户 , 其 用 户 名 为 :oraclezf001,密码为:123456
编 辑 oraclezf001 用 户 的 属 性 , 将 其 隶 属 于
Admimstraors 和 ora_dba 组
在开始运行处录入 secpol.msc 进入“本地策略”→“用户权限分配”中,将“作为批处理作业登录”权限添加给 oraclezf001 用户
通过以上设置,我们已经建立好了 OEM 备份使用的操作系统用户,并具有相关权限
2.使用 OEM 导出数据
OEM 在进行数据逻辑备份时,实际使用 Oracle 11g 的 EXPDP 程序在服务器端执行备份
创建测试环境步骤
以 SYSTEM 用户的普通身份登录 OEM
单击“数据移动”页面“移动行数据”项下的“导出到导出文件”链接
在“导出:导出类型”页面选择“方案”选项,输入主机 身 份 证 明 项 下 的 用 户 名 及 口 令
在“导出:方案”页而的初始状态下,没有默认的方案被选择,单击“添加”按钮
在“导出:添加方案”页面选择方案的名称,单击“开
始“按钮,在搜索结果栏中显示相应的方案名,选择需要导出的方案笔 USERZF001,单击“选择”按钮
在“导出:选项”页面单击“显示高级选项”链接,将显示导出的内容、闪回、查询等,单出“下一步”按钮
点击“创建目录对象”,输入目录名称,例如“ORABACKDIR”(建议使用大写),在路径中输入存储备份文件的文件夹地址“G:\oracle\bak”,可以点击“测试文件系统”进行测试,注意文件夹地址必须在服务器上已经存在
:在目录对象下拉菜单中选择刚刚创建的“ORABACKDIR”
本页指定存储文件的存放位置,在页面中的目录对象
下拉菜单中选择刚刚创建的“ORABACKDIR”,文件名输入相关值,建议添加“%U”通配符,这样当一个存储文件写满时会自动创建新的文件。在最大文件大小中指定最大文件大小,此处输入 2048,表明每个存储文件最大为 2GB。单击“下一步”按钮继续
在页面中输入作业名称,这里输入“FIRSTEXP”(建议使用大写),可以在“说明”中添加相关的作业说明,如“导出USERTEST001 的数据”。指定启动时间,这里选择“立即”。单击“下一步”按钮继续
在“导出:复查”页面中,显示了作业的导出类型、统计信息类型、并行度、要导出的文件、日志文件及作业调度,单击“提交作业”按钮
“ 复查”页面中检查无误后点击“提交作业”。如果提
交成功,页而将转向“作业活动”的“确认”页面。在页面的列表中可以看到“FIRSTEXP”的状态为“正在运行”
在等待一定时间后,显示成功创建作业的信息,可以
点击页面中的“开始”对页面进行刷新,当列表中为空时,表示导出已经成功结朿(因为第一次作业提交有问题,所以又创建了一个名称为SECONDEXP)
3.使用 OEM 导入数据
使用 OEM 导入方式导入上一任务中备份的表
先将 USERTEST001 用户删除
以 SYSTEM 用户的普通身份登录 OEM,单击“数据移动”页面“移动数据”项下的“从导出文件导入”,打开“导入:文件”页面,选择目录对象为 ORABACKDIR,选择导入类型为“方案”,输入主机身份证明的用户名及口令,单击“继续”按钮
在导入读取成功页面中显示“已成功读取导入文件”后单击“添加”按钮
单击“添加”按钮,在弹出页面选择方案USERZF001,单击“选择”按钮
在“导入:方案”页面中单击“下一步”按钮
在新页面中可以指定“重新映射方案”“重新映射表空间”“重新映射数据文件”时,使用默认设置,不进行修改。单击“下一步”继续
选择或创建生成日志文件的目录,本例中选择“orabackdir2”。在高级选项中可以设置导入的具体方式,这里我们使用默认设置。单击“下一步”继续
在“导入:调度”页面的“作业名称”栏设定作业名称,如输入 firstimp,单击“下一步”按钮
在“导入:复查”页面显示调度信息,复查页面检查无误,单击“提交作业”按钮
在“作业活动”页面中显示“已成功创建作业”
使用“USERZF001”用户登录数据库查看导入数据,可以确认数据已经导入