EXP导出时DML操作对其导出数据是否有影响

随着据库版本的升级及业务测试的增加,据库或者数据迁移也成了数据库管理者们经常的工作之一。那么对于要求严格的数据,针对大数据表,在你导出时如果有人做了操作,这个操作是否也会被导出呢?由于个人能力有限,想要深究逻辑备份的话,估计还需要一些时日,暂时只做了一个小实验测试,如大家有其他方法、更全面说明,欢迎拍砖。

二、操作过程

以下实验操作流程为每执行一次逻辑导出时都执行一次DML操作。操作语句如下(数据库版本10.2.0.5):

用户为firsoul,操作的表有age、big_table、test,下图为各表的初始数据


SQL> show user

USER is "FIRSOUL"

SQL> select * from tab;

SQL> select table_name,NUM_ROWS from user_tables;

TABLE_NAME                      NUM_ROWS

------------------------------ ----------

EMP                                    14

DEPT                                    4

TEST                                    1

AGE                                    1

BIG_TABLE                        3000000
 

第一次操作:


exp firsoul/firsoul tables=BIG_TABLE CONSISTENT=Y file=exp_table.dmp log=exp_table.log
 insert into age values(22,'mingli');

delete from big_table where id=7;

insert into test values(2,'shandong');

commit;
 

第二次操作:


exp firsoul/firsoul  file=exp_user.dmp log=exp_user.log consistent=y grants=y
 insert into age values(24,'mengmeng');

delete from big_table where id=14;

insert into test values(3,'china');

commit;
 

第三次操作:


exp firsoul/firsoul tables=BIG_TABLE file=exp_table2.dmp log=exp_table2.log
 insert into age values(24,'xiaochi');

delete from big_table where id=21;

insert into test values(4,'dezhou');

commit;
 

第四次操作:


exp firsoul/firsoul  file=exp_user2.dmp log=exp_user2.log grants=y
 insert into age values(25,'fengyin');

delete from big_table where id=28;

insert into test values(5,'jinan');

commit;
 

第五次操作:


expdp firsoul/firsoul directory=dir_dmp dumpfile=expdp_table.dmp tables=BIG_TABLE logfile=expdp_table.log
 insert into age values(30,'shubin');

delete from big_table where id=35;

insert into test values(6,'shizhong');

commit;
 

第六次操作:


expdp firsoul/firsoul directory=dir_dmp dumpfile=expdp_user.dmp SCHEMAS=firsoul logfile=expdp_user.log
 insert into age values(32,'liupan');

delete from big_table where id=42;

insert into test values(7,'tianqiao');

commit;
 

得出结果如下所示(“-”为少几行,“+”为多几行): 

执行DML次数

 

age

 

big_table

 

test

 

备注

 

1

 

 

 

0

 

 

 

导出表(CONSISTENT=y)

 

2

 

+2

 

-2

 

+2

 

导出用户(CONSISTENT=y

 

3

 

 

 

-2

 

 

 

导出表(CONSISTENT=n)

 

4

 

+3

 

-3

 

+4

 

导出用户(CONSISTENT=n

 

5

 

 

 

-5

 

 

 

expdp 导出表

 

6

 

+6

 

-6

 

+6

 

expdp 导出用户

 

通过以上数据,我们可以看出

1、exp导出,参数CONSISTENT=y,单独导出表big_table,数据无变化,导出用户时,数据有变化。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7ba1a729dcf487dbba4aa87c11328352.html