impdp做数据导入时约束和触发器引起数据导入后应用故障

使用数据泵导入数据,导入过程中没有任何错误,导入的记录数完全正常,但应用就是无法使用,取不到数据,找了很久都没找到原因,最后,发现是由于序列的问题引起的,发现导出和导入的值不一样,通过与开发沟通才明白,因为在导入数据时要对一些字段定义做了修改,所以先导入空表,然后再导入数据的,在向表插入数据时会插入序列,而序列是由触发器来产生的,从而导致两边的序列值不一致,引起记录的值有差异,找到原因就好办了,在导入数据前关闭所有的约束和触发器,导入数据成功后,再打开约束和触发器,连接应用测试,一切ok.

在目标库上建立数据泵目录

create directory dump_dir as '/oracle/ppp';
grant read,write on directory dump_dir to user;

在源库上导出数据:
expdp system/oracle directory=dump_dir dumpfile=user.dmp schemas=user logfile=user.log

导出表结构:
impdp system/oracle directory=dump_dir dumpfile=user.dmp sqlfile=user.sql logfile=userimp.log

在目标库上建立表
SQL>@/oracle/ppp/user.sql

导入数据前关闭约束和触发器:
SQL>set heading off
SQL>select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints;
SQL>alter table table_name disable constraint constraint_name;

SQL>select 'alter trigger '||trigger_name||' disable;' from user_triggers;
SQL>alter trigger trigger_name disable;

导入数据:
export ORACLE_SID=SID
$impdp system/oracle directory=dump_dir dumpfile=javaoanew.dmp table_exists_action=append logfile=javaoaimpnew.log

导入数据后打开约束和触发器:
SQL>set heading off
SQL>select 'alter table '||table_name||' enable novalidate constraint '||constraint_name||';' from user_constraints;
SQL>alter table table_name enable novalidate constraint constraint_name;

SQL>select 'alter trigger '||trigger_name||' enable;' from user_triggers;
SQL>alter trigger trigger_name enable;

连接应用测试,一切OK.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29099879/viewspace-776421/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29099879/viewspace-776421/

### 回答1: Oracle数据库中的"dump"文件指的是一种二进制格式的文件,其中包含了特定对象(例如表、索引、存储过程等)的结构数据信息。这些文件可以被用于备份、还原、迁移恢复数据库中的对象。 Oracle数据库中有多种类型的dump文件,其中最常见的是数据泵(Data Pump)传统的导出/导入(Export/Import)。 数据泵是Oracle 10g版本及以后版本中引入的一种新的工具,用于快速高效地导出导入数据数据泵可以以二进制格式导出整个数据库、指定的表、视图、存储过程等对象。数据泵产生的dump文件可以在同一台服务器上或不同服务器上进行导入操作。 传统的导出/导入工具可以在任何版本的Oracle中使用。导出/导入工具可以导出指定的表、视图、存储过程等对象。它可以导出数据表结构,并可选地导出约束、索引等其他相信息。与数据泵不同的是,导出/导入工具使用文本格式进行导出,因此通常会比数据泵慢。 ### 回答2: Oracle dump文件是一种用于数据备份恢复的文件格式。当需要备份Oracle数据库,可以使用Oracle的导出工具,如expdp或exp命令,将数据库中的数据、表结构、索引、触发器等对象以及相的元数据导出为一个或多个dump文件。这些dump文件可以存储在磁盘或其他存储介质上。 Oracle dump文件通常以二进制格式存储,包含了数据库中的逻辑物理信息。通过这些文件,可以在需要数据恢复到原始数据库或另一个数据库实例中。 在使用dump文件进行数据恢复,可以使用Oracle导入工具,如impdp或imp命令。这些工具会读取dump文件,并将其中的数据对象重新导入数据库中。 除了备份恢复,dump文件还可以用于数据迁移、克隆数据库数据库版本升级数据库对象复制等操作。通过导出导入dump文件,可以将数据库数据对象从一个环境迁移到另一个环境,或者在不同的数据库实例之间复制共享数据库对象。 总之,Oracle dump文件是用于备份恢复数据库的文件格式,它能够以二进制形式存储数据库的逻辑物理信息,并通过导入导出工具进行数据对象的移动复制。 ### 回答3: Oracle dump文件是一种数据库备份文件,它包含了用于还原或恢复数据库数据结构信息。在Oracle数据库中,dump文件通过使用工具如expdp或exp命令来生成,可以将数据库的表、视图、索引、存储过程、触发器数据库对象以及其中的数据导出到一个二进制文件中。 dump文件可以用于多个用途,首数据备份恢复。通过定期生成dump文件,可以保留数据库在某个间点的完整镜像,以防止数据丢失或数据库因意外故障而崩溃。当数据库需要恢复,可以使用impdp或imp命令将dump文件导入数据库中,从而将数据结构重新恢复到原来的状态。 除了备份恢复外,dump文件还可以用于数据库迁移。当需要将数据库从一个环境迁移到另一个环境,可以生成一个dump文件,并将其导入到目标环境的数据库中,从而实现数据库的迁移复制。 此外,dump文件还可以用于数据迁移导入导出。当需要将数据库的某些特定数据移动到其他数据库,可以选择性地导出这些数据到dump文件,然后在目标数据库中进行导入。 总之,Oracle dump文件是一种包含了数据库结构数据的备份文件,它可以用于数据备份、数据库恢复、数据库迁移以及数据导入导出等多个用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值