实验环境:

操作系统:redhat5.7

数据库版本:oracle 10.2.0.5

本文档主要说明exp,及imp的使用,具体的参数使用方法.

 

一、 数据导出的顺序及导入前准备工作

按照数据库全库的导出,首先导出数据库表空间的定义语句,接着是参数文件,用户的创建语句,角色,回滚段定义,数据库link等,最后是表,视图,索引以及触发器等.

 

数据导入前,需确认目标端所需表空间以及用户是否建立,空间是否充裕.

若使用连接串导入,需确认连接串内容,勿导入至错误的数据库中.

二、 数据库导出语句及说明

导出时需指定nls_lang,否则数据库导出时会出现exp-00091的错误,导致导出数据不完整,需确定数据库的nls_lang,可以查询源数据库nls_database_parameters视图.

 

2.1 全库导出导入

在执行全库导出时,会使用full=y这个参数

具体语句为:

exp xuybak/oracle file=/oracle/backup/orcl.dmp log=export.log full=y

 

导出数据时,需确认连接数据库的用户是否具有导出数据的权限

File 该参数指定导出文件的路径以及导出文件的名字

Log 建议每次导出加上该参数,可记录导出数据的过程,在完成导出后可检查是否有漏掉的数据

如果需要导出多个dump文件,则需估算好导出文件的大小,指定filesize,还需将所有的导出文件的路径指定好,此功能在expdp中得到改善

例如:

exp xuybak/oracle filesize=10m file=/oracle/backup/orcl1.dmp,/oracle/backup/orcl2.dmp log=export.log full=y

 

exp远程导出的功能是最为方便,可在异机上导出数据,前提需配置完$ORACLE_HOME/network/admin/tnsnames.ora这个文件

例如:

orcl =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.56.122)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

导出语句 @后跟上tnsnames.ora中配置的连接串名

exp xuybak/oracle@orcl file=/oracle/backup/orcl.dmp log=export.log full=y

 

全库导入

在执行导入时,需确认目标端的表空间及用户是否建立,由于部分表已经存在,导入时可能会因此而出现大量报错,通常加上ignore=y参数即可

例如:

imp xuybak/oracle file=/oracle/backup/xuy.dmp log=imp.log full=y ignore=y

 

2.2 按照用户导出导入

Exp还可以按照用户作为单位导出数据,在执行逻辑的数据迁移时,我们比较推荐使用按业务用户导出,这样节省时间且日志的内容较为清晰.需使用owner参数,owner后跟需导出的用户名

例如:

exp xuybak/oracle file=/oracle/backup/xuy.dmp log=exp.log owner=xytest

如需导出多个用户的数据,可在owner后加入其他用户,按逗号隔开

例如:

exp xuybak/oracle file=/oracle/backup/xuy.dmp levitra free offer log=exp.log owner=xytest,xytest2

同样可按远程的方式导出,方法与全库导出中说明的一样,在连接数据库用户及密码后跟上@连接串

但是接owner参数后,不得加如table参数,否则导出会报错,如需按表导出,下文会做说明。

按用户导入

在执行按用户导入时,会需要用到fromusertouser这两个参数,意思就是从什么用户导入至什么用户,该参数可以实现将一个用户下的表导入至同用户或不同用户下

例如:

导入至同用户

imp xuybak/oracle file=/oracle/backup/xuy.dmp fromuser=xytest touser=xytest

导入至不同用户

imp xuybak/oracle file=/oracle/backup/xuy.dmp fromuser=xytest touser=xytest2

 

2.3按表空间导出导入

Exp可实现按表空间导出数据,需使用tablespaces参数,指定导出的表空间

例如:

exp xuybak/oracle  file=/oracle/backup/orcl1.dmp log=export.log tablespaces=xy

 

按表空间导入

imp中没有remap_tablespace这个参数,但是在impdp中加入了该参数,如果按默认的方式导入表空间,则与源表空间相同,但如果要导入至不同表空间,那么又用到

fromusertouser这两个参数

例如:

导入至相同表空间

imp xuybak/oracle  file=/oracle/backup/orcl1.dmp log=imp.log tablespaces=xy

导入至不同表空间,需修改xytest2的默认表空间

imp xuybak/oracle  file=/oracle/backup/orcl1.dmp log=imp.log tablespaces=xy fromuser=xytest touser=xytest2

 

2.4按表导出

Exp还可以按照单表或多表导出,该功能需指定tables这个参数,此功能就可以实现导出某用户下的部分表

例如:

exp xuybak/oracle file=/oracle/backup/xuy.dmp log=exp.log   tables=xytest.test1

tables后不以用户.表名这种形式,则默认寻找连接数据库用户下,同表名的表

 

多表导出,可在tables参数后加入其他表,以用户.表名的格式,以逗号隔开

例如:

Exp xuybak/oracle file=/oracle/backup/xuy.dmp log=exp.log   tables=xytest.test1,xytest.test2

 

按表导入:

按表导入的方法与导出相似,指定用户,指定表即可

例如:

imp xuybak/oracle file=/oracle/backup/xuy.dmp log=imp.log   tables=xytest.test1

 

2.5按条件语句导出

Exp还可以实现只导出符合条件的部分表数据,实现该功能需使用query参数,该参数不得在全库,按用户中使用,query指定的条件必须对导出的所有表都适用,且query不能与direct路径同时使用

 

例如:

exp xytest/oracle  file=/oracle/backup/test.dmp log=/oracle/backup/exp.log tables=test3 query=\"' where id < 15 '\"

query还可以使用sql中的函数,例如str

 

按条件导入

此方法与导入表的方式相同

 

2.6仅导出表结构

有时候,开发人员进行测试的时候,只需要表结构,exp也可以只导出表结构,需使用rows参数

在全库导出,按用户导出,或单表导出时,加上rows=N 即可

例如:

exp xuybak/oracle  file=/oracle/backup/orcl1.dmp log=export.log tablespaces=xy rows=N

 

导入表结构的方法与一般的全库或用户导入相同,指定连接用户,备份文件即可

 

2.7其他常用参数说明

 

Buffer:在导出时指定缓存区的大小,以字节为单位

Direct 直接路径读,使用此参数后,将不通过buffer cache读取数据,导出速度大大增快

Version:该参数经常使用在高版本的数据库数据导入至低版本的数据库,如11g的数据库需迁移至10g的数据库,则在导出时,导出语句需加入version=10.2.0.1.0

Rows:该参数默认值为y,如只需导出表结构,可加上该参数,指定rows=N

GRANTS:指定是否导出(导入)对象的授权信息,默认参数为Y,即默认导出

INDEXES:指定是否导出(导入)表的索引,默认为Y

CONSTRAINTS:指定是否导出(导入)表的约束,默认为Y

TRIGGERS:指定是否导出(导入)与表相关的触发器,默认为Y

FLASHBACK_SCN:可指定scn号进行导出(导入)




Related posts

coded by nessus
分享:  DeliciousGReader鲜果豆瓣CSDN网摘
Trackback

no comment untill now

Add your comment now

无觅相关文章插件