逻辑备份和还原
- 执行逻辑备份
- 备份单表或者多表
备份test数据库中schema01模式下表名以t开头的表到backup/dump/table.dmp,格式为dmp。
sys_dump -Usystem -d test -f /backup/dump/table.dmp -Fc -t schema01.t*
查看备份文件信息
- 备份模式
备份test数据库中schema01模式到backup/dump/schema01.dmp,格式为dmp。
sys_dump -U system -d test -f /backup/dump/schema01.dmp -Fc -n schema01
- 备份数据库
备份test数据库到/backup/dump/dir1,备份为目录格式,并启用并行备份
sys_dump -U system -d test -f /backup/dump/dir1 -Fd –inserts -j 2
- 备份数据库到COPY格式的SQL脚本
备份test数据库中t01表到/backup/dump/t01-copy.sql,备份为copy格式的sql脚本。
查看备份文件信息
- 备份数据到INSERT格式的SQL脚本
备份test数据库中t01表到/backup/dump/t01-copy.sql,备份为copy格式的sql脚本。
查看备份文件信息
- 只备份对象定义,不包含表的数据
备份test数据库中相关对象定义信息到/backup/dump/dd1.sql,使用选项-s。
查看备份
sys_dump -Usystem -dtest -Fp -s -f /backup/dump/ddl.sql
- 只备份表的数据,不包含任何对象的定义
备份test数据中相关表的数据到/backup/dump/data.sql,使用选项-a
查看备份
- 执行逻辑还原
从DUMP格式的备份中还原表
- 使用systen用户登录test数据库并删除t01表
- 从备份/backup/dump/table.dmp中还原test库中的t01表
- 查看执行结果
注意:可以在执行还原时使用参数-c,让还原工具在还原表之前先删除已存在的表。
从SQL格式的备份中还原表
1、使用systen用户登录test数据库并删除t01表
2、执行备份脚本backup/dump/t01-copy.sql来还原t01表。
3、查看执行结果
还原对象到新模式中
创建名称为schema02的新模式
将备份/backup/dump/schema01.dmp中的对象还原到schema02模式中。
查看执行结果
- 逻辑备份锁超时
Sys_dump首先尝试对备份对象加ACCESS SHARE锁,该锁与TRUNCATE、DROP、ALTER、VACUUM FULL、LOCK TABLE冲突;为防止备份任务无休止的处在锁等待中,可使用参数lock-wait-timeout来设定等待时间,超时后备份任务报错退出。
会话1-在事务中截断表t01
显示开启一个事务
截断t01表,暂不提交和结束事务
会话2-备份表t01时处在等待中
逻辑备份test数据库中的t01表(备份任务一直处在锁等待中)
往下查看会话信息
会话3-查询会话信息
通过视图sys_stat_activity查看会话信息
会话4-备份表t01时使用锁等待超时参数
逻辑备份test数据库中的t01表并使用参数lock-wait-timeout(备份任务等待10秒后报错退出)
四、逻辑还原后验证数据一致性
根据HASH原理“两个相同数据输入后,输出的哈希值也移动相同”,通过对比数据的hash值可以验证还原后的数据是否与还原前一致。
备份、删除、还原t03表后查看HASH值
备份t03表、删除t03表、还原t03表
查看还原t03表后的hash值(应该与备份前的hash值相同,证明恢复后的数据是一致的)
五、sys_dumpall的使用
sys_dumpall逻辑备份工具支持备份整个集簇中的数据,也支持只备份全局对象、角色、表空间、模式等。
备份所有数据库
新建数据库db01
在db01数据库中新建模式schema03
在模式schema03下创建t03、t04表,并在每张表中插入2行数据
备份数据库
从备份文件恢复所有数据库
注意:如果原数据库不存在的话需要先手动创建数据库,然后才能进行恢复操作。
执行数据恢复命令时,连接哪一个数据库并不重要,因为由sys_dumpall创建的脚本将包含合适的命令来创建和连接到被保存的数据库,SECURITY数据库为自带的数据库所以会有已存在的报错。
备份全局对象
只备份自定义的角色信息
只备份自定义表空间的定义信息
同时备份自定义角色和表空间的定义信息
只备份所有对象的定义信息(不包含表的数据)
六、逻辑备份总结
逻辑备份优点
- 移植性比较好,可跨平台恢复和还原。
- 灵活性强,可选择对象执行细粒度备份和还原。
- 备份转存储的文件类型丰富,其中文本格式的文件支持内容查看和修改。
- 在线备份和其它并发的DML操作不会冲突。
逻辑备份缺点
- 由于逻辑备份速度较慢,不适合对大型系统执行全量数据备份。
- 逻辑备份的内容只是数据在备份时间点的快照,无法利用归档日志执行完全恢复。
sys_dump和sys_dumpall的区别
(1)sys_dump支持细粒度备份,sys_dumpall强制备份整个数据库集簇中的数据
(2)sys_dump支持4中备份格式,sys_dumpall只支持备份为SQL脚本格式。
(3)sys_dump支持压缩和加密备份,sys_dumpall不支持压缩和加密备份
(4)sys_dump必须要连接到指定的数据库,sys_dumpall不能指定连接的数据库
逻辑还原表时的注意事项
1、再利用逻辑备份文件执行表的恢复时,-t参数后的值不能采用“模式名.表名”的格式,命令不会报错,但无法完成恢复。
2、当逻辑备份文件中包含有多个模式中的同名表时,在使用”-t 表名”的方式执行恢复时,如果不指定-n选项,那么所有模式下与”表名”同名的表都将被恢复,因此想恢复指定模式下的表时,需要使用-n选项。