解除约束的oracle的数据库备份方法
来源:互联网 发布:电信是什么网络模式 编辑:程序博客网 时间:2024/06/06 21:59
oracle的数据库备份功能,exp和imp看起来很简单,实际上还是很麻烦的。
因为表与表之间有复制的约束关系,要导入的话,肯定先后顺序的,但是imp并不能做到先后顺序。所以你必须
步骤1:exp表结构,实现如下:
exp sys/sys file=e:/new.dmp ignore=y rows=n
注意rows=n,这样只导出表结构,而不导出任何数据.
步骤2:imp将表结构导入
步骤3:然后将表结构的约束条件全部disable,还有,把trigger也得disable掉!具体如下:
select 'alter table ' || table_name || ' disable constraint ' || constraint_name || ';' from user_constraints where constraint_type='R';
constraint_type为R代表外键约束,为P代表主键约束
结果要点击全搜索按钮,再点击第一栏的列标题全选中。复制
new一个command windows,粘贴命令,不行的话,回车一下,在粘贴。然后:
select 'truncate table ' || table_name||';' from user_all_tables ,再重复上面步骤。
将表的数据全部删除干净。否则重新导入的时候很可能数据冲突。
步骤4:exp sys/sys file=e:/new.dmp ignore=y full=y (注意:如果普通用户不能full=y,只有sys用户权限能)
步骤5:imp sys/sys file=e:/new.dmp log=dible_db ignore=y
步骤6:再select 'alter table ' || table_name || ' enable constraint ' || constraint_name || ';' from user_constraints where constraint_type='R';重复上面的动作把约束又加回去。
本来这样就OK了,但是却发现很多表的约束加不回去!查找发现加不回去的表都是它的父表没有字表对应的数据!才进一步发现是步骤4和步骤5很多表导出的数据个数和导入的数据个数不一致!尤其是数据多的表。见鬼了。怎么办?
于是产生了步骤7:
步骤7:将问题表的父表一一找出。单独导入和导出
exp dcs_sys/aaa@newapp file=d:/new2.dmp tables=(ta_psrbasicinfo,fdc_flightinfo,ta_class)
imp dcs_sys/aaa@newapp file=d:/new2.dmp
ignore=y fromuser=dcs_sys touser=dcs_sys tables=(ta_psrbasicinfo,fdc_flightinfo,ta_class)
- 解除约束的oracle的数据库备份方法
- 解除数据库表某列上的约束
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- 360惊天后门曝光:“盗梦盒子”重现江湖
- window.location.href在IE6下面竟然不跳转
- 基于Ubuntu 10.10的最新版fcitx小企鹅输入法的安装配置
- 数据库项目小结
- wine在ubuntu下的使用TM2009beta1的技巧
- 解除约束的oracle的数据库备份方法
- linux乱码 函数传参
- DOS下的8.3命名规则(DOS 8.3 filename)
- Ural 1449 Credit Operations 2
- H3C认证体系
- Linux 汇编语言开发指南
- 转贴: HP总裁离职15天后感言(据传是孙振耀退休后所写,值得一读)
- Juniper考试认证介绍
- java实现图片传输与复制