oracle sqldeveloper选择性复制备份数据库

时间:2024-03-24 13:18:14

有时需要复制的数据库比较大,复制太慢,或容易出错。

数据库小,简单的 就没这么复杂了,直接导出dmp或用工具都可以。这篇是针对比较大,选择性复制,且复制总是失败的情况。

方法如下。

工具 sqldeveloper.

思路:先复制表和数据(选择性复制表数据),再复制视图,触发器序列等。以免触发器序列等对复制数据时造成干扰,导致复制失败。

1.

例:从A复制到B

建立源数据库连接 A 

建立目标连接B        

2.点击工具:数据库复制。

在此之前可以先在源数据库上查询下数据量比较大的表,

select segment_name, round(bytes/1024/1024/1024,3) g,segment_type
from user_segments
where segment_type = 'TABLE' or  segment_type = 'TABLE PARTITION' order by g desc

,或者自己知道哪些表大,没有必要copy,心中有数就行

oracle sqldeveloper选择性复制备份数据库

3.

选择好A , 和 B 连接,

点击下一步

oracle sqldeveloper选择性复制备份数据库

4.

只选择表,其它全部取消掉。

尤其是触发器和序列不要选,以免后边复制数据的时候 生成新的id(造成跟源数据id不一致)等等。

点击下一步。

oracle sqldeveloper选择性复制备份数据库

5.这一步是复制上一步选择的项,表结构需要传输的数据量很小,可以直接下一步,当然也可以按名称模糊搜索选择性复制。

oracle sqldeveloper选择性复制备份数据库

6.指定数据。根据前边sql查到的结果,结合实际情况可以把一些不想要的数据表排除掉。对象where字句可以指定复制符合where语句的数据。

oracle sqldeveloper选择性复制备份数据库

7.确认一下源和目标数据库有没有选错,然后下 一步。直到复制完成(进度框最好不要点后台运行),中间若出是否继续提示框,一般直接选择是。

oracle sqldeveloper选择性复制备份数据库

8.以上是第一大步。

下边复制剩余的DDL.

重复第一步,将复制数据选项去掉

oracle sqldeveloper选择性复制备份数据库

9.选择除表以外的选项。数据库连接可能会通过触发器等的调用对链接目标数据库有影响,需小心,或复制下来后,处理下。

然后直接下一步直到最后复制完成。

oracle sqldeveloper选择性复制备份数据库

注意事项:

1.源和目标连接不要搞反了。

2.复制数据过程中不要点后台运行,再弹出的进度框里可以查看进度。有的表复制特别慢,或复制不下来,那就要重新复制  在6步的时候 要将其排除除掉或特殊处理下。 (第一步的查询表大小的sql语句,基本可用。但有些表依然复制太慢,具体原因没细究。)