1、oracle的故障类型:语句故障、用户进程故障、实例故障、介质故障 2、备份类型:1)根据物理与逻辑分物理备份(备份物理文件)和逻辑备份(备份表等逻辑组件) 2)根据备份策略分:完全备份、增量备份、差异备份 3、恢复分类:实例恢复、介质恢复(分完全和不完全恢复)。 4、rman:恢复管理器: 组件:目标数据库target(需要备份的数据库)、服务器会话、rman资料库、恢复目录catalog、mml(磁带备份的媒体管理器)、快闪恢复区、辅助数据库。 步骤:创建恢复目录、注册目标数据库到恢复目录、配置通道、备份与恢复 注意事项:1)目标数据库必须配置为归档模式 2)备份使用backup命令,还原使用restore(重建文件)和recover(同步恢复)两个命令 5、数据泵逻辑备份: 导出数据:导出文件后缀为.dmp,命令expdp,可以导出库、表空间、表、用户模式。 导入数据:恢复数据,命令impdp 6、闪回技术:从任何逻辑错误中快速恢复。 包括:闪回查询、闪回版本查询、闪回事务查询、闪回数据库、闪回删除、闪回表。 需要设置闪回恢复区,可以基于scn和时间点闪回。 闪回数据库:需要在归档模式下、需要建立闪回恢复区 闪回表:需要启动row movement特性, 闪回删除:需要启动回收站(默认启动),清楚回收站用purge命令。 闪回表和删除不能用sys用户。 实验命令: 1、rman物理备份,备份整个数据库所有物理文件 sql>shutdown immediate ---在sql中执行 startup mount alter database archivelog ---设置数据库为归档日志模式 alter database open; $rman target sys/oracle11g ---在linux命令行中进入rman模式 rman>backup database ---备份整个数据库所有文件 rman>shutdown immediate ---关闭数据库 此时改名user01表空间文件 rman>startup mount restore database; ---恢复数据库,完成后应该可以看到user01恢复回来了 recover database; alter database open; 2、用expdp和impdp导入导出逻辑对象实现逻辑备份。 sql>host mkdir '/opt/oracle/backup'; ---创建本地目录用于存储备份文件 create directory dump_dir as '/opt/oracle/backup'; ---指定操作目录名并与本地目录绑定
解锁scott用户并设置connect,resource权限 grant read,write on directory dump_dir to scott; ---授予scott用户操作dump_dir的权限 $expdp scott/密码 directory=dump_dir dumpfile=scotttab.dmp tables=emp,dept ---在linux命令行导出 导出完成后可以删除scott的emp表,并验证表已经删除 $impdp scott/密码 directory=dump_dir dumpfile=scotttab.dmp tables=emp,dept ---在linux命令行导入 导入完成后查看scott的emp表,确保可查询到 3、使用flashback闪回技术 1)闪回数据库 sql>startup mount alter database flashback on; ---打开闪回日志功能 alter database open; set time on; ---显示系统时间 删除scott用户的表emp,再次关闭数据库并装载 flashback database to timestamp to_timestamp('2017-6-10 10:40:25','yyyy-mm-dd hh24:mi:ss'); ---将数据库闪回到设定的时间(删除前的时间),查看emp表恢复是否成功 alter database open resetlogs; 2)闪回表:必须使用普通用户,sys用户禁止闪回表,使用scott用户操作 sql>alter table dept enable row movement; 插入或者删除dept表的数据,查询操作成功 sql> flashback table dept to timestamp to_timestamp('2017-6-10 10:40:25','yyyy-mm-dd hh24:mi:ss')); 验证闪回成功 3)闪回删除:可恢复drop table语句删除的表,利用的是回收站功能,默认启用,不支持sys用户 sql>drop table emp; select object_name,original_name,type from user_recyclebin; ---查看回收站 flashback table emp to before drop; ---恢复删除的emp表 4)闪回查询:可以查询旧数据也可以恢复到旧数据 sql>update scott.emp set sal=2000 where empno=7844; ---改变emp表的值 commit; select * from scott.emp ---查当前值 select * from scott.emp as of timestamp to_timestamp('2017-6-10 10:40:25','yyyy-mm-dd hh24:mi:ss'));
---查过去时间点的值