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

Oracle数据迁移_第1张图片

Oracle数据迁移_第2张图片

2、导出用户

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

Oracle数据迁移_第3张图片

Oracle数据迁移_第4张图片

(1)单用户hr导出

Oracle数据迁移_第5张图片

Oracle数据迁移_第6张图片

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

Oracle数据迁移_第7张图片

Oracle数据迁移_第8张图片

Oracle数据迁移_第9张图片

Oracle数据迁移_第10张图片

(2)多用户导出

Oracle数据迁移_第11张图片

Oracle数据迁移_第12张图片

多用户导入

Oracle数据迁移_第13张图片

Oracle数据迁移_第14张图片

3、导出表

(1)单表导出

Oracle数据迁移_第15张图片

Oracle数据迁移_第16张图片

导入

Oracle数据迁移_第17张图片

Oracle数据迁移_第18张图片

(2)多表导出,导入

Oracle数据迁移_第19张图片

Oracle数据迁移_第20张图片

Oracle数据迁移_第21张图片

Oracle数据迁移_第22张图片

使用数据泵导入导出数据

通过调用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、普通导入导出

Oracle数据迁移_第23张图片

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%'"

)

Oracle数据迁移_第24张图片

Oracle数据迁移_第25张图片

Oracle数据迁移_第26张图片

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

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

Oracle数据迁移_第27张图片

Oracle数据迁移_第28张图片

导入用户

Oracle数据迁移_第29张图片

Oracle数据迁移_第30张图片

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数据迁移_第31张图片

Oracle数据迁移_第32张图片

Oracle数据迁移_第33张图片

Oracle数据迁移_第34张图片

Oracle数据迁移_第35张图片

Oracle数据迁移_第36张图片

导入

Oracle数据迁移_第37张图片

Oracle数据迁移_第38张图片

三、外部表

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

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

Oracle数据迁移_第39张图片

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')

Oracle数据迁移_第40张图片

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')

);

Oracle数据迁移_第41张图片

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

Oracle数据迁移_第42张图片

Oracle数据迁移_第43张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

你可能感兴趣的:(数据迁移)