Oracle数据迁移

本文主要提及使用exp,imp以及Oracle数据泵等工具如何进行数据迁移:

一、数据迁移工具

1、数据迁移工具

(1)数据泵

(2)外部表:external table

(3)数据加载工具:sqlloader可以将非ORACLE数据库的数据加载到ORACLE数据库中

(4)数据库备份工具:rman,recover manager恢复管理器

2、逻辑导入导出工具

(1)exp:逻辑导出工具

(2)imp:逻辑导入工具

3、数据泵

(1)expdp:数据泵逻辑导出工具export data pump

(2)impdp:数据泵逻辑导入工具import data pump

4、数据库导出模式

(1)全库导出

(2)导出用户

(3)导出表空间

(4)导出表(数据泵)

二、数据迁移实例

使用exp,imp导入导出数据

1、全库导出

mkdir -p /home/oracle/backup/exp创建导出目录

exp system/oracle file=all.dmp log=all_exp.log full=y

2、导出用户

select username from dba_users;先查看当前数据库拥有哪些用户

(1)单用户hr导出

单用户hr导入,在目标库中进行,导入库中需要提前创建用户hr,并赋予相应权限

(2)多用户导出

多用户导入

3、导出表

(1)单表导出

导入

(2)多表导出,导入

使用数据泵导入导出数据

通过调用dbms_datapump系统包来完成导入导出操作

1、需要数据库创建目录对象,要把目录对象的读写权限授予相应的用户。

(1)在操作系统中创建目录

mkdir -p /home/oracle/backup/dir

(2)在数据库中创建目录对象,指向上一步创建的目录

create directory dbpump_dir as ‘/home/oracle/backup/dir’;

(3)给相应用户读写权限,用到什么用户就赋予它读写权限

grant read,write on directory dbpump_dir to system;

(4)开始导入导出

2、普通导入导出

3、通过参数文件导入导出数据

创建pfile.txt

PARALLEL=1

CLUSTER=NO

COMPRESSION=ALL

DUMPFILE=EXPORT_exp.DMP  

DIRECTORY=DBPUMP_DIR   

LOGFILE=EXPORT.LOG

TABLES=

(

 HR.EMPLOYEES,HR.DEPARTMENTS

 )

QUERY=

(

 "EMPLOYEES:WHERE DEPARTMENT_ID > 10",

 "DEPARTMENTS:WHERE DEPARTMENT_NAME LIKE '%IT%'"

)

导入同样需要在目标库建立数据库目录对象

create directory dbpump_dir as ‘/home/oracle/backup/dir1’;

4、通过参数文件导入导出用户

pfile_user.txt

PARALLEL=1

CLUSTER=NO

COMPRESSION=ALL

DUMPFILE=EXPORT_USER.DMP  

DIRECTORY=DBPUMP_DIR   

LOGFILE=EXPORT_USER.LOG

SCHEMAS=U2,U1

导入用户

5、通过参数文件导入导出表空间

pfile_tbs.txt

PARALLEL=1

CLUSTER=NO

COMPRESSION=ALL

DUMPFILE=EXPORT_TBS.DMP  

DIRECTORY=DBPUMP_DIR   

LOGFILE=EXPORT_TBS.LOG

TABLESPACES=TBS1,TBS2,TBS3

(1)要把目标库的表空间创建好

(2)把表空间所属对象创建好

(3)赋予相应对象权限

导入

三、外部表

ORACLE外部表用来存取数据库以外的文本文件(test file)或ORACLE专属格式文件。因此,建立外部表时不会产生段,区,块等数据结构,只有与表相关的定义放在数据字典中,外部表,就是存储在数据库外的表,当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容修改。

1、创建目录对象并授权,从9i开始,ORACLE数据库若要存取文件系统,就必须使用目录对象,以相对路径方式存取路径,强化数据库的安全性。

2、从数据库导出数据到外部表

create table ext_emp_query

(first_name,last_name,department_name)

organization external

(type oracle_datapump

default directory tab_dir

location('emp1.exp','emp2.exp','emp3.exp')

)

parallel

as

select e.first_name,e.last_name,d.department_name

from employees e,departments d

where e.department_id=d.department_id and

d.department_name in ('Marketing','Purchaing')

3、外部插入数据

create table hr.ext_tab2

(id number,name varchar2(20))

organization external

(type oracle_loader

default directory tab_dir

location

(tab_dir:'ext_tab1',

tab_dir:'ext_tab2')

);

创建完成后需要自己到指定目录创建文件,如果文件提前存在,那么将无法查询到文件内容

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

  • 5
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值