备份与恢复

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'));
---查过去时间点的值

猜你喜欢

转载自blog.51cto.com/13502820/2106107