数据迁移

基础知识:

导出导入是Oracle提供的实用工具,可以使我们完成不同oracle数据库之间转移数据对象。

使用导出工具具有四中模式:
表模式:导出某个用户下的指定表,授权用户可以导出其他用户下的表。

用户模式:导出某个指定的用户下所有的对象,授权用户可以导出其他用户下的所有对象。

数据库模式:导出除了sys用户以外的、数据库里所有的对象,只有已授权的用户才能在该模式下执行导出

可传输表空间模式:如果要导出某个指定表空间中的所有对象时,可以使用该模式。通过使用该模式,可以将一组表空间从一个数据库快速的转移到另一个数据库里。其速度比普通导出导入快很多,原因在于传输表空间时,只需要复制数据文件,然后将表空间的结构信息导入到目标数据库即可。

===============================================
使用工具基本命令:

]$ exp help=y
exp命令的帮助文档。
这里会有很多的参数,其中用户是必填的。
如:
表模式:
$ exp scott/tiger file=/oracle/my_bak.dmp tables=(employees,departments) log=/oracle/my_bak_exp.log
以上是一个表模式的导出命令。
我们也可以导出其他用户模式下的表,如将上面tables后面内容改为=(lyf.test)。前提条件是,导出使用的用户必须有该表的查看权限。
用户模式:
$ exp scott/tiger file=/oracle/my_bak.dmp owner=scott
以上命令会将scott用户模式下所有对象导出。
只要用户具有相应权限也可以导出其他用户的所有对象,如上例也可以改成:
$ exp system/redhat file=/oracle/my_bak.dmp owner=scott
数据库模式:
使用该模式,用户一定要有对应权限--exp_full_database。可以用下面这个命令来授予:
SQL>grant exp_full_database to scott;
然后就可以用下面的命令进行全库导出了
$ exp scott/tiger file=/oracle/full_bak.dmp full=y log=/oracle/all_log.log

================================================
参数文件:
导出也可以使用参数文件,参数文件通常用.par结尾,如在linux下编辑
$ cat 〉 dept_exp.dmp
userid=scott/tiger
file=/oracle/dept_exp.dmp
tables=(dept)
log=...
执行只需用下面这个命令:
$ exp parfile=dept_exp.par

================================================
导入:
导出的文件只能由导入工具读取
使用方式与exp类似:
可以使用imp help=y来查看所有关键字。
我们之前已经试过简单的表导入,我们现在来看一下用户导入。
$ imp lyf/oracle file=/oracle/my_bak.dmp fromuser=scott touser=lyf log=...
这个命令将scott用户模式下的所有对象导入到lyf用户下。
导入执行顺序为:创建表——>导入表数据——>创建相关索引——>导入触发器——>对导入的表启用完整性约束——>建立位图、函数及其他索引。
从这样的顺序看,如果在我们的用户模式下如果某个表已经存在,如果再次导入时,就会出错,以后的导入工作就停止了,这个时候可以使用ignore=y来忽略表已存在错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值