逻辑备份和还原

  • 执行逻辑备份
  1. 备份单表或者多表

备份test数据库中schema01模式下表名以t开头的表到backup/dump/table.dmp,格式为dmp。

sys_dump -Usystem -d test -f /backup/dump/table.dmp -Fc -t schema01.t*

查看备份文件信息

  1. 备份模式

备份test数据库中schema01模式到backup/dump/schema01.dmp,格式为dmp。

sys_dump -U system -d test -f /backup/dump/schema01.dmp -Fc -n schema01

  1. 备份数据库

备份test数据库到/backup/dump/dir1,备份为目录格式,并启用并行备份

sys_dump -U system -d test -f /backup/dump/dir1 -Fd –inserts -j 2

  1. 备份数据库到COPY格式的SQL脚本

备份test数据库中t01表到/backup/dump/t01-copy.sql,备份为copy格式的sql脚本。

查看备份文件信息

  1. 备份数据到INSERT格式的SQL脚本

备份test数据库中t01表到/backup/dump/t01-copy.sql,备份为copy格式的sql脚本。

查看备份文件信息

  1. 只备份对象定义,不包含表的数据

备份test数据库中相关对象定义信息到/backup/dump/dd1.sql,使用选项-s。

查看备份

sys_dump -Usystem -dtest -Fp -s -f /backup/dump/ddl.sql

  1. 只备份表的数据,不包含任何对象的定义

备份test数据中相关表的数据到/backup/dump/data.sql,使用选项-a

查看备份

  • 执行逻辑还原

从DUMP格式的备份中还原表

  1. 使用systen用户登录test数据库并删除t01表
  1. 从备份/backup/dump/table.dmp中还原test库中的t01表
  2. 查看执行结果

注意:可以在执行还原时使用参数-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数据库为自带的数据库所以会有已存在的报错。

备份全局对象

只备份自定义的角色信息

只备份自定义表空间的定义信息

同时备份自定义角色和表空间的定义信息

只备份所有对象的定义信息(不包含表的数据)

六、逻辑备份总结

逻辑备份优点

  1. 移植性比较好,可跨平台恢复和还原。
  2. 灵活性强,可选择对象执行细粒度备份和还原。
  3. 备份转存储的文件类型丰富,其中文本格式的文件支持内容查看和修改。
  4. 在线备份和其它并发的DML操作不会冲突。

逻辑备份缺点

  1. 由于逻辑备份速度较慢,不适合对大型系统执行全量数据备份。
  2. 逻辑备份的内容只是数据在备份时间点的快照,无法利用归档日志执行完全恢复。

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选项。